dedecms漏洞总结
字数 1811 2025-08-05 08:18:04

DedeCMS漏洞分析与利用教学文档

一、环境搭建

  1. 下载DedeCMS源码放到phpstudy目录下
  2. 访问安装页面:127.0.0.1/DedeCMS/uploads/install/index.php
  3. 完成环境配置
  4. 默认后台路径:http://127.0.0.1/dede/login.php,默认账号密码:admin/admin
  5. 修改绝对路径和管理员密码
  6. 更新网站数据

二、漏洞分析及复现

1. 前台任意用户密码修改漏洞

漏洞成因

  • 密码重置功能存在PHP弱类型比较问题
  • 用户未设置密保问题时可以绕过验证直接修改密码
  • 管理员账户默认不设置密保问题

漏洞代码分析

  • /member/resetpassword.php中75行开始处理验证密保问题
  • 关键判断:if($row['safequestion'] == $safequestion && $row['safeanswer'] == $safeanswer)
  • 未设置密保时safequestion默认为'0',safeanswer为空
  • '0'被empty()判断为空,赋值为'',但'0' != ''

利用方法

  • 使用'00'、'000'、'0.0'等字符串绕过
  • 构造payload:dopost=safequestion&id=1&userid=admin&safequestion=00&safeanswer=0&vdcode=Vs4p

复现步骤

  1. 开启会员功能
  2. 注册测试账号
  3. 通过"安全问题取回"功能
  4. 使用BP修改请求包
  5. 进入返回的URL修改密码

2. 前台文件上传漏洞

漏洞成因

  • /include/uploadsafe.inc.php全局过滤不完善
  • /include/dialog/select_images_post.php再次过滤文件名时粗暴替换特殊字符

利用方法

  • 构造特殊文件名如1.jpg.p*hp绕过过滤
  • 上传图片马:copy 1.jpg/b + 2.php/a 3.jpg

复现步骤

  1. 登录测试用户
  2. 进入内容中心
  3. 上传图片马
  4. 修改后缀名为.php
  5. 使用蚁剑连接

3. 任意用户登录漏洞

漏洞原理

  • 会员模块使用客户端session认证
  • Cookie中写入用户ID和ID__ckMd5签名
  • 主页逻辑漏洞可返回指定uid的MD5散列值

利用方法

  • 伪造DedUserID和对应MD5
  • 使用用户名'000001'伪造ID为1的用户

复现步骤

  1. 访问/member/index.php控制uid参数
  2. 获取返回的MD5值
  3. 伪造Cookie中的DedUserIDID__ckMd5

4. 后台getshell漏洞(CVE-2018-9175)

漏洞一

  • /dede/sys_verifies.php写配置文件过滤不足
  • $refiles数组内容写入modifytmp.inc
  • 利用substr去掉前三个字符的特性绕过过滤

利用方法

  • 构造payload:refiles[]=\%22;phpinfo();die();//

漏洞二

  • /dede/sys_cache_up.php写配置文件
  • 直接从数据库读取写入PHP文件无过滤
  • 将shell写入数据库:stepselect_main.php?action=addenum_save&ename=123&egroup=;phpinfo();//&islogin=1

5. 后台文件上传getshell(CVE-2019-8362)

漏洞成因

  • 上传zip文件解压缩时文件名过滤不严
  • 仅检查文件名中是否包含.jpg/.png/.gif

利用方法

  • 构造文件名如1.jpg.php
  • 上传压缩包后解压

复现步骤

  1. 创建1.php并改名为1.jpg.php
  2. 压缩为1.zip
  3. 在文件式管理器中上传
  4. 通过album_add.php解压
  5. 访问解压后的文件

三、防护建议

  1. 对所有用户输入进行严格过滤
  2. 使用===代替==进行严格比较
  3. 限制文件上传类型和内容
  4. 及时更新CMS版本
  5. 修改默认后台路径和管理员密码
  6. 限制会员功能权限

四、总结

