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

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

如何确保我的 Bash 安装不易受到炮弹冲击更新后还有 Bug 吗?

答案1

检查 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

它应该说出单词 date,然后发出类似这样的消息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,则肯定失败了。

答案2

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

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

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

$ bash -c "echo Hello"
VULNERABLE
Hello

如果显示“VULNERABLE”字符串,答案显而易见。否则,您无需担心,修补后的 Bash 版本没有问题。

请注意,主流 Linux 发行版已发布多个补丁,但有时它们无法完全修复漏洞。请继续检查安全公告和CVE 条目对于这个错误。

答案3

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

答案4

您可以将您的 CGI URL 提交给此在线测试:

http://shellshock.iecra.org

相关内容