核心思路
在开始之前,请务必理解排查的核心思路:

(图片来源网络,侵删)
- 找到异常文件:木马通常伪装成正常的PHP文件,或者放在不寻常的目录下。
- 分析文件内容:检查这些异常文件是否包含恶意代码,如远程执行、文件操作、数据库操作等危险函数。
- 查找被篡改的文件:木马也可能通过修改正常文件(如index.php、config.php)来植入后门。
- 检查数据库:有些木马会向数据库写入恶意脚本,这些脚本在前台页面被调用。
自动化检查工具推荐
自动化工具可以快速扫描出可疑文件,是初步排查的高效手段。
DedeCMS官方安全补丁和检测工具
- 来源:DedeCMS官方网站或官方QQ群。
- 作用:官方工具最了解DedeCMS的自身结构,能准确识别出被官方安全补丁修复过的漏洞点,并检查核心文件是否被篡改。
- 获取方式:关注DedeCMS的官方发布渠道,有时会在发布安全公告时附带检测脚本。
安全公司提供的在线扫描工具
很多网络安全公司提供免费的网站在线检测服务,你可以将网站的核心文件打包上传进行扫描。
- 腾讯云主机安全:如果你的网站部署在腾讯云上,其“主机安全”服务有“网页防篡改”和“木马查杀”功能,非常强大。
- 360网站卫士:提供网站检测服务,可以扫描网站是否存在漏洞和木马。
- 安全客:等保通等平台也提供类似的在线扫描服务。
- 使用方法:访问这些平台的官网,找到“网站检测”、“安全扫描”等入口,按照提示操作即可。
开源/免费的DedeCMS专用扫描脚本
一些安全爱好者会编写专门针对DedeCMS的扫描脚本,通常在GitHub或一些技术论坛上可以找到。
- 特点:这些脚本会重点扫描DedeCMS的特定目录和文件,
/data/目录下的缓存文件(cache目录)/include/目录下的核心文件/templets/目录下的模板文件- 根目录下的
index.php,index.html,login.php等。
- 使用方法:下载脚本,上传到网站空间,通过浏览器访问执行,它会生成一份详细的扫描报告,列出可疑的文件和代码片段。
重要提示:使用任何来源不明的脚本前,请务必检查其代码,确保它本身是安全的,不会窃取你的网站信息。

