漏洞范围:
GNU Bash 版本小于等于4.3
漏洞成因:
bash使用的环境变量是通过函数名称来调用的,导致漏洞出问题是以“(){”开头定义的环境变量在命令ENV中解析成函数后,Bash执行并未退出,而是继续解析并执行shell命令。核心的原因在于在输入的过滤中没有严格限制边界,没有做合法化的参数判断。
漏洞危害:
Apache充当媒介用CGI组件满足远程访问并调用Bash的env命令
绕过ssh的ForceCommand功能
.......
漏洞自查:
在命令行下执行命令,输出vulnerable则说明存在该漏洞:
env x='() { :;}; echo vulnerable' bash -c "echo this is a test"
在命令行下执行命令,GNU Bash 版本小于等于4.3也存在该漏洞:
bash --version
漏洞复现:
环境:本次环境使用 bee-box虚拟机(已集成该漏洞环境)进行测试。
1.查看源代码,可以发现调用了/cgi-bin/shellshock.sh
,这一步我们也可以通过目录扫描,主要是扫出/cgi-bin/
目录下的文件。
2.进入msfconsole,搜索shellshock
3.选择红色框中的选项,查看需要设置什么东东。
4.设置RHOST为192.168.224.131
,TARGETURI为/bWAPP/cgi-bin/shellshock.sh
。
5.exploit,即可获得一个meterpreter。
6.至此演示结束,获得meterpreter后可以进行其他操作,相关内容请自行查阅资料。