攻击者入侵网站后,往往会恶意劫持流量获取收益,从而实现流量的变现。有一些黑帽劫持手段防不胜防,正常的访问行为很难发现异常。今天,我想和大家分享常见的网站劫持技术和故障排除思路。
我们可以根据常见的劫持方式根据隐藏目的的不同做一个简单的分类:
1.将爬虫与用户正常访问分离,实现搜索引擎快照劫持。
2.将移动终端的访问与PC终端分离,实现移动终端的流量劫持。
3.根据用户的访问来源进行判断,实现特定来源的网站劫持。
4.如果得到管理员的真实IP地址,就可以劫持特定区域的流量。
5.根据访问路径/关键字/时间段的设置,基于上述实现特定路径/关键字/时间段的流量劫持。实现方式有很多种,客户端js劫持、服务器代码劫持、301重定向、恶意反向代理、IIS模块劫持等。
01、客户端js劫持
将js脚本插入网页,通过js跳转url。一般来说,混淆加密js会增加识别难度。
如下:通过js劫持搜索引擎的流量。
scriptvar s=document.referrer
if(s.indexOf('百度')0||s.indexOf('搜搜')0||s.indexOf('谷歌')0||s.indexOf('雅虎')0||s.indexOf('搜狗')0||s.indexOf('有道')0||s.indexOf('必应')0){ self . location=' 3http://www . xxxx . com ';
}/脚本故障排除思路:检查网页源代码或抓取数据包分析http流量,找到源代码中插入的js代码,删除js代码并恢复。
02、服务端代码劫持
网站源代码被篡改,主页或配置文件中引入了恶意代码。
如下:通过判断用户代理和Referer,采取快照劫持。
?服务器端编程语言(Professional Hypertext Preprocessor的缩写)
错误报告(0);
//确定是不是百度蜘蛛,然后劫持内容。
if(stripos($ _ SERVER[' HTTP _ USER _ AGENT '],' baidu')-1){
$ file=file _ get _ contents(' http://www . xxxx . com ');
echo $ file
退出;
}
//确定是否来自百度搜索,然后跳转网址
if(stristr($ _ SERVER[' HTTP _ REFERER '],' Baidu . com '){
header(' location :http://www . xxxx . com/');//指定跳转
退出;
}
?排查思路:检查网站首页引入了哪些文件,依次访问相关文件源代码,确认可疑代码,移除包含文件后恢复。备份网站的源代码,验证文件的完整性是非常重要的,可以帮助我们在数万行代码中快速找到恶意代码。
03、nginx反向代理劫持
以前有一个网站是防篡改的,不能通过修改网站源代码来劫持。攻击者通过修改nginx的配置文件,定期匹配url链接,配置proxy_pass代理转发,劫持了url。
location ~ /[0-9a-z] sc {
代理人_通行证https://www.xxxx.com/;
}排查思路:总结url劫持的规律,中间件配置文件也是需要注意的位置。
04、利用301重定向劫持
301通过HTTP重定向劫持。
http redirected enabled=' true ' destination=' 3358 www.xxxx.com/1.php' child only=' true ' http response status=' permanent '/故障排除思路:可以查看网站根目录下的配置文件web.config,确认是否有相关设置。
05、IIS恶意模块劫持
这种方法比较隐蔽。在网站目录中找不到webshell和马航页面,但使用特定路径、Referer或UA访问时,页面会加载暗链。
故障排除思路:对加载的异常dll文件进行故障排除。如果没有签名,创作时间不符,就要注意了。您可以使用tinder sword或Process Monitor等工具来帮助排除故障。
评论(0)