Giovanni Tirloni Asked: 2014-09-26 06:25:21 +0800 CST2014-09-26 06:25:21 +0800 CST 2014-09-26 06:25:21 +0800 CST 如何测试我的服务器是否容易受到 ShellShock 漏洞的影响? 772 如何确保我的 Bash 安装在更新后不再容易受到ShellShock错误的影响? security 6 个回答 Voted Best Answer BeowulfNode42 2014-09-26T23:49:04+08:002014-09-26T23:49:04+08:00 检查 CVE-2014-6271 漏洞 env x='() { :;}; echo vulnerable' bash -c "echo this is a test" 它不应该回显易受攻击这个词。 检查 CVE-2014-7169 漏洞 (警告:如果您的漏洞失败,它将创建或覆盖一个名为的文件/tmp/echo,您可以在之后删除该文件,并且需要在再次测试之前删除) cd /tmp; env X='() { (a)=>\' bash -c "echo date"; cat echo 它应该说日期这个词,然后用类似的消息抱怨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" 它不应该回显文本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" 它不应该回显文本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" 这个的通过结果是它只回显文本testing CVE-2014-6277。如果它运行 perl 或者它抱怨没有安装 perl,那肯定是失败的。我不确定任何其他故障特征,因为我不再有任何未打补丁的系统。 检查 CVE-2014-6278。同样,我不能 100% 确定这个测试是否因为我不再有任何未打补丁的系统。 env HTTP_COOKIE='() { _; } >_[$($())] { echo hi mom; id; }' bash -c "echo testing CVE-2014-6278" 此测试的通过是它应该只回显文本testing CVE-2014-6278。如果你的回声hi mom在任何地方都肯定是失败的。 Giovanni Tirloni 2014-09-26T06:25:21+08:002014-09-26T06:25:21+08:00 导出一个特制的环境变量,该变量将由易受攻击的 Bash 版本自动评估: $ export testbug='() { :;}; echo VULNERABLE' 现在执行一个简单的 echo 以查看 Bash 是否会评估 $testbug 中的代码,即使您自己没有使用该变量: $ bash -c "echo Hello" VULNERABLE Hello 如果它显示“VULNERABLE”字符串,答案是显而易见的。否则,您无需担心,您的 Bash 补丁版本是可以的。 请注意,主要的 Linux 发行版已经发布了多个补丁,有时它们并不能完全修复漏洞。继续检查此错误的安全公告和CVE 条目。 Liam Marshall 2014-09-27T09:24:01+08:002014-09-27T09:24:01+08:00 我编写了一个名为ShellShocker的 CLI 实用程序来测试您的网络服务器是否存在 CGI 脚本上的漏洞。要测试您的网站,您将运行: python shellshocker.py <your-server-address>/<cgi-script-path> IE python shellshocker.py http://example.com/cgi-bin/possibly-vulnerable-script.cgi 编辑:此实用程序已被删除,抱歉 :'( Eduard Florinescu 2014-09-30T06:43:48+08:002014-09-30T06:43:48+08:00 ShellShock 实际上是多个 bash 漏洞的结合,目前也有利用此漏洞的恶意软件,因此 ShellShock 可能是一个仍然存在的问题,RedHat 有一个关于此问题的更新线程。 Redhat 推荐以下内容: 运行命令: $ env 'x=() { :;}; echo vulnerable' 'BASH_FUNC_x()=() { :;}; echo vulnerable' bash -c "echo test" 如果输出是: $ env 'x=() { :;}; echo vulnerable' 'BASH_FUNC_x()=() { :;}; echo vulnerable' bash -c "echo test" vulnerable bash: BASH_FUNC_x(): line 0: syntax error near unexpected token `)' bash: BASH_FUNC_x(): line 0: `BASH_FUNC_x() () { :;}; echo vulnerable' bash: error importing function definition for `BASH_FUNC_x' test 你没有任何修复。 如果输出是: $ env 'x=() { :;}; echo vulnerable' 'BASH_FUNC_x()=() { :;}; echo vulnerable' bash -c "echo test" bash: warning: x: ignoring function definition attempt bash: error importing function definition for `x' bash: error importing function definition for `BASH_FUNC_x()' test 你有CVE-2014-6271修复 如果您的输出是: $ env 'x=() { :;}; echo vulnerable' 'BASH_FUNC_x()=() { :;}; echo vulnerable' bash -c "echo test" bash: warning: x: ignoring function definition attempt bash: error importing function definition for `BASH_FUNC_x' test 你并不脆弱。 ShellShock 检查的另一部分是 CVE-2014-7169 漏洞检查,确保系统免受文件创建问题的影响。要测试您的 Bash 版本是否容易受到 CVE-2014-7169 的攻击,请运行以下命令: $ cd /tmp; rm -f /tmp/echo; env 'x=() { (a)=>\' bash -c "echo date"; cat /tmp/echo bash: x: line 1: syntax error near unexpected token `=' bash: x: line 1: `' bash: error importing function definition for `x' Fri Sep 26 11:49:58 GMT 2014 如果您的系统易受攻击,则会显示时间和日期并创建 /tmp/echo。 如果您的系统没有漏洞,您将看到类似于以下内容的输出: $ cd /tmp; rm -f /tmp/echo; env 'x=() { (a)=>\' bash -c "echo date"; cat /tmp/echo date cat: /tmp/echo: No such file or directory user245089 2014-09-26T12:46:43+08:002014-09-26T12:46:43+08:00 您可以将您的 CGI URL 提交到此在线测试: http://shellshock.iecra.org Hen-Al 2014-09-28T03:33:57+08:002014-09-28T03:33:57+08:00 输入环境 x='() { :;}; echo 易受攻击' bash -c "echo this is a test" 如果返回易受攻击并且这是一个测试,则意味着您的 OSX/Linux 机器受到影响。补救措施是更新到最新版本的 bash。
检查 CVE-2014-6271 漏洞
它不应该回显易受攻击这个词。
检查 CVE-2014-7169 漏洞
(警告:如果您的漏洞失败,它将创建或覆盖一个名为的文件
/tmp/echo
,您可以在之后删除该文件,并且需要在再次测试之前删除)它应该说日期这个词,然后用类似的消息抱怨
cat: echo: No such file or directory
。相反,如果它告诉您当前的日期时间是什么,那么您的系统很容易受到攻击。检查 CVE-2014-7186
它不应该回显文本
CVE-2014-7186 vulnerable, redir_stack
。检查 CVE-2014-7187
它不应该回显文本
CVE-2014-7187 vulnerable, word_lineno
。检查 CVE-2014-6277。我不能 100% 确定这个,因为它似乎依赖于一个我不再可以访问的部分修补的系统。
这个的通过结果是它只回显文本
testing CVE-2014-6277
。如果它运行 perl 或者它抱怨没有安装 perl,那肯定是失败的。我不确定任何其他故障特征,因为我不再有任何未打补丁的系统。检查 CVE-2014-6278。同样,我不能 100% 确定这个测试是否因为我不再有任何未打补丁的系统。
此测试的通过是它应该只回显文本
testing CVE-2014-6278
。如果你的回声hi mom
在任何地方都肯定是失败的。导出一个特制的环境变量,该变量将由易受攻击的 Bash 版本自动评估:
现在执行一个简单的 echo 以查看 Bash 是否会评估 $testbug 中的代码,即使您自己没有使用该变量:
如果它显示“VULNERABLE”字符串,答案是显而易见的。否则,您无需担心,您的 Bash 补丁版本是可以的。
请注意,主要的 Linux 发行版已经发布了多个补丁,有时它们并不能完全修复漏洞。继续检查此错误的安全公告和CVE 条目。
我编写了一个名为ShellShocker的 CLI 实用程序来测试您的网络服务器是否存在 CGI 脚本上的漏洞。要测试您的网站,您将运行:
IE
编辑:此实用程序已被删除,抱歉 :'(
ShellShock 实际上是多个 bash 漏洞的结合,目前也有利用此漏洞的恶意软件,因此 ShellShock 可能是一个仍然存在的问题,RedHat 有一个关于此问题的更新线程。
Redhat 推荐以下内容:
运行命令:
如果输出是:
你没有任何修复。
如果输出是:
你有
CVE-2014-6271
修复如果您的输出是:
你并不脆弱。
ShellShock 检查的另一部分是 CVE-2014-7169 漏洞检查,确保系统免受文件创建问题的影响。要测试您的 Bash 版本是否容易受到 CVE-2014-7169 的攻击,请运行以下命令:
如果您的系统易受攻击,则会显示时间和日期并创建 /tmp/echo。
如果您的系统没有漏洞,您将看到类似于以下内容的输出:
您可以将您的 CGI URL 提交到此在线测试:
http://shellshock.iecra.org
输入环境 x='() { :;}; echo 易受攻击' bash -c "echo this is a test" 如果返回易受攻击并且这是一个测试,则意味着您的 OSX/Linux 机器受到影响。补救措施是更新到最新版本的 bash。