记录一次网站被挂马经历

最近朋友的网站收录出现了问题,360搜索和搜狗搜索显示的都不是正确的标题和关键词,但是浏览网页显示的却是正常,这不禁引起了我的兴趣,到底是什么原因导致这样的呢?初步判断是程序根据User-agent判断是否是搜索引擎,然后显示了不同的结果。


首先说下朋友服务器环境,采用的是apache2.2web服务器,php框架采用的是thinkcmf,mysql数据库,最常规的lamp的架构。


于是在网站目录进行了 grep -rn "360Spider"进行查找,发现只有访问日志记录里面有信息,程序里面并没有相关信息。所以不禁又增加我的好奇心,人们都说好奇心是人类进步的源泉,我一直认为确实是这样的,虽然有时候它也会害死猫。


于是接下来我就对网站进行了全局断点排查(其实就是在关键位置die一下,看看到底是哪里导致网页的内容发生的变化)。一开始,我以为是模板系统被修改了,但是查看以后,并没有发现被改动的痕迹,接下来我就对引入的类文件进行排查,突然我的视野里面出现了一个神奇的文件,就是safe_360.php,一开始我以为这是朋友加的360安全认证文件。但是又一想不可能啊,他应该不会自己去修改php代码的。于是我打开文件一看,证实了我的猜测。果然,里面是一些加密函数封装的curl请求。


原来每次访问网站,都会讲发送的请求先发送给这个curl请求的网址,然后它会根据是否是搜索引擎来给你返回不同内容,如果是正常浏览, 他只是记录了访问页面,然后正常返回,但是如果是搜索引擎访问。他就会返回它自己的页面,也就是搜索引擎快照生成的页面。至此,问题解决了。


其实为了避免出现这类问题,或者快速解决这类问题。最好的解决办法就是对网站文件进行git提交,这样每次都有记录,如果发生了变化,会一眼就发现,并能及时清除。


关于git怎么使用和搭建,请看我的其它文章的介绍。


好了,这就是一次排除挂马的经历,梦回故里整理