3招免费工具教你识别DedeCMS防挂马

网站突然挂满黄色弹窗,后台进不去,数据被删?别慌,这通常是网站被黑后的典型症状。很多站长这时候第一反应是重装系统,但这往往治标不治本。要彻底解决这个问题,你得先搞清楚你的网站是用什么程序写的,特别是像 DedeCMS(织梦)这种老牌的 CMS 系统,因为它的默认配置漏洞多,是黑客最爱的“肥羊”。

今天咱们不聊虚的,直接上干货。怎么看出网站是 dede 做的?其实不用你懂代码,只要用对几个免费工具,两分钟就能摸清底细。这不仅是为了技术鉴定,更是为了排查安全风险。很多被挂马的站,根源就在于不知道自己是 DedeCMS,从而漏掉了针对该系统的专项安全加固。

需求分析:为什么必须识别 DedeCMS

很多新手站长,甚至是转行做网站的朋友,手里接了个烂摊子,或者自己维护着一个老站,发现网站速度奇慢,或者频繁出现异常跳转。这时候,第一步不是换服务器,也不是买杀毒软件,而是“验明正身”。

在东北老话里,这叫“先摸清家底”。你都不知道这房子是哪年盖的、用的什么砖,你怎么知道它哪儿漏风?DedeCMS 在国内企业站中存量巨大,但它架构老旧,PHP 代码规范差,容易留下后门。如果你不能准确识别出它是 DedeCMS,你就无法使用针对它的特定修复工具,比如 Dede 专用的一键修复脚本。

更重要的是,识别系统版本能帮你判断被黑的路径。黑客攻击 DedeCMS 通常利用的是未授权访问、SQL 注入或者后台插件漏洞。如果你通过免费工具确认了它是 DedeCMS 5.7 版本,那你就该重点查它的 include/ 目录和 admin/ 目录的权限设置。如果连系统类型都搞不清,盲目重装,黑客留下的 WebShell(网页后门)可能还在数据库里,重装完照样被黑。

另外,从合规角度看,虽然工信部ICP备案系统主要查主体资格,但备案信息中的“网站名称”和“服务内容”必须与实际运行程序相符。如果你备案的是“企业官网”,但实际跑的是带赌博接口的 DedeCMS 插件,那是违规的。识别清楚系统,才能确保网站内容符合备案承诺,避免被通信管理局关停。

环境准备:备好这几款免费工具

别被“工具”两个字吓住,咱们说的都是浏览器里就能跑的,或者是下载个绿色版就能用的免费工具,不需要你安装复杂的开发环境。

1. 浏览器开发者工具(F12) 这是最基础、最强大的工具。Chrome、Edge、Firefox 都自带。不用下载,按 F12 就行。它能看到网站的源代码、请求头、Cookie 信息。

2. Wappalyzer 或 WhatWeb 这俩是浏览器插件。Wappalyzer 是 Chrome 商店里的免费插件,装上后,你打开任何网站,地址栏旁边会显示一堆图标,其中就包括它检测到的 CMS 系统、服务器类型、前端框架。WhatWeb 是命令行工具,适合批量检测,但新手用 Wappalyzer 更直观。

3. 在线指纹识别平台(如 BuiltWith) 如果你不想装插件,可以直接用在线网站。输入网址,它会详细列出网站的技术栈。虽然部分高级功能收费,但基础的系统识别功能是免费的,足够咱们判断是不是 DedeCMS 了。

4. FTP 客户端(如 FileZilla) 如果你能登录服务器,FileZilla 是必装的。它是免费、开源的 FTP 客户端,用来查看服务器文件结构。很多时候,浏览器里看不出来的东西,直接看服务器文件目录一目了然。

准备这些工具的目的,是为了从“前端展示”和“后端文件”两个维度交叉验证。单一渠道容易误判,比如有些站改了后缀名,或者用了 CDN 缓存,前端看不出来,但后端文件结构暴露无遗。

核心步骤:三步锁定 DedeCMS 身份

下面这招,我教过几十个转行做网站的新手,基本百试百灵。咱们按顺序来,由浅入深。

第一步:看 URL 和页面源码

打开疑似 DedeCMS 的网站,按下 F12,切换到“Elements”(元素)选项卡,或者直接在源码里搜索关键字。