DedeCMS存在多种类型漏洞,包括弱类型比较、文件上传、权限绕过等。通过分析这些漏洞的成因和利用方法,可以更好地理解Web应用安全的重要性,并采取相应防护措施。

DedeCMS漏洞分析与利用教学文档 一、环境搭建 下载DedeCMS源码放到phpstudy目录下 访问安装页面: 127.0.0.1/DedeCMS/uploads/install/index.php 完成环境配置 默认后台路径: http://127.0.0.1/dede/login.php ,默认账号密码:admin/admin 修改绝对路径和管理员密码 更新网站数据 二、漏洞分析及复现 1. 前台任意用户密码修改漏洞 漏洞成因 : 密码重置功能存在PHP弱类型比较问题 用户未设置密保问题时可以绕过验证直接修改密码 管理员账户默认不设置密保问题 漏洞代码分析 : /member/resetpassword.php 中75行开始处理验证密保问题 关键判断: if($row['safequestion'] == $safequestion && $row['safeanswer'] == $safeanswer) 未设置密保时 safequestion 默认为'0', safeanswer 为空 '0'被 empty() 判断为空,赋值为'',但'0' != '' 利用方法 : 使用'00'、'000'、'0.0'等字符串绕过 构造payload: dopost=safequestion&id=1&userid=admin&safequestion=00&safeanswer=0&vdcode=Vs4p 复现步骤 : 开启会员功能 注册测试账号 通过"安全问题取回"功能 使用BP修改请求包 进入返回的URL修改密码 2. 前台文件上传漏洞 漏洞成因 : /include/uploadsafe.inc.php 全局过滤不完善 /include/dialog/select_images_post.php 再次过滤文件名时粗暴替换特殊字符 利用方法 : 构造特殊文件名如 1.jpg.p*hp 绕过过滤 上传图片马: copy 1.jpg/b + 2.php/a 3.jpg 复现步骤 : 登录测试用户 进入内容中心 上传图片马 修改后缀名为.php 使用蚁剑连接 3. 任意用户登录漏洞 漏洞原理 : 会员模块使用客户端session认证 Cookie中写入用户ID和 ID__ckMd5 签名 主页逻辑漏洞可返回指定uid的MD5散列值 利用方法 : 伪造 DedUserID 和对应MD5 使用用户名'000001'伪造ID为1的用户 复现步骤 : 访问 /member/index.php 控制uid参数 获取返回的MD5值 伪造Cookie中的 DedUserID 和 ID__ckMd5 4. 后台getshell漏洞(CVE-2018-9175) 漏洞一 : /dede/sys_verifies.php 写配置文件过滤不足 $refiles 数组内容写入 modifytmp.inc 利用 substr 去掉前三个字符的特性绕过过滤 利用方法 : 构造payload: refiles[]=\%22;phpinfo();die();// 漏洞二 : /dede/sys_cache_up.php 写配置文件 直接从数据库读取写入PHP文件无过滤 将shell写入数据库: stepselect_main.php?action=addenum_save&ename=123&egroup=;phpinfo();//&islogin=1 5. 后台文件上传getshell(CVE-2019-8362) 漏洞成因 : 上传zip文件解压缩时文件名过滤不严 仅检查文件名中是否包含.jpg/.png/.gif 利用方法 : 构造文件名如 1.jpg.php 上传压缩包后解压 复现步骤 : 创建 1.php 并改名为 1.jpg.php 压缩为 1.zip 在文件式管理器中上传 通过 album_add.php 解压 访问解压后的文件 三、防护建议 对所有用户输入进行严格过滤 使用 === 代替 == 进行严格比较 限制文件上传类型和内容 及时更新CMS版本 修改默认后台路径和管理员密码 限制会员功能权限 四、总结 DedeCMS存在多种类型漏洞,包括弱类型比较、文件上传、权限绕过等。通过分析这些漏洞的成因和利用方法,可以更好地理解Web应用安全的重要性,并采取相应防护措施。