(图片来源网络,侵删)
手动排查方法(最可靠)
自动化工具可能会产生误报,也可能会遗漏一些新型木马,手动排查是确保网站安全的关键。
步骤1:检查核心文件是否被篡改
这是最常见也是最危险的攻击方式,木马会修改你的 index.php, config.php 等文件,使其在访问时加载恶意代码。
-
检查
index.php- 打开网站根目录下的
index.php文件。 - 正常情况下,它应该非常简洁,可能只包含几行代码,用于加载
dede目录下的index.php。 - 异常情况:如果文件末尾或中间出现了大量你从未写过的代码,特别是包含
eval,assert,base64_decode,str_rot13,gzinflate等函数的代码,那几乎可以确定是木马。 - 对比:可以去DedeCMS官网下载对应版本的源码,对比一下你的
index.php文件是否被修改过。
- 打开网站根目录下的
-
检查
data目录
(图片来源网络,侵删)data目录是DedeCMS的“心脏”,存放着配置文件和缓存,黑客最喜欢在这里动手脚。- 重点检查
safe目录:/data/safe/目录下的文件是安全检测相关的,但黑客也可能在此伪造文件。 - 检查
config.cache.inc.php:这个文件包含了数据库连接信息,如果被篡改,后果严重,检查文件内容是否被添加了奇怪的代码。 - 检查
mysql_error_trace.inc.php:这个文件用于记录数据库错误,检查它是否被修改,被修改后可能被用作后门。
步骤2:查找可疑的PHP文件
木马通常伪装成图片、缓存文件或不起眼的脚本。
-
寻找“伪装”文件:
- 在网站根目录及子目录中,寻找文件名很奇怪的PHP文件,
shell.phpimages/1.phptemplets/default/js.phpa1.php,b2.php等
- 寻找文件名包含特殊字符的文件,如
eval.php,base64.php,cmd.php。 - 寻找后缀名被篡改的文件,如
jpg.php,gif.php,png.php,黑客会利用Apache服务器的解析漏洞来执行这些文件。
- 在网站根目录及子目录中,寻找文件名很奇怪的PHP文件,
-
寻找“异常”目录:
- 检查是否有你不认识的目录,
shell,c99,cmd等。
- 检查是否有你不认识的目录,
-
检查
uploads和templets目录:uploads是上传目录,黑客会利用上传漏洞将木马传至此处,检查是否有非图片、非文档的PHP文件。templets是模板目录,黑客可能会修改模板文件,在页面中植入恶意<iframe>或<script>。
步骤3:分析可疑文件内容
当你找到一个可疑文件后,不要直接删除,先分析它。
-
寻找危险函数:用代码编辑器打开文件,搜索以下关键字:
eval():执行字符串中的PHP代码,最危险的后门函数之一。assert():同上。system(),exec(),shell_exec(),passthru():执行系统命令。file_get_contents(),fopen(),readfile():读取文件,可能用于读取敏感文件(如/etc/passwd)。base64_decode(),str_rot13(),gzinflate():常用于加密和混淆恶意代码,解开看看是否能看到危险函数。$_REQUEST,$_GET,$_POST:检查是否有未经过滤就直接传入上述危险函数的参数。
-
识别Webshell特征:
- 密码登录型:代码中可能会有一个
if (isset($_POST['password']))的判断,输入正确密码后就会获得一个功能强大的管理界面。 - 函数调用型:代码可能很短,但接收一个函数名和参数,然后执行它,
@call_user_func($_GET['f'], $_GET['p']);。 - 一句话木马:最简短的木马,如
<?php @eval($_POST['cmd']); ?>。
- 密码登录型:代码中可能会有一个
步骤4:检查数据库
有些木马不修改文件,而是直接向数据库写入恶意内容。
-
检查
dede_archives(文章表):- 登录网站后台,进入“内容管理” -> “所有文档”。
- 浏览文章列表,检查文章内容是否包含奇怪的
<script>标签、<iframe>或其他可疑的外部链接。 - 直接在数据库中查询:
SELECT * FROMdede_archivesWHERE body LIKE '%<script%>' OR body LIKE '%iframe%'。
-
检查
dede_homepageset(首页调用文件):这个表存储了首页的调用文件,黑客可能会修改它,让首页加载一个恶意的外部PHP文件。
发现木马后的处理流程
- 立即备份:在清理前,先完整备份你的网站文件和数据库,以防清理失误导致网站无法恢复。
- 清除木马:
- 删除可疑文件:将所有找到的木马文件直接删除。
- 恢复被篡改文件:用官方源码或你自己的备份,覆盖被篡改的核心文件(如
index.php,config.php)。 - 清理数据库:登录数据库管理工具(如phpMyAdmin),删除恶意插入的数据或记录。
- 修复漏洞:
- 更新程序:立即将DedeCMS更新到最新稳定版本,官方新版本通常会修复已知的安全漏洞。
- 修改密码:修改网站后台、FTP、数据库的所有密码,确保密码复杂度高。
- 检查权限:确保
data目录、uploads目录等关键目录的权限设置正确(755或750),不要设置为777。
- 使用安全插件:安装DedeCMS的安全加固插件,可以增强网站的抗攻击能力。
| 方法 | 优点 | 缺点 | 适用场景 |
|---|---|---|---|
| 自动化工具 | 快速、高效,能快速定位大量可疑文件 | 可能误报、漏报,依赖工具的更新频率 | 初步筛查,快速发现明显问题 |
| 手动排查 | 最准确、最可靠,能发现隐藏最深的木马 | 耗时耗力,需要一定的技术基础 | 精细检查,确认最终结果,修复后验证 |
最佳实践:先用自动化工具进行快速扫描,然后对工具标记出的可疑文件逐一进行手动分析和确认,这个过程虽然繁琐,但对于保障网站安全至关重要,定期进行手动检查,是维护DedeCMS网站安全的好习惯。