重点搜索这些字符串:

  • dede
  • dedecms
  • plus/
  • templets/
  • data/

如果你看到类似 <script src="/dede/plus/..." 或者 <!-- DedeCMS 5.7 --> 这样的注释,基本就实锤了。DedeCMS 的默认模板文件路径通常包含 templets/,而它的动态页面生成引擎位于 plus/ 目录下。

注意: 有些高手站长会隐藏这些信息,或者修改了文件路径。所以这一步只是初步判断,不能作为唯一依据。

第二步:检查 URL 参数特征

DedeCMS 生成的 URL 有一些非常独特的格式,这是它的“指纹”。

  • 列表页: 通常是 /html/ 或 /plus/list.php?tid=xx
  • 详情页: 通常是 /html/xx/xx.html 或 /show.php?arcid=xx
  • 搜索页: /plus/search.php

如果你在地址栏看到 plus/list.php 或者 show.php?arcid=,哪怕页面源码被混淆了,这个 URL 结构也很难完全改掉,因为改了会导致大量内链失效。这是判断 DedeCMS 最硬的证据之一。

第三步:服务器文件结构验证(终极手段)

如果前两步都不确定,或者你想确认是否有被黑风险,直接连服务器。用 FileZilla 登录 FTP,查看网站根目录。

DedeCMS 的标准目录结构如下:

  • admin/ 或 dede/:后台管理目录
  • data/:数据库配置文件和缓存目录
  • include/:核心功能库
  • language/:语言包
  • templets/:模板文件
  • upload/:用户上传文件
  • plus/:动态页面生成

如果你看到这些目录同时存在,尤其是 include/arc.class.php、include/arc.archives.class.php 这些核心文件,那绝对是 DedeCMS。

安全排查重点: 在 admin/ 或 dede/ 目录下,检查是否有非官方文件,比如 shell.php、test.php、xx.jpg(图片里藏后门)。在 upload/ 目录下,检查是否有可执行的 PHP 文件。这些都是黑客挂马后留下的典型痕迹。

代码/配置示例:快速检测脚本

为了让大家更直观,我写两段简单的检测代码。一段是浏览器控制台用的 JS,一段是 Linux 服务器用的 Bash 脚本。

示例 1:浏览器控制台快速检测(JavaScript)

打开疑似 DedeCMS 的网站,按 F12,切换到“Console”(控制台),粘贴以下代码并回车:

