简介
ShellShock漏洞, 中文称为"破壳漏洞", 是Unix Shell中的安全漏洞
在一些网络服务器的部署中, 使用bash来处理某些请求, 允许攻击者通过低版本的bash执行任意Shell命令
此漏洞在调用BashShell之前使用payload创建环境变量, 这些环境变量包含Shell代码, 在Shell被调用后代码会被执行
漏洞原因
bash使用的环境变量是通过函数名称来调用的,以"(){
"开头通过环境变量来定义,而在处理这样的恶意的函数环境变量时,并没有以函数结尾 “}
” 为结束,而是执行其后的恶意shell命令
漏洞范围
- bash版本<=4.3
环境搭建
Vulhub官方文档: https://vulhub.org/#/environments/bash/CVE-2014-6271/
进入vulhub的shellshock目录: cd vulhub/bash/shellshock
, 执行如下命令
docker compose build
docker compose up -d
随后访问http://192.168.47.131:8080, 若出现如下图所示页面, 表示靶场搭建成功
漏洞利用
该漏洞靶场有两个页面, 分别是http://192.168.47.131:8080/victim.cgi和http://192.168.47.131:8080/safe.cgi, 其中victim.cgi是bash4.3版本生成的页面, 而safe.cgi是最新版bash生成的页面
访问http://192.168.47.131:8080/victim.cgi, 使用burpsuite抓包修改User-agent字段的值为() { :;};echo;/usr/bin/whoami
, 页面回显命令执行结果
payload还可以填写在其他请求头字段上, 不是只能填写在User-agent字段
而在最新版本Bash的safe.cgi页面中, 该漏洞已经无法利用了
安全防护
- 禁用CGI, 但可能会导致Web服务出现问题
- 完善权限管理机制,在设置环境变量的之前先做好检测,确保环境变量设置语句里面不会有一些越权的行为