前言
织梦CMS(DedeCMS)是国内老牌的内容管理系统,虽然现在新项目用得少了,但存量站点依然不少。这篇文章记录了一次完整的DedeCMS渗透测试过程,从信息收集到最终GetShell,涵盖了多个常见的Web安全漏洞。
一、信息收集
1.1 目录扫描
用御剑对目标站点进行目录扫描,发现了两个关键信息:
robots.txt泄露目录结构:

robots.txt里暴露了后台路径和一些敏感目录,这在实际渗透中很常见——很多开发不重视robots.txt的配置,把不该暴露的路径都写进去了。
源码备份文件泄露:
扫描发现 web.zip 存在且可直接下载。源码泄露是高危漏洞,攻击者拿到源码后可以本地审计,找到SQL注入、文件上传等漏洞,效率比黑盒测试高十倍。

1.2 信息收集小结
这一步拿到了两个关键信息:CMS类型(DedeCMS)和源码备份。有了这两样东西,后面的渗透基本就是”开卷考试”了。
防御建议:
- robots.txt不要暴露敏感路径,只写需要屏蔽爬虫的规则
- 删除服务器上的备份文件(.zip、.rar、.bak、.sql),不要图省事留在Web目录下
- 配置Nginx/Apache禁止访问敏感后缀文件
二、前台任意用户密码修改
2.1 漏洞发现
查到DedeCMS存在前台任意用户密码修改的Nday漏洞。利用条件是知道目标用户的ID和安全问题答案。
2.2 利用过程
进入找回密码功能,Burp抓包,构造请求:
dopost=safequestion&id=2&userid=admin&safequestion=00&safeanswer=0&vdcode=Vs4p

这里的关键是 safequestion=00 和 safeanswer=0——利用的是DedeCMS对安全问题校验的逻辑缺陷。当安全问题为空时,校验逻辑直接跳过,返回了密码重置链接。

拿到重置链接后,直接修改admin用户的密码,然后前台登录成功。

2.3 发现越权
登录后发现用户空间页面存在水平越权:
http://target/member/index.php?uid=hejun

修改 uid 参数即可查看任意用户的资料页,确认 hejun 是管理员账号。

防御建议:
- 安全问题校验必须严格匹配,不能因为答案为空就跳过校验
- 密码重置链接应设置短时效(5分钟)且一次性使用
- 用户资料页的uid参数应从session中获取,不信任前端传参
三、后台爆破与验证码绕过
3.1 后台目录爆破
用DedeCMS专用的后台目录爆破工具,针对Windows部署的DedeCMS进行目录猜解,找到后台登录地址。

3.2 验证码绕过
后台登录有验证码保护,普通爆破工具用不了。这里用了 xiapao(BP插件,基于机器学习的验证码识别),配置好识别接口后,把登录请求发到Intruder模块,配合常见密码字典进行爆破。


最终爆破出管理员密码。
3.3 一个有趣的发现
用前台修改的密码尝试登录后台,发现登录失败。推测DedeCMS的前台用户表和后台管理员表是分开的——前台改的是 member 表,后台用的是 admin 表。这也解释了为什么前台越权找到的管理员账号无法直接从前台登录。

防御建议:
- 验证码必须在服务端校验,且一次失效,不能被前端绕过
- 后台登录应加账号锁定策略(5次失败锁定15分钟)
- 后台地址不要用默认路径,改一个不规则的名字
- 密码强度要求:至少8位,包含大小写字母+数字+特殊字符
四、后台GetShell
4.1 上传Webshell
登录后台后,利用DedeCMS后台的模板编辑功能,直接写入一句话木马:
<?php eval($_POST['cmd']); ?>

DedeCMS后台默认允许编辑模板文件,而且没有对PHP代码做过滤。这是很多CMS后台的通病——给了管理员太大的权限,一旦后台被突破,服务器就等于丢了。
4.2 蚁剑连接
用蚁剑(AntSword)连接上传的Webshell,成功拿到服务器的命令执行权限,渗透测试完成。

防御建议:
- 后台模板编辑功能应该禁用,或者限制只能编辑特定目录
- 对用户输入做PHP代码过滤,禁止 <?php、eval、exec 等危险函数
- Web目录设置只读权限,Web进程用户不能写入文件
- 部署WAF,拦截Webshell上传行为
五、完整攻击链总结
| 步骤 | 操作 | 利用的漏洞 |
|---|---|---|
| 1 | 御剑扫描目录 | robots.txt泄露 + 源码备份泄露 |
| 2 | 前台任意密码修改 | DedeCMS Nday – 安全校验逻辑绕过 |
| 3 | 用户空间越权 | 水平越权(uid参数可控) |
| 4 | 后台目录爆破 | 默认后台路径未修改 |
| 5 | 后台密码爆破 | 弱口令 + 验证码可绕过 |
| 6 | 模板写入Webshell | 后台模板编辑无限制 |
| 7 | 蚁剑连接 | 一句话木马执行 |
六、经验总结
这次渗透的核心思路就是:信息收集拿到CMS类型和源码 → 查Nday利用 → 突破前台 → 爆破后台 → GetShell。每一步都不复杂,但串起来就是一条完整的攻击链。
几个值得注意的点:
- 源码泄露是最大的隐患:拿到源码后所有漏洞都摆在明面上,比黑盒测试效率高太多
- 弱口令依然是最常见的突破口:这种密码在现在还有人用
- 前后台分离不等于安全:前台用户表和管理员表分开,但前台的漏洞照样能帮攻击者定位管理员账号
- 后台权限过大是通病:模板编辑、文件管理这些功能,一旦后台被突破,服务器基本就没了