// 检测页面中是否包含 DedeCMS 特征字符串
(function() {var html = document.documentElement.outerHTML;var patterns = ['dedecms','dede','/plus/','/templets/','DedeAdmin'];var found = [];patterns.forEach(function(pattern) {if (html.toLowerCase().indexOf(pattern) !== -1) {found.push(pattern);}});if (found.length > 0) {console.log('%c[警告] 检测到 DedeCMS 特征: ' + found.join(', '), 'color: red; font-weight: bold;');// 进一步检查 URL 结构if (window.location.href.indexOf('plus/') !== -1 || window.location.href.indexOf('show.php') !== -1) {console.log('%c[确认] URL 结构符合 DedeCMS 特征', 'color: orange;');}} else {console.log('%c[提示] 未在 HTML 中直接检测到 DedeCMS 特征,可能已混淆或隐藏', 'color: blue;');}
})();

代码说明:

  • document.documentElement.outerHTML:获取整个页面的 HTML 源码。
  • patterns 数组:定义了 DedeCMS 的常见特征字符串。
  • indexOf:判断字符串是否包含特征。
  • console.log:在控制台输出检测结果,红色表示高度怀疑,蓝色表示未发现。

示例 2:服务器文件检测(Bash)

如果你有 SSH 权限,登录服务器,进入网站根目录,执行以下命令:

#!/bin/bash# 定义网站根目录,请根据实际情况修改
WEB_ROOT="/var/www/html"echo "开始检测 DedeCMS 特征文件..."# 检查核心目录是否存在
if [ -d "$WEB_ROOT/include" ] && [ -f "$WEB_ROOT/include/arc.class.php" ]; thenecho "[确认] 发现核心文件 include/arc.class.php,确认为 DedeCMS"
elif [ -d "$WEB_ROOT/dede" ]; thenecho "[确认] 发现 dede 目录,高度疑似 DedeCMS"
elseecho "[提示] 未发现典型 DedeCMS 核心文件"
fi# 检查后台目录
if [ -d "$WEB_ROOT/admin" ] || [ -d "$WEB_ROOT/dede" ]; thenecho "[信息] 发现后台目录"# 检查后台目录下是否有可疑的 PHP 文件(非官方文件)suspicious_files=$(ls -l "$WEB_ROOT"/admin/*.php "$WEB_ROOT"/dede/*.php 2>/dev/null | grep -v "config" | grep -v "login" | grep -v "index")if [ ! -z "$suspicious_files" ]; thenecho "[警告] 后台目录存在非标准 PHP 文件,请人工核查:\n$suspicious_files"fi
fi# 检查 upload 目录是否有 PHP 文件(高危)
php_in_upload=$(find "$WEB_ROOT/upload" -name "*.php" 2>/dev/null)
if [ ! -z "$php_in_upload" ]; thenecho "[高危] upload 目录中发现 PHP 文件,极大概率是 WebShell:\n$php_in_upload"
elseecho "[安全] upload 目录未发现 PHP 文件"
fi

代码说明:

  • -d 和 -f:分别判断目录和文件是否存在。
  • include/arc.class.php:这是 DedeCMS 最核心的类文件,几乎不可能被改名,是判断的金标准。
  • find 命令:在 upload 目录查找所有 .php 文件。正常情况下,上传目录只应存放图片、文档,不应有 PHP 可执行文件。如果有,99% 是黑客植入的后门。

常见报错与排查误区

在实际操作中,新手常遇到几个坑,这里提前给你避避雷。

1. “我看源码里没有 dede 字样,是不是不是 DedeCMS?” 不一定。有些站长使用了代码混淆工具,或者将 dede 关键字替换成了其他字符串(如 cms、admin)。这时候,URL 结构和服务器文件结构就是唯一的真理。不要只信前端,要看后端。

2. “我用了 CDN,怎么判断?” CDN 会缓存页面,可能让你看到的源码是缓存前的旧版本。建议:

  • 在 URL 后加随机参数,如 ?t=12345,绕过缓存。
  • 直接查服务器文件,最准确。
  • 查看 HTTP 响应头,看 Server 字段和 X-Powered-By 字段,虽然 DedeCMS 不一定暴露,但能辅助判断 PHP 版本。

3. “识别出是 DedeCMS 了,然后呢?” 识别只是第一步。接下来你要做的是:

  • 备份:立刻备份整个网站和数据库。
  • 排查后门:用上面的 Bash 脚本扫描 admin、upload、data 目录。
  • 修改密码:修改 FTP、数据库、后台管理员密码。
  • 升级或加固:如果版本太老,建议升级到最新版 DedeCMS,或者打官方补丁。如果不想折腾,考虑迁移到 WordPress 或 Typecho 等更安全的 CMS。

4. “工信部ICP备案系统能帮我查这个吗?” 不能。工信部ICP备案系统主要查询网站的主体资格、备案号、接入商等信息。它不会告诉你网站是用什么程序写的。但备案信息是合规的基础,如果你的网站被黑挂了违法内容,导致备案被注销,那麻烦就大了。所以,识别系统、做好安全防护,也是维护备案有效性的一部分。

小结:从识别到防御的闭环

怎么看出网站是 dede 做的?其实没那么神秘。通过免费工具如浏览器 F12、Wappalyzer 插件、FileZilla 文件查看器,结合 URL 特征、源码关键字、服务器文件结构这三个维度,你就能准确识别出 DedeCMS 网站。

识别的目的,不是为了炫耀技术,而是为了安全。DedeCMS 虽然老,但依然有大量站点在运行。它的安全性取决于你的维护程度。如果你发现网站是 DedeCMS,请务必:

  1. 定期更新核心文件和补丁。
  2. 严格权限管理,禁止 upload、data 目录执行 PHP。
  3. 监控文件变更,使用文件完整性监控工具。
  4. 备份、备份、再备份,这是最后的救命稻草。

网站被黑挂马,往往不是因为系统太烂,而是因为管理太松。识别出系统类型,只是安全运维的第一步。接下来,你要做的是像对待自己的孩子一样,定期体检、打疫苗、加固门窗。

你更倾向模板建站还是定制开发?欢迎评论。