如何测试我的服务器是否容易受到 ShellShock 漏洞的影响?

Gio*_*oni 80 security bash cgi

如何确保我的 Bash 安装在更新后不再受到ShellShock错误的影响?

Beo*_*e42 83

检查 CVE-2014-6271 漏洞

env x='() { :;}; echo vulnerable' bash -c "echo this is a test"
Run Code Online (Sandbox Code Playgroud)

它不应该回应脆弱这个词。


检查 CVE-2014-7169 漏洞
(警告:如果你的失败,它将创建或覆盖一个名为/tmp/echo你可以在之后删除的文件,并且需要在再次测试之前删除)

cd /tmp; env X='() { (a)=>\' bash -c "echo date"; cat echo
Run Code Online (Sandbox Code Playgroud)

它应该说日期这个词,然后用类似的消息抱怨cat: echo: No such file or directory。相反,如果它告诉您当前日期时间是什么,那么您的系统很容易受到攻击。


检查 CVE-2014-7186

bash -c 'true <<EOF <<EOF <<EOF <<EOF <<EOF <<EOF <<EOF <<EOF <<EOF <<EOF <<EOF <<EOF <<EOF <<EOF' || echo "CVE-2014-7186 vulnerable, redir_stack"
Run Code Online (Sandbox Code Playgroud)

它不应该回显文本CVE-2014-7186 vulnerable, redir_stack


检查 CVE-2014-7187

(for x in {1..200} ; do echo "for x$x in ; do :"; done; for x in {1..200} ; do echo done ; done) | bash || echo "CVE-2014-7187 vulnerable, word_lineno"
Run Code Online (Sandbox Code Playgroud)

它不应该回显文本CVE-2014-7187 vulnerable, word_lineno


检查 CVE-2014-6277。我对这个不是 100% 确定,因为它似乎依赖于我不再可以访问的部分修补系统。

env HTTP_COOKIE="() { x() { _; }; x() { _; } <<`perl -e '{print "A"x1000}'`; }" bash -c "echo testing CVE-2014-6277"
Run Code Online (Sandbox Code Playgroud)

这个的通过结果是它只回显文本testing CVE-2014-6277。如果它运行 perl 或者它抱怨没有安装 perl,那肯定是失败的。我不确定任何其他故障特征,因为我不再有任何未打补丁的系统。


检查 CVE-2014-6278。同样,我不能 100% 确定是否进行此测试,因为我不再有任何未打补丁的系统。

env HTTP_COOKIE='() { _; } >_[$($())] { echo hi mom; id; }' bash -c "echo testing CVE-2014-6278"
Run Code Online (Sandbox Code Playgroud)

这个测试的一个通过是它应该只回显文本testing CVE-2014-6278。如果你的回声hi mom在任何地方都肯定是失败的。


Gio*_*oni 32

导出一个特别制作的环境变量,该变量将由 Bash 的易受攻击版本自动评估:

$ export testbug='() { :;}; echo VULNERABLE'
Run Code Online (Sandbox Code Playgroud)

现在执行一个简单的 echo 以查看 Bash 是否会评估 $testbug 中的代码,即使您自己没有使用该变量:

$ bash -c "echo Hello"
VULNERABLE
Hello
Run Code Online (Sandbox Code Playgroud)

如果它显示“VULNERABLE”字符串,答案是显而易见的。否则,您无需担心,您的 Bash 补丁版本就可以了。

请注意,主要的 Linux 发行版已经发布了多个补丁,有时它们并不能完全修复漏洞。继续检查安全公告和CVE 条目以了解此错误。

  • 除了 CVE-2014-6271 之外,来自 Red Hat 的不完整修复也有自己的,也值得关注:[CVE-2014-7169](https://access.redhat.com/security/cve/CVE- 2014-7169)。 (5认同)
  • 不会污染您的外壳环境并且即使“您正在使用备用登录外壳(可能不知道 `export`)也能正常工作的单行代码:`env testbug='() { :;}; echo VULNERABLE' bash -c "echo Hello"` (3认同)