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

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

缺陷编号:wooyun-2012-07406

漏洞标题:中关村在线order by语句的盲注思路的分享

相关厂商:中关村在线

漏洞作者: 小雨

提交时间:2012-05-22 12:19

修复时间:2012-05-27 12:20

公开时间:2012-05-27 12:20

漏洞类型:SQL注射漏洞

危害等级:中

自评Rank:5

漏洞状态:漏洞已经通知厂商但是厂商忽略漏洞

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

Tags标签:

4人收藏 收藏
分享漏洞:


漏洞详情

披露状态:

2012-05-22: 细节已通知厂商并且等待厂商处理中
2012-05-27: 厂商已经主动忽略漏洞,细节向公众公开

简要描述:

基于order by内容的盲注

详细说明:

对 http://active.zol.com.cn/diy/bisai.php?mont_h=2009-05&id=12&type=15&order=zj_vote+desc 做安全检测。
尝试数值型注入未果。
不过,看到zj_vote+desc,想到这里也许能利用。
用工具扫它没发现注入。因为mysql的union前不能带order by。
但是order by里的内容是不是就没法注入了?
我不死心啊。
做了一些尝试,发现order by是可以盲注的。
这种方式依赖数据库结果中必须存在一个已知存在不一样数值的列。
不过,既然程序里order by那个字段了,那么那个字段理论上肯定有多种值的。比如本例中的zj_vote字段.

漏洞证明:

看排序。236和239数值相差3,我构造一个abs(zj_vote-237-(expr)) asc.
(expr)为假时,(239-237-0)=2,(236-237-0)=1,236排前面,
(expr)为真时,(239-237-1)=1,(236-237-1)=2,239排前面,
你也许会说,你这个236和239相差是3,当然简单了。如果相差2呢?
比如236和238怎么办?
不卖关子了,直接告诉你吧,他不是相差2么,你可以用abs(zj_vote-236-(expr)*3)啊
http://active.zol.com.cn/diy/bisai.php?mont_h=2009-05&id=12&type=15&order=abs(zj_vote-237-(length(user())>20))+asc


http://active.zol.com.cn/diy/bisai.php?mont_h=2009-05&id=12&type=15&order=abs(zj_vote-237-(length(user())=20))+asc


修复方案:

做一个允许的排序方式组合的数组,排序方式传排序方式的数组下标就可以了。
想直接传字段也可以,检查一下那个排序方式是否在数组里,不是就用默认排序方式。也就安全了。

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


漏洞回应

厂商回应:

危害等级:无影响厂商忽略

忽略时间:2012-05-27 12:20

厂商回复:

漏洞Rank:6 (WooYun评价)

最新状态:

暂无


漏洞评价:

评论

  1. 2012-05-22 12:27 | xsser 认证白帽子 ( 普通白帽子 | Rank:254 漏洞数:18 | 当我又回首一切,这个世界会好吗?)

    用条件表达式+SLEEP函数也可以实现盲注

  2. 2012-05-22 12:30 | 小雨 ( 普通白帽子 | Rank:105 漏洞数:19 | phper)

    @xsser 果然...是我土鳖了。

  3. 2012-05-22 12:33 | xsser 认证白帽子 ( 普通白帽子 | Rank:254 漏洞数:18 | 当我又回首一切,这个世界会好吗?)

    @小雨 木有木有,分享伟大!

  4. 2012-05-22 12:35 | 小雨 ( 普通白帽子 | Rank:105 漏洞数:19 | phper)

    @xsser 哇哈哈,不过,我这个方法拿程序跑起来绝对比sleep方法出结果快。不用睡觉的。

  5. 2012-05-22 16:12 | 汉时明月 ( 实习白帽子 | Rank:40 漏洞数:6 | ‮......核审在正名签 :)

    学习一下,赶快公开啊

  6. 2012-05-22 21:31 | possible ( 普通白帽子 | Rank:373 漏洞数:32 | everything is possible!)

    中关村在线是啥 咋这么火

  7. 2012-05-22 22:14 | 一刀终情 ( 普通白帽子 | Rank:156 漏洞数:28 | ‮‮PKAV技术宅社区-安全爱好者)

    @possible 来了个标准白帽子……

  8. 2012-05-22 23:05 | 小一 ( 实习白帽子 | Rank:32 漏洞数:13 )

    @一刀终情 你也是标准白帽子。。。实习路过。。

  9. 2012-05-22 23:10 | 小雨 ( 普通白帽子 | Rank:105 漏洞数:19 | phper)

    @汉时明月 原理就是通过构造条件表达式,影响页面内容的顺序,根据内容顺序不同实现盲注。

  10. 2012-05-22 23:15 | 小雨 ( 普通白帽子 | Rank:105 漏洞数:19 | phper)

    其实用order by (id-(expr))%2 也行。问题转换成了是奇数排第一还是偶数排第一的问题。

  11. 2012-05-23 08:29 | 一刀终情 ( 普通白帽子 | Rank:156 漏洞数:28 | ‮‮PKAV技术宅社区-安全爱好者)

    @小雨 思路很新,变相的弄出了错误信息~

  12. 2012-05-23 08:53 | possible ( 普通白帽子 | Rank:373 漏洞数:32 | everything is possible!)

    @xsser @一刀终情 啥是标准白帽子 不懂 没有普通了呀

  13. 2012-05-23 09:49 | Pnig0s ( 实习白帽子 | Rank:46 漏洞数:2 | The quiter you are,the more you're able ...)

    @小雨 虽然没看到 不过条件语句+sleep是if(exp,sleep(5),false)这个语句么?

  14. 2012-05-23 12:04 | 小雨 ( 普通白帽子 | Rank:105 漏洞数:19 | phper)

    @Pnig0s 不是。我开始没想到order by里能用sleep。sleep有个弊端,sleep短了,服务器忙的话误差大,sleep长了,跑起来慢。而且sleep长了会影响master和slave的同步,遇到有db状态监控预警的很容易让人发现。

  15. 2012-05-23 12:14 | xsser 认证白帽子 ( 普通白帽子 | Rank:254 漏洞数:18 | 当我又回首一切,这个世界会好吗?)

    @小雨 这里其实很有意思,dos的危害有时比数据泄露危害要大,譬如新闻类站点

  16. 2012-05-23 12:22 | 小雨 ( 普通白帽子 | Rank:105 漏洞数:19 | phper)

    @xsser 的确。任意一处sql注入都有让网站瘫痪的可能。不过,真拿他做DOS攻击,极短时间内就能发现并补好了。最主要的缺点是太明显,太容易补上。

  17. 2012-05-24 12:27 | PiaCa ( 普通白帽子 | Rank:129 漏洞数:10 | 简单点!啪......嚓~~)

    最烦sleep