如何testing我的服务器是否容易受到ShellShock错误?

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

检查CVE-2014-6271漏洞

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

它不应该回应脆弱的词。


检查CVE-2014-7169漏洞
(警告:如果你失败了,它会覆盖或者覆盖一个名为/tmp/echo的文件,你可以删除之后再删除,再次testing之前)

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

它应该说date这个字,然后抱怨像cat: echo: No such file or directory消息cat: echo: No such file or directory 。 如果它告诉你什么是当前的date时间,那么你的系统是脆弱的。


检查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%肯定,如果这个testing,因为我不再有任何未打补丁的系统。

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

此testing的一个通过是它应该只回应文本testing CVE-2014-6278 。 如果你的回音hi mom哪里肯定是一个失败。

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

 $ export testbug='() { :;}; echo VULNERABLE' 

现在执行一个简单的echo来查看Bash是否会在$ testbug中计算代码,即使你自己没有使用这个variables:

 $ bash -c "echo Hello" VULNERABLE Hello 

如果显示“VULNERABLE”string,答案是显而易见的。 否则,你不用担心,你修补的版本的Bash是可以的。

请注意,主要的Linux发行版已经发布了多个补丁程序,有时它们并没有完全修复这个漏洞。 继续检查安全公告和CVE入口这个错误。

ShellShock实际上是bash的多个漏洞的联合, 此时也有利用此漏洞的malaware ,所以ShellShock可能是一个仍然是开放的问题, RedHat有关于这个问题的更新的线程 。

Redhatbuild议如下:

运行命令:

 $ 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漏洞检查确保系统不受文件创build问题的影响。 要testing您的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 

如果您的系统很脆弱,则会显示时间和date,并创build/ 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 

我编写了一个名为ShellShocker的CLI实用程序来testing您的networking服务器在CGI脚本上的漏洞。 要testing您的网站,您可以运行:

 python shellshocker.py <your-server-address>/<cgi-script-path> 

 python shellshocker.py http://example.com/cgi-bin/possibly-vulnerable-script.cgi 

编辑:这个工具被取下来,对不起:'(

您可以提交您的CGI URL到这个在线testing:

http://shellshock.iecra.org

键入env x ='(){:;}; 回声脆弱'bash -c“回声这是一个testing”,如果这返回易受攻击,这是一个testing,这意味着你的OSX / Linux机器受到影响。 补救措施是更新到最新版本的bash。