命令注入之Shellshock漏洞复现(CVE-2014-6271)

一、漏洞原理

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的情况下会受到影响