我一直在尝试利用系统中的Shellshock漏洞并遇到一个有趣的问题。我一直在使用' wget'利用此漏洞。我使用的命令如下:
wget -U "() { test;};echo \"Content-type: text/plain\"; echo; echo; /bin/cat /etc/passwd" http://somesite.com/some-script.cgi
使用上述命令,漏洞会按预期显示。但是,当我尝试生成不是.cgi文件的文件时,漏洞不会显示,只会下载文件。
根据我的理解,wget应该将User-Agent字符串设置为应该运行代码/bin/cat /etc/passwd
的命令中传递的值,我无法看到这与文件的性质有什么关系被下载。
提前致谢。
答案 0 :(得分:2)
为了利用shellshock bug,需要执行以下步骤:
您必须让目标服务器将特定字符串注入environment variable,并
设置环境变量后,目标必须(直接或间接)启动bash shell的易受攻击版本。
这种情况可能发生在Web服务器通过Common Gateway Interface (CGI)执行外部程序,外部程序是bash shell脚本或以其他方式调用bash时。发生这种情况是因为CGI协议指定来自原始HTTP请求的标头在前缀为HTTP_
的环境变量中传递给外部程序(例如,用户代理标头为HTTP_USER_AGENT
)。由于攻击者可以控制这些头,因此他们也可以直接控制这些环境变量的值。
但是,当通过CGI调用外部程序时,Web服务器需要设置仅的环境变量。在提供静态文件时,服务器只需要从磁盘读取该文件并将其发送回客户端;它不需要设置任何环境变量或调用任何外部工具,如bash。