[渗透]网站劫持分析与验证方法总结

网站劫持

网站劫持是指当用户打开一个网址的时候,出现一个不归属于网站范畴内的一个广告页面,或者是直接就跳转到某一个不是这个网站所属的页面。
网站劫持分为以下几大类:

一、搜索引擎劫持

搜索引擎劫持简称搜索劫持,其实就是从搜索引擎来的流量自动跳转到指定的网页。可以通过未经用户授权,自动修改第三方搜索引擎结果的软件实现,通常这类程序会在第三方搜索引擎的结果中添加自己的广告或加入网站链接获取流量等。
搜索引擎劫持分为三类:

  1. 整站劫持:劫持者通过在网站页面载入js或web服务器内植入代码,全局劫持网站,导致整个网站跳转到其他网址。劫持脚本代码分为客户端版(JS)和服务端版(php、asp、jsp等)两种。
    客户端代码:
// 方式1:判断referrer(从哪个页面链接过来)  
var url = "http://xxxxx.bc.com"; // 博彩网站
var ref = document.referrer;
var bot = ['baidu', 'google', 'yahoo', 'bing', 'soso', 'sogou', '360.cn', 'so.com','youdao', 'anquan', 'sm.cn', 'haosou'];
for (var i in bot) {
   if(ref.indexOf(bot[i]) != -1) {
      window.location.href = url;
   }
}
// 方式2:判断user-agent
var url = "http://xxxxx.bc.com"; // 博彩网站
var ua = navigator.userAgent.toLowerCase();
if(ua.match(/baidu/)== 'baidu'){
    window.location.href = url;
}

服务端代码(PHP)

<?php
// 博彩页面
$dsturl = "https://www.xxx.bc.com";
$referer = @$_SERVER["HTTP_REFERER"];
$agent = strtolower(@$_SERVER["HTTP_USER_AGENT"]);

if(strstr($referer, "baidu"))
{
   header("Location: $dsturl");
}

if(strstr($agent, "google"))
{
   header("Location: $dsturl");
}
  1. 关键字劫持:比如百度搜索某网站关键词,但是点击进去之后却跳转到别的非法网站上,这种劫持方式会比较隐蔽,只会针对一部分的关键单独跳转,这是整站劫持方式的升级版。
  2. 快照劫持:搜索引擎爬取网站标题、关键词、描述时,抓取到黑客设定的内容。
<?php
echo "<!Doctype html>";
echo "<html>";
echo "<head><meta charset='utf-8'/>";
//UserAgent劫持
//echo "<script>if(navigator.userAgent.toLocaleLowerCase().indexOf(\"baidu\")==-1){document.title=\"快照劫持示例\"}</script>";
//Referrer劫持
echo "<script>if(document.referrer.toLocaleLowerCase().indexOf(\"baidu\")==-1){document.title=\"快照劫持示例\"}</script>";
echo "<title>澳门皇家赌场</title>";
echo "</head>";
echo "<body><h1>请检查网站标题变化</h1></body>";
echo "</html>";

// 博彩页面
$dsturl = "https://www.hao123.com";
$referer = @$_SERVER["HTTP_REFERER"];
$agent = strtolower(@$_SERVER["HTTP_USER_AGENT"]);

if(strstr($referer, "baidu"))
{
   $content=file_get_contents($dsturl);
   echo $content;
}

if(strstr($agent, "baidu"))
{
   $content=file_get_contents($dsturl);
   echo $content;
   exit;
}
?>

二、网络劫持

网络劫持分为2类:

  1. DNS劫持(域名劫持):是互联网攻击的一种方式,通过攻击域名解析服务器(DNS),或伪造域名解析服务器(DNS)的方法,把目标网站域名解析到错误的地址从而实现用户无法访问目标网站的目的。
  2. HTTP劫持:HTTP劫持通常不是定时在你的系统中出现的,只有病毒引起的恶意推广才会不停地出现在你的视线中。并且HTTP劫持往往是在你进行网络操作刚刚开始的时候,例如,你刚刚打开了旺旺、登录邮箱或访问的网站还未完全打开时,劫持才会出现。这种劫持导致的最常见的现象就是弹出宣传页面,这种页面会突然跳出来,而且显示速度很快,比你要访问的网站提前很多。

三、浏览器劫持

浏览器劫持是指网页浏览器(IE等)被恶意程序修改。常见现象为主页及互联网搜索页变为不知名的网站、经常莫名弹出广告网页输入正常网站地址却连接到其他网站。收藏夹内被自动添加陌生网站地址等等。

搜索引擎劫持的判断方法

如果通过程序脚本快速验证网站被劫持?

  1. 整站劫持(客户端版JS) - 判断Referer/User Agent 的验证方法:
    程序获取网站源码(包括js文件源码),通过关键字判断是否劫持。关键字如:document.referrer 、navigator.userAgent 、window.location等。
  2. 整站劫持(服务端版PHP) - 判断Referer/User Agent 的验证方法:
    第一步,程序模拟Referer或User Agent正常访问网站,记录网站响应状态码200还是302;第二步,程序模拟百度、谷歌等搜索引擎的Referer或User Agent访问网站, 记录网站响应状态码200还是302;第三步,判断前两步的状态码是否相同,不同就判断是劫持。
  3. 关键字劫持,判断方法与整站劫持相同。
  4. 快照劫持,验证方法:
    第一步,程序模拟Referer或User Agent正常访问网站,记录网站标题和body内容(前10个字符);第二步,程序模拟百度、谷歌等搜索引擎的Referer或User Agent访问网站, 记录网站标题和body内容(前10个字符);第三步,判断前两步的标题或内容是否相同,不同就判断是劫持。

参考文献:
https://www.cnblogs.com/zhibolife/p/3690596.html
https://www.cnblogs.com/byeb/articles/9942858.html
https://www.cloudxns.net/Support/detail/id/2803.html
https://zhuanlan.zhihu.com/p/31344484
https://www.freebuf.com/articles/web/153788.html
https://www.upyun.com/tech/article/152/%E7%BD%91%E7%AB%99%E8%8E%AB%E5%90%8D%E8%B7%B3%E8%BD%AC%EF%BC%88%E4%B8%8A%EF%BC%89%EF%BC%9A%E4%BB%8E%E7%99%BE%E5%BA%A6%E8%B0%88%E4%BB%80%E4%B9%88%E6%98%AF%E7%BD%91%E7%AB%99%E5%8A%AB%E6%8C%81%EF%BC%9F.html
https://ziyuan.baidu.com/college/articleinfo?id=939

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值