蓝客联盟被黑事件分析及漏洞查找与修复

当天下午,奠爱忽然来找:“咱博客全部被拿下啦!是不是你弟的博客出的问题?”

我打开发来的txt“炫页”一看,果然是中招了,于是登录服务器输入:
~/lnmp stop

停止服务器上的WEB服务以中断入侵者的操作,这个步骤前后操作时间约10秒
(本服务器因配置低而使用lnmp这个轻量级组合,所以使用home下的一个”lnmp”的脚本来停止服务)

接下来使用putty开启两个终端窗口

第一个终端按木马常见特征码查找WEBSHELL文件:
find /luc/www -name “*.php” |xargs grep “eval” |more
find /luc/www -name “*.php” |xargs grep “shell_exec” |more
find /luc/www -name “*.php” |xargs grep “passthru” |more
find /luc/www -name “*.php” |xargs grep “fsockopen” |more
find /luc/www -name “*.php” |xargs grep “base64_decode” |more
发现已经被插入10来个一句话木马了,可见入侵者已经进去了至少30分钟以上

第二个终端删除查找到的WEBSHELL后门:
rm -rf /luc/www/www.chnhacker.com/shell.php
这样按查找的结果逐个文件分析并删除,清理WEBSHELL后门这个步骤前后操作时间约10分钟

附常规检查方法:
find /luc/www -name “*.php” -mtime -7
(查找7天内生成的php文件,但不能以此为准,因为日期是可以修改的)

服务器环境描述:
这是在咱同胞在老美开的IDC公司购买的超低配置级VPS,详细配置请点击:DiaHosting
硬件环境:硬盘10G、内存180MB
软件环境:操作系统是完全免费的Centos 5、WEB服务是完全免费的Nginx、数据库服务是完全免费的MySQL、Web脚本语言也是完全免费的PHP…
因为这服务器除了用来给蓝客联盟成员放几个博客写写文章以外就没其它用途,再加上蓝客10年以来都是自主性的技术研究并没有搞任何商业性的盈利项目,因此蓝客们穷啊,180M内存就将就着用吧 :)

从以上的配置一看就知道服务器存在一个非常明显的弱点:内存和硬盘实在是太小了!
因此在搭建WEB服务的时候是绝对不能使用Apache,唯一的最佳选择就是轻而快的Nginx!
由于硬盘也小所以本人索性把Nginx日志记录功能关闭了
然而,关闭了日志就意味着无法对入侵者的操作追根溯源,因此只能单凭经验与猜测去模拟入侵者操作过程了。

本人通常给入侵者概括性分3大类型:

1.高级专家型,获取初级权限(如webshell)后会想尽一切可能的办法来进一步提升他的权限(如系统ROOT权限、数据库权限),然后在服务器获取了他本人需要的信息以后会留下隐蔽性极高的系统级后门,接着帮服务器修补发现的漏洞、清除日志以避免其他入侵者进来骚扰
2.中级职业型,获取初级权限(如webshell)后会进一步试图提升他的权限(如系统ROOT权限、数据库权限),若能提权则留下后门、否则在获取他需要的信息后直接走人
3.爱炫初级型,获取初级权限(如webshell)后第一操作就是挂“炫页”留下大名(以炫耀为目的的页面我们蓝客称之为炫页),然后拿给亲朋好友炫耀以达到虚荣心上的满足或者以此证明自己的能力
然而以上3大类型当中亦有个别的可附加上“疯狂与暴力型”的称号,主要表现为:打包数据公布给网友下载、破坏删除服务器上的数据……

入侵分析:

一、初步分析,检查系统用户与用户组是否正常,并检查history列表里操作记录是否有异常
cat /etc/passwd
cat /etc/group
history
经仔细查看,并无任何异常,很明显入侵并没有拿下系统权限,因为本人阉割了PHP的危险功能、取消了系统敏感文件的普通用户读取权限、限制MySQL用户的基本操作权限

附加禁用PHP函数、敏感系统文件权限、限制MySQL用户的基本操作权限的设置方法:
system,passthru,shell_exec,exec,proc_open,popen
(禁用的PHP函数列表)
chmod o-r /
chmod o-r /*
chmod o-r /usr/*
chmod o-r /var/*
chmod o-r /etc/passwd
chmod o-r /etc/group
chmod o-r /etc/issue.net
chmod o-r /etc/hosts
chmod o-r /etc/fstab
chmod o-r /proc/version
chmod go-rx /etc/rc.d/init.d
chmod o-r /etc/rc.d/init.d/*
chmod go-rx /usr/bin/gcc
chmod go-rx /usr/bin/g++
chmod go-rx /usr/include
(敏感系统文件权限设置)

(限制MySQL用户的基本操作权限)

二、入侵途径猜测,因为没有启用WEB服务日志记录功能
首当其冲的就是WordPress这套博客程序,因为服务器上就两套程序,占数量最多的一套就是WP,另一套是我自己随便编写的功能简单的蓝客文化站程序。
本人第一时间猜测的就是某博客管理员存在弱口令,利用社会工程学的特征把其中一个密码猜出来以后就可以通过“上传主题”或者“修改主题模板代码”直接得到WEBSHELL权限。
在得到WEBSHELL权限后,通过路径猜测就可以跳转到各博客的目录里去更改文件、插入WEBSHELL,因为原生的Nginx是以效率而著名,使用的是单用户运行模式,因此不带用户隔离功能(网上亦有通过修改源码来实现用户隔离的方法,有兴趣的朋友可以谷歌找一下)。
于是到蓝客内务群里把各博主都叫来修改密码,之后就尝试把WEB服务重新开启,前后从入侵被挂炫页到恢复WEB服务约耗时30分钟。
因为本人工作原因是时间严重缺乏,开启WEB服务后就继续上班去了。

然而,这尝试猜测并不正确,事隔第二天蓝客的博主们又被插入了一句话SHELL,于是本人对各博客戏说:“此厮可真谓死缠烂打啊,你们是不是得罪什么人了,我平时不是教育你们说只管做好自己练好自己的技术别跟外面的人一般见识嘛?”
既然问题还没解决,那只有再猜测了:
在思考的时候忽然想起昨天诗人弟弟对我说过:“飞哥,那套loper1.2有漏洞,升级一下1.3吧!”,我当时没在意,因为当时已经初步处理完并且已经在工作中了。
因为去年我们内部盛传着一个非常酷的主题,那就是loper1.2,虽然现在已经很多人没用这主题了,但文件却还有保留在服务器上。
于是我再从loper1.2里着手查,问题果然在它身上。
以下是“wp-content/themes/loper1.2/timthumb.php”这个缩略图插件脚本的其中一段代码:

由于过滤不严导致的漏洞,修复方法如下:

最后就把各人的loper1.2主题都修复了一下,至此问题解决。

91ri.org:本文旨在为遇到类似情况的人提供一个参考。另外,安全是相对性的,还望国人在技术上多跟紧时代的步伐,切莫固步自封满足现状!

link:http://www.chnlonger.com/cn/?p=524

本文由网络安全攻防研究室(www.91ri.org)信息安全小组收集整理,转载请注明出处,谢谢!