dedecms漏洞总结
字数 1811 2025-08-05 08:18:04
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应用安全的重要性,并采取相应防护措施。