代码审计:大米CMS注入

0x01 前言

刚刚学习审计找了几个cms练手….

http://wooyun.org/bugs/wooyun-2014-081387

0x02漏洞详情

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

30180504510d354a04c60c6632733c2c0f537e77

2.漏洞原理

于是苦逼看代码,发现thinkphp 看不懂 – –
去学习了一下回来了。。。。
http://blog.wils0n.cn/?id=14

发现登入点在: dami\Web\Lib\Action\MemberAction.class.php
这控制器里面
发现问题代码:

发现username没有过滤就放进去了……我想为什么thinkphp不过滤呢?测试其它的点都够了了。最后发现了。

30180551fcb1e252ab50145324acccffe154a85d

Thinkphp的where查看如果只对字符型的,他是不会过滤的 = =……他过滤数组进去的和对象进去的对象。。。。。。。。。

程序员过分信赖thinkphp的过滤,导致漏洞发生……

3.payload

由于是登入口注入没有办法显示……想了许久给出这个办法:
也就是登入时候用户名:

密码是1

登入进去看见用户名就是注入出的东西了。

301808055f0f944a5b416e5605898e65faba2928

后来厂商说测试不成功….我估计是gpc=on吧

[via@wilson 90sec]