更新后,如何确保Bash安装不再受到ShellShock错误的攻击?
更新后,如何确保Bash安装不再受到ShellShock错误的攻击?
Answers:
检查CVE-2014-6271漏洞
env x='() { :;}; echo vulnerable' bash -c "echo this is a test"
它不应回显弱势一词。
/tmp/echo
,您可以在以后删除该文件,并且需要在再次测试之前将其删除)
cd /tmp; env X='() { (a)=>\' bash -c "echo date"; cat echo
它应该说出日期一词,然后发出类似的信息来抱怨cat: echo: No such file or directory
。相反,如果它告诉您当前日期时间是什么,那么您的系统就很容易受到攻击。
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
。
(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
。
env HTTP_COOKIE="() { x() { _; }; x() { _; } <<`perl -e '{print "A"x1000}'`; }" bash -c "echo testing CVE-2014-6277"
通过的结果是它只回显文本testing CVE-2014-6277
。如果它运行perl或抱怨没有安装perl,那肯定是失败的。我不确定其他故障特征,因为我不再拥有未打补丁的系统。
env HTTP_COOKIE='() { _; } >_[$($())] { echo hi mom; id; }' bash -c "echo testing CVE-2014-6278"
此测试的通过之处在于它仅应回显文本testing CVE-2014-6278
。如果您的声音回荡到hi mom
任何地方,那肯定是失败的。
foo='() { echo not patched; }' bash -c foo
吗?在将函数导出放置在单独的命名空间中之前,我们不会停止从一个解析器错误运行到下一个解析器错误。
导出特制的环境变量,该变量将由易受攻击的Bash版本自动评估:
$ export testbug='() { :;}; echo VULNERABLE'
现在执行一个简单的回显以查看Bash是否会评估$ testbug中的代码,即使您自己没有使用过该变量也是如此:
$ bash -c "echo Hello"
VULNERABLE
Hello
如果显示“ VULNERABLE”字符串,答案很明显。否则,您不必担心,您的Bash修补版本就可以了。
请注意,主要的Linux发行版已经发布了多个补丁,有时它们不能完全修复该漏洞。继续检查安全公告和CVE条目是否存在此错误。
export
)”,它也不会污染您的外壳环境并且碰巧可以运行的env testbug='() { :;}; echo VULNERABLE' bash -c "echo Hello"
ShellShock实际上是bash多个漏洞的结合,并且此刻还有恶意软件利用了此漏洞,因此ShellShock可能是一个尚待解决的问题,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
我编写了一个名为ShellShocker的CLI实用程序,以测试您的Web服务器是否存在CGI脚本中的漏洞。要测试您的网站,请运行:
python shellshocker.py <your-server-address>/<cgi-script-path>
即
python shellshocker.py http://example.com/cgi-bin/possibly-vulnerable-script.cgi
编辑:此实用程序已被删除,抱歉:'(