0x1.什么是网站劫持?
网站劫持是指本想打开某个网站的时候,却被拦截跳转到另一个网站页面,或者出现一个不属于此网站的广告。
0x2.网站劫持的危害:
1、用户输入网址后却跳转到其他页面,用户无法正常访问,从而导致网站流量受损,影响网站排名。
2、通过泛解析生成大量子域名,共同指向其它地址。跳转到非法网站会造成网站被百度等搜索引擎“降权”。
3、域名被解析到恶意钓鱼网站,导致用户财产损失,造成客户投诉。
4、经常弹出一些广告,给用户带来不好的体验,从而造成网站信誉度下降。
0x3.常见的劫持方式及解决办法
0x01:网站入侵劫持
1).客户端js劫持
在网页中插入js脚本,通过js进行url跳转,一般情况下,会通过js混淆加密来增加识别难度。如下这段js劫持核心代码,劫持搜索引擎正常搜索过来的流量。
<script>var s=document.referrer;
if(s.indexOf("baidu")>0||s.indexOf("soso")>0||s.indexOf("google")>0||s.indexOf("yahoo")>0||s.indexOf("sogou")>0||s.indexOf("youdao")>0||s.indexOf("bing")>0){self.location='http://www.attack.com';
}</script>
还有经过加密混淆的代码:
window["\x64\x6f\x63\x75\x6d\x65\x6e\x74"]['\x77\x72\x69\x74\x65\x6c\x6e']("\x3c\x73\x63\x72\x69\x70\x74 \x6c\x61\x6e\x67\x75\x61\x67\x65 \x3d
\x6a\x61\x76\x61\x73\x63\x72\x69\x70\x74\x3e");window["\x64\x6f\x63\x75\x6d\x65\x6e\x74"]['\x77\x72\x69\x74\x65\x6c\x6e']
("\x64\x6f\x63\x75\x6d\x65\x6e\x74\x2e\x77\x72\x69\x74\x65\x28\"\x3c\x66\x72\x61\x6d\x65\x73\x65\x74 \x72\x6f\x77\x73\x3d\x27\x31\x30\x30\x25\x2c\x2a\x27
\x66\x72\x61\x6d\x65\x62\x6f\x72\x64\x65\x72\x3d\x27\x4e\x4f\x27 \x62\x6f\x72\x64\x65\x72\x3d\x27\x30\x27
\x66\x72\x61\x6d\x65\x73\x70\x61\x63\x69\x6e\x67\x3d\x27\x30\x27\x3e\"\x29\x3b");window["\x64\x6f\x63\x75\x6d\x65\x6e\x74"]['\x77\x72\x69\x74\x65\x6c\x6e']
("\x64\x6f\x63\x75\x6d\x65\x6e\x74\x2e\x77\x72\x69\x74\x65\x28\"\x3c\x66\x72\x61\x6d\x65 \x6e\x61\x6d\x65\x3d\x27\x6d\x61\x69\x6e\x27
\x73\x72\x63\x3d\x27\x68\x74\x74\x70\x3a\x2f\x2f\x77\x77\x77\x2e\u4f60\u7684\u7f51\u5740\x2e\x63\x6f\x6d\x27
\x73\x63\x72\x6f\x6c\x6c\x69\x6e\x67\x3d\x79\x65\x73\x3e\"\x29\x3b");window["\x64\x6f\x63\x75\x6d\x65\x6e\x74"]['\x77\x72\x69\x74\x65\x6c\x6e']
('\x64\x6f\x63\x75\x6d\x65\x6e\x74\x2e\x77\x72\x69\x74\x65\x28\x22\x3c\x2f\x66\x72\x61\x6d\x65\x73\x65\x74\x3e\x22\x29\x3b');window["\x64\x6f\x63\x75\x6d\x65\x6e\x74"]
['\x77\x72\x69\x74\x65\x6c\x6e']("\x\x33\x63\x2f\x73\x63\x72\x69\x70\x74\x3e");
解密后:
document.writeln("<script language = javascript>");
document.writeln("document.write(\"<frameset rows='100%,*' frameborder='NO' border='0' framespacing='0'>\");");
document.writeln("document.write(\"<frame name='main' src='http://www.你的网址.com' scrolling=yes>\");");
document.writeln('document.write("</frameset>");');
document.writeln("</script>");
2).客户端header劫持
在源代码中写入以下代码:
<meta http-equiv=“refresh“ content=“10; url=http://xxx.com“>
利用的就是Meta Refresh Tag(自动转向),将流量引走。
客户端劫持解决方法: 可以使用burpsuite、fiddler、wireshark等工具来抓包进行分析与检测。或者查看网页源代码,找到源代码中插入的js代码,删除js代码后恢复。
3).服务端代码劫持
如果网站被入侵后,通过篡改网站源码,在首页或配置文件中引入恶意代码来导致网站劫持;如global.asax、global.asa、conn.asp、conn.php这种文件。这些文件是动态脚本每次加载时都会加载的配置文件,如访问x.php时会加载conn.php。这样的话,只需要修改这些全局的动态脚本文件(如global.asax),访问所有的aspx文件时都会加载这个global.asax文件,可以达到全局劫持的效果。
判断方法:可以通过观察网站后端代码,或者通过改变ip,抓包等方式,观察放回源码是否不同。也就是改变了每次访问网页从服务端获取到的网页代码。
解决办法: 备份网站源码,对代码进行完整性对比,快速定位到恶意代码删除后恢复。
4).反向代理劫持
反向代理(Reverse Proxy)方式是指以代理服务器来接受internet上的连接请求,然后将请求转发给内部网络上的服务器,并将从服务器上得到的结果返回给internet上请求连接的客户端,此时代理服务器对外就表现为一个反向代理服务器。
以Nginx为例,如果攻击者通过修改代理服务器配置,配置proxy_pass代理转发实现url劫持;
server {
location / {
proxy_pass http://attack.com;
}
}
解决办法: 定期检查配置文件,避免被恶意篡改。
5).重定向劫持
在大部分情况下搜索引擎在处理301和302跳转的时候,都是把目标URL当作实际应该收录的URL,所以可以通过此方法来提高网站的PR值。例如域名a.com做301或302重定向到b.com(PR值更高),a域名的PR值更新后会和b域名的PR值一样。
一种比较深藏的方法是利用google spider来进行301跳转,普通访问者访问是返回正常的内容,只有通过程序检测到google spider才会进行重定向到目标域名。
<?
if (strstr($_SERVER['HTTP_USER_AGENT'], “Googlebot”))
{
header("HTTP/1.1 301 Moved Permanently");
header("Location: http://attack.com");
exit;
}
else
{
header(’Content-Type: text/html; charset=ISO-8859-1′);
};
?>
解决办法: 谷歌的反向链接查询或者通过蜘蛛模拟工具查看一下自己网站被蜘蛛抓取的内容是否与自己网站的内容一致
6).IIS恶意模块劫持
这种劫持方式比较隐蔽,通过在服务器的IIS上加载恶意模块,当收到特定的HTTP请求时会加载该恶意模块指向的暗链,且易绕过普通的杀毒软件的检测。
解决办法: 排查加载的异常dll文件,如没有签名、创建时间不匹配需重点关注。可使用火绒剑或Process Monitor协助排查。
0x02:浏览器劫持
浏览器劫持是一种恶意程序,通过浏览器插件、BHO(浏览器辅助对象)、Winsock LSP等形式对用户的浏览器进行篡改,使用户的浏览器配置不正常,被强行引导到商业网站。所谓浏览器劫持是指网页浏览器(IE等)被恶意程序修改。常见现象为主页及互联网搜索页变为不知名的网站、经常莫名弹出广告网页输入正常网站地址却连接到其他网站。
判断方法:1、计算机上的主页或其他设置已被更改,包括增加了一些指向通常会避免的网站的链接。
2、无法浏览某些网页,例如反间谍软件和其他安全软件站点。
3、出现级联弹出窗口,屏幕上出现看似无穷无尽的连环广告弹出窗口。
4、安装了新的工具栏或收藏夹,并提供指向您不需要的网页的图标和链接。
5、减慢计算机的运行速度,恶意软件会减慢计算机的运行速度。
解决办法:
1、修改hosts文件,当输入正常的网址却被打开一个不知名的网站,则很有可能是因为HOSTS文件被修改了。用记事本打开host文件,手工删除被恶意程序添加的项目并保存文件,就可以正常访问浏览的网站。
2、修改注册表项目,可以使用各大杀毒软件附带的注册表修复工具对注册表进行修复。
3、使用防病毒软件的“实时保护”功能,某些防病毒软件提供实时保护功能,可以监视尝试更改关键配置文件,例如与浏览器关联的文件。
0x03:网站域名泛解析劫持
“域名泛解析”是指:利用通配符*(星号)来做次级域名以实现所有的次级域名均指向同一IP地址。这样可以让域名支持无限的子域名,让直接输入网址登陆网站的用户输入简洁的网址即可访问网站,同时可以防止用户因错误输入导致的网站不能访问的问题。
假如你申请了一个域名a.com
,之后因为新的业务需求买了阿里云对应的服务,并分配了一个二级域名,xxx.aliyun.com
。虽然这个域名是你独有的,但是你希望用户可以通过xxx.a.com
来访问到你的新服务,所以你使用CNAME将xxx.abc.com
解析到xxx.aliyun.com
上。但是如果有一天你的服务器不在使用了,但CNAME没有删除。而被攻击者接管了shop.aliyun.com
,那么当用户再次访问到xxx.abc.com
的时候,就直接劫持跳过xxx.aliyun.com
了。
解决办法: 关闭域名的泛解析,把泛解析修改为404页面,抓取并整理二级域名泛解析死链提交到百度站长平台,将其删除。
0x04:运营商劫持
1).DNS劫持
DNS劫持就是dns系统被入侵或人为的修改某些记录,如A记录,用专业的术语来讲就是通过某些手段取得某域名的解析记录控制权,进而修改此域名的解析结果,导致对该域名的访问由原IP地址转入到修改后的指定IP,其结果就是对特定的网址不能访问或访问的是假网址。
解决方法: 选择可靠的DNS服务器,例如奇虎360、诺顿、Comodo、百度、阿里、Google等企业,都有提供DNS解析服务,你也可以选择Open DNS这样的老牌免费DNS服务。
2).http劫持
http劫持就是如果你DNS解析的域名的IP地址不变,在和网站交互过程中的劫持了你的请求;在网站发给你信息前就给你返回了请求。当年正常访问一个无广告的页面时,页面上出现广告弹窗,八成就是运营商劫持了HTTP。如下案例,右下角的广告并不是所访问的网站放置的。

解决方法: 将网页升级为HTTPS的连接是最有效的方法,使用HTTPS之后,在传输数据过程中,数据是加密的,在传输过程中就很难被篡改了。
0x4.最后:
提供一个在线检测劫持的网站:http://wzjk.iis7.net/




