一、漏洞原理
1、Linux web server提供CGI接口,允许远程执行Bash语句
2、对于http头部,CGI脚本解析器会将其当做环境变量,调用bash的env相关函数设置到临时变量中
3、HTTP允许发送任意客户端自定义的HTTP头部
二、环境搭建
使用docker进行搭建,将对应的yaml文件上传到系统中,然后直接执行如下
命令docker-compose up -d
即可自动拉取环境进行搭建
三、漏洞复现
有两个页面,一个safe.cgi,一个victim.cgi,用的是4.3.0的bash存在问题
结果访问的时候报500错误,无法访问
查看日志发现,没有权限访问
那么应该是文件的权限有问题,修改一下文件的权限即可访问
然后在请求头中修改user-agent参数
() { foo; }; echo Content-Type: text/plain; echo; /usr/bin/id
可以看到,确实执行了命令,返回了对应的文件的值
然后使用safe.cgi进行尝试,可以看到并不会执行
因此该漏洞仅在Bash<=4.3的情况下会受到影响