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

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

缺陷编号:wooyun-2014-086968

漏洞标题:ThinkPHP补丁修复不当导致SQL注入

相关厂商:ThinkPHP

漏洞作者: phith0n

提交时间:2014-12-12 21:24

修复时间:2015-01-18 21:26

公开时间:2015-01-18 21:26

漏洞类型:设计错误/逻辑缺陷

危害等级:高

自评Rank:12

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

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

Tags标签:

4人收藏 收藏
分享漏洞:


漏洞详情

披露状态:

2014-12-12: 细节已通知厂商并且等待厂商处理中
2014-12-13: 厂商主动忽略漏洞,细节向第三方安全合作伙伴开放
2015-02-06: 细节向核心白帽子及相关领域专家公开
2015-02-16: 细节向普通白帽子公开
2015-02-26: 细节向实习白帽子公开
2015-01-18: 细节向公众公开

简要描述:

放学回寝室,发现大家都在吐槽这个补丁。
这补丁我也是看醉了。逻辑有问题啊。。

详细说明:

这是ThinkPHP对这次注入的补丁:https://github.com/liu21st/thinkphp/commit/23c6e130ce75f2132e5b48699363a75ed28e15b2

}elseif(is_array($val) && isset($_REQUEST[$key]) && is_array($_REQUEST[$key])){
$options['where'][$key] = (string)$val;


这逻辑……
简单说一下他的逻辑:$key是数据库字段名字,$val是我传入的参数。
当$val是一个数组,而且$_REQUEST[$key]存在并且$_REQUEST[$key]是一个数组,则强制将我传入的参数$val转换成字符串。
可是,$_REQUEST[$key]和我传入的$val有直接关系吗?
例如

$map['username'] = $_POST['name'];
M('user')->where($map)->find();


这时候$key是username,但实际我传入的是$_POST['name'],是name。thinkphp的开发者是不是把两个“key”给弄混了?是被我找的onethink的例子误导了吗?
我就不找实例了,举个简单例子吧。
如果代码这样写(POST中的key和数据库的key相同,都是uname)

public function test()
{

$u = M('user')->where(array(
'uname' => I('post.uname', '', 'trim')
))->find();
dump($u);
}


按这个确实可以防御,可见:

01.jpg


不过如果两个key不一样:

public function test()
{

$u = M('user')->where(array(
'uname' => I('post.name', '', 'trim')
))->find();
dump($u);
}


继续注入啊:

02.jpg

漏洞证明:

见详情。。。

修复方案:

我自己也没想好。。。

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


漏洞回应

厂商回应:

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

忽略时间:2015-01-18 21:26

厂商回复:

感谢作者,不过鉴于还是前面一个漏洞的补遗,就不再重复确认了。参考前面漏洞的说明和更新~ 官方会更新漏洞补丁

漏洞Rank:10 (WooYun评价)

最新状态:

暂无


漏洞评价:

评论

  1. 2014-12-12 21:29 | 寂寞的瘦子 ( 普通白帽子 | Rank:242 漏洞数:53 | 一切语言转汇编理论)

    沙发

  2. 2014-12-12 21:31 | jusker ( 实习白帽子 | Rank:67 漏洞数:11 | xxoo决定未来)

    以后再用thinkphp直接垛手,还是tornado靠谱

  3. 2014-12-12 21:35 | 乌云 ( 实习白帽子 | Rank:66 漏洞数:14 | a)

    。。。。。。。。。打脸啊。。。

  4. 2014-12-12 21:37 | 泳少 ( 普通白帽子 | Rank:231 漏洞数:79 | ★ 梦想这条路踏上了,跪着也要...)

    补天不是发了吗?

  5. 2014-12-12 21:39 | phith0n 认证白帽子 ( 核心白帽子 | Rank:656 漏洞数:107 | 一个想当文人的黑客~)

    @泳少 那不是我,我也不知道他的方法和我的一样不~

  6. 2014-12-12 21:41 | 子非海绵宝宝 认证白帽子 ( 核心白帽子 | Rank:1044 漏洞数:106 | 发扬海绵宝宝的精神!你不是海绵宝宝,你怎...)

    @phith0n 会不会是因为泄漏问题?感觉像是厂商泄漏出来的

  7. 2014-12-12 21:44 | diguoji ( 普通白帽子 | Rank:323 漏洞数:79 | 中国吉林长春)

    乌云有你们更精彩

  8. 2014-12-12 21:47 | 泳少 ( 普通白帽子 | Rank:231 漏洞数:79 | ★ 梦想这条路踏上了,跪着也要...)

    @phith0n 恩。期待ph牛的精彩思路喔~

  9. 2014-12-12 21:51 | backtrack丶yao ( 普通白帽子 | Rank:290 漏洞数:107 | "><img src=x onerror=alert(666666);> <im...)

    又来了

  10. 2014-12-12 21:53 | Ano_Tom ( 普通白帽子 | Rank:368 漏洞数:40 | Talk is cheap.:)

    @子非海绵宝宝 只因厂商漏洞修复回了这样一句话,"目前的github版本TP和OT均已修正~"https://github.com/liu21st/thinkphp/commit/23c6e130ce75f2132e5b48699363a75ed28e15b2 然后就..

  11. 2014-12-12 22:57 | 风情万种 ( 普通白帽子 | Rank:181 漏洞数:63 | 不再相信爱了)

  12. 2014-12-12 23:01 | luwikes ( 普通白帽子 | Rank:512 漏洞数:77 | 潜心学习~~~)

    piapia

  13. 2014-12-12 23:38 | bey0nd ( 普通白帽子 | Rank:895 漏洞数:142 | 相忘于江湖,不如相濡以沫)

    卧槽

  14. 2014-12-12 23:40 | 秋风 ( 普通白帽子 | Rank:438 漏洞数:44 | 码农一枚,关注互联网安全)

    NB!

  15. 2014-12-13 13:19 | milk ( 路人 | Rank:21 漏洞数:5 | 美女,你肥皂掉了)

    这脸打得好

  16. 2014-12-14 12:53 | 進撃のDanny ( 实习白帽子 | Rank:81 漏洞数:7 )

    https://butian.360.cn/vul/info/id/40907 360上不是已经提交了吗。

  17. 2014-12-14 13:01 | phith0n 认证白帽子 ( 核心白帽子 | Rank:656 漏洞数:107 | 一个想当文人的黑客~)

    @進撃のDanny 360上被人提交了就不许我交乌云了?你咋知道我们方法是不是一样?

  18. 2014-12-14 13:13 | 進撃のDanny ( 实习白帽子 | Rank:81 漏洞数:7 )

    @phith0n 大牛随便提交哪里都行。那位PM你啥了,我们就不知道了,呵呵。

  19. 2014-12-14 13:16 | phith0n 认证白帽子 ( 核心白帽子 | Rank:656 漏洞数:107 | 一个想当文人的黑客~)

    @進撃のDanny 呵呵。身正不怕影儿歪,我敢实名交漏洞,我心里就没鬼。小人之心妒君子之腹的人,我也见多了。

  20. 2014-12-14 13:35 | 進撃のDanny ( 实习白帽子 | Rank:81 漏洞数:7 )

    @phith0n 哦,这么巧PM你后就发现问题了,刚出补丁时干嘛去了呢,私底下交流技术没有问题,哪里提交也没有问题。请不要扯到人品上来,我非小人,你也非君子。

  21. 2014-12-14 13:53 | phith0n 认证白帽子 ( 核心白帽子 | Rank:656 漏洞数:107 | 一个想当文人的黑客~)

    @進撃のDanny 我们聊的什么你知道么?你为何用自己的想法来思考别人?这不算小人之腹么?他加我告诉我让我多看看,我之前没仔细看所以没发现,他提醒我之后我细读了一下发现了,有什么问题么?你把别人想那么肮脏是为何?我敢把我聊天记录给任何人看,他有透露一丝一毫我立马退出圈子。

  22. 2014-12-14 14:20 | 進撃のDanny ( 实习白帽子 | Rank:81 漏洞数:7 )

    @phith0n 我思考什么了,我只是以白帽子身份说下我说看到的,在你眼中别人都是小人之腹就是你君子么,你这样未免有点自大吧?你和他说什么了,不用和我说,也不想知道。基本都是那个问题,看补丁都可以猜到是哪个漏洞,没意思。

  23. 2014-12-14 14:26 | phith0n 认证白帽子 ( 核心白帽子 | Rank:656 漏洞数:107 | 一个想当文人的黑客~)

    @進撃のDanny 君子不会无凭无证质疑别人。并且我眼中大部分人都是君子,楼上泳少也问过我同样的问题。看回复就知道怎样的人是我口中的君子了。

  24. 2014-12-14 14:42 | 進撃のDanny ( 实习白帽子 | Rank:81 漏洞数:7 )

    @phith0n 就是说了下我所看到的而已,没有质疑之意,作为一个白帽子都有言论自由。恩,这样最好。

  25. 2014-12-14 14:50 | phith0n 认证白帽子 ( 核心白帽子 | Rank:656 漏洞数:107 | 一个想当文人的黑客~)

    @進撃のDanny 那就不吵了,我也正好借这件事澄清一下,免得再被其他人误会。

  26. 2014-12-14 23:44 | _Evil ( 普通白帽子 | Rank:418 漏洞数:59 | 万事无他,唯手熟尔。农民也会编程,别指望天...)

    php 5.3以后吗?

  27. 2014-12-15 09:14 | phith0n 认证白帽子 ( 核心白帽子 | Rank:656 漏洞数:107 | 一个想当文人的黑客~)

    @_Evil 不是cookie的问题

  28. 2014-12-15 16:34 | 疯狗 认证白帽子 ( 实习白帽子 | Rank:44 漏洞数:2 | 阅尽天下漏洞,心中自然无码。)

    @phith0n 呃,补了rank,分析的很好啊。

  29. 2014-12-17 17:48 | phith0n 认证白帽子 ( 核心白帽子 | Rank:656 漏洞数:107 | 一个想当文人的黑客~)

    @疯狗 感谢~~真好

  30. 2014-12-17 20:45 | 泳少 ( 普通白帽子 | Rank:231 漏洞数:79 | ★ 梦想这条路踏上了,跪着也要...)

    @phith0n 别吵吧,亲,别人能研究到的,自己也可以。管他咋说,嘴巴长别人嘴里,再说了大家都不知道详情更不知道如何分析这个补丁然后出注入的。所以吧。。。咳咳