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