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

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

缺陷编号:wooyun-2014-077827

漏洞标题:CuuMall最新版sql注入(可买任意商品,任意刷钱,想干啥就干啥)

相关厂商:cuumall.com

漏洞作者: 路人甲

提交时间:2014-10-02 09:54

修复时间:2014-12-31 09:56

公开时间:2014-12-31 09:56

漏洞类型:SQL注射漏洞

危害等级:高

自评Rank:20

漏洞状态:厂商已经确认

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

Tags标签:

4人收藏 收藏
分享漏洞:


漏洞详情

披露状态:

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

简要描述:

CuuMall免费网上商城系统基于企业级MVC技术架构,安全、稳定,可保证同时在线人数达10000人左右,能适应不同领域的公司企业,文件缓存机制、数据库缓存机制,保证系统稳定运行,多种功能以满足不同客户网上开店的需求。

详细说明:

// 获取某个Cookie值
static function get($name) {
$value = $_COOKIE[C('COOKIE_PREFIX').$name];
$value = unserialize(base64_decode($value));
return $value;
}


获取cookie操作,只是做了一次base解码。
再来看cookie的账号登陆:

$co = new Cookie( );
$username = ($co->get( "GUESTCOOK" )."mall-m-name" );
$password = ($co->get( "GUESTCOOK" )."mall-m-pass" );
if ( empty( $username ) || empty( $password ) )
{
$this->assign( "waitSecond", 3 );
$this->assign( "msgTitle", "请登录后购买" );
$this->assign( "jumpUrl", "__APP__/home/login" );
$this->error( "请登录后购买" );
exit( );
}
$m_member = new Model( "m_member" );
$d_m_member = $m_member->where( "username='".$username."'" )->find( );
if ( empty( $d_m_member ) )
{
$this->assign( "waitSecond", 3 );
$this->assign( "msgTitle", "请登录后购买" );
$this->assign( "jumpUrl", "__APP__/home/login" );
$this->error( "请登录后购买" );
exit( );
}
if ( $password != $d_m_member['password'] )
{
$this->assign( "waitSecond", 3 );
$this->assign( "msgTitle", "请登录后购买" );
$this->assign( "jumpUrl", "__APP__/home/login" );
$this->error( "请登录后购买" );
exit( );
}


PS:由于文件加密的,这里没有解密完全,导致这边代码有点怪异。但不影响审计
从cookie中获取到username和cookie以后,应该做了某一个操作(具体就不知道了,代码看不出来),然后就带入到了数据库中执行,从官网测试上看,这边肯定不是转义,应该是一次去空操作。
这样登录的sql注入产生了,这个漏洞在大多数需要登录的文件中都存在。等于获取了一个session。
再来看付款代码:

$username = ( $coo->get( "GUESTCOOK" )."mall-m-name" );
$mem = new Model( "m_member" );
$d_mem = $mem->where( "username='".$username."'" )->find( );
if ( $money <= $d_mem['money'] )
{
$data['money'] = $d_mem['money'] - $money;
$data['xiaofei'] = $d_mem['xiaofei'] + $money;
$data['jifen'] = $d_mem['jifen'] + $jifen;
$mem->where( "username='".$username."'" )->save( $data );


又是一个cookie 注入,这样我们就可以直接控制$d_mem的值,想买任何都系,直接控制money字段就行了。 最后还保存了data,达到刷钱地步。 如果有体现功能,那真是想要多少钱就是多少钱啊

漏洞证明:

BaiduHi_2014-9-29_18-18-41.png

修复方案:

建议整个系统重构吧 漏洞太多了 不忍直视

版权声明:转载请注明来源 路人甲@乌云


漏洞回应

厂商回应:

危害等级:高

漏洞Rank:20

确认时间:2014-10-09 13:19

厂商回复:

感谢,已经重构了

最新状态:

暂无