网站木马后门排查过程一例
网站大概情况,Linode东京高配的VPS,CentOS系统,LNMP环境,跑的Discuz X 2.5,访问量不小。
开始先用下面这样的命令查找
find . -name "*.php" -print0 | xargs -0 grep -rn 'shell_exec'
webshell常用函数都查了一遍,并没有发现可疑文件。
但是朋友告之,网站最近二天都被改动过,不定时出现弹窗,然后过不久又消失。
以此判断,作恶的人一定会访问到webshell,通过webshell修改网站上的文件 。
万幸,服务器上保留了大概三天的Nginx日志。
把日志文件整理了下,执行下面的命令
cat *.log|grep "POST"|grep 200 | awk '{print $7}' |grep -o -E '.*.php' | sort -n | uniq -c
结果如下图:
这个命令的作用是把日志里被POST方式请求的文件全部列出来。
从webshell流行起来开始,几乎所有的webshell都以POST方式来提交操作请求,目的就是把参数在日志里隐藏掉,因为通常日志并不会记录POST参数。
但是物极必反,这一思路形成主流后反而给检查提供了方便。
上面列出的这些文件几乎都检查了一遍,多余的就不多说了,最后问题确定在/source/archiver/common/footer.php这个文件上,文件内容如下图:
这个include一下就暴露了。
先到日志里查一下请求这个文件用的GET参数,如下图:
顺势找到/uc_server/data/tmp/upload753178.jpg这个文件 。
打开后,在最后发现:
到这里,一切豁然开朗,这是菜刀的后门。
后记:
从日志来看,三四天以来差不多每天会有一次动作,而每次用完菜刀,会到百度去搜索某一个关键词,而排第一的正是这个网站,然后再通过百度链接来访问网站。可以看出,作恶者的目的是想劫持网站的百度等搜索引擎流量 ,这样搞一通下来,正是在做测试。但是劫持代码有问题,因为每次出弹窗的时候,直接打开网站也会弹,也正是因为这样,每次出现弹窗不久就又被作恶者去除。最后的结论是,1)木马很久前就已经上传,但是日志已经不在,无法确定是怎么传上来的;2)现在搞弹窗的人并不是传马的人,很有可能是买来的。