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

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

缺陷编号:wooyun-2011-03682

漏洞标题:新浪SAE网络沙箱突破

相关厂商:新浪

漏洞作者: 结界师

提交时间:2011-12-20 14:59

修复时间:2012-02-03 15:00

公开时间:2012-02-03 15:00

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

危害等级:中

自评Rank:8

漏洞状态:厂商已经确认

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

Tags标签:

4人收藏 收藏
分享漏洞:


漏洞详情

披露状态:

2011-12-20: 细节已通知厂商并且等待厂商处理中
2011-12-20: 厂商已经确认,细节仅向厂商公开
2011-12-30: 细节向核心白帽子及相关领域专家公开
2012-01-09: 细节向普通白帽子公开
2012-01-19: 细节向实习白帽子公开
2012-02-03: 细节向公众公开

简要描述:

此次问题较早发现,目前已经通知SAE进行修复,主要是由于在实现沙箱的时候对于某些协议处理不周导致

详细说明:

sae支持的流非常多,但是真正被封装起来的其实只有一个http协议,封装的目的是对用户产生的请求能够进行控制,譬如限制访问的目的地址和对请求数量等做更精粒度的控制,而对于原生的譬如ftp协议并没有进行限制,这个时候其实我们可以利用这个做一个简单的内网端口扫描器:

echo(file_get_contents('ftp://127.0.0.1:22/111'));


由于sae对错误的处理偏向开发者太过有好,导致通过捕获错误,我们可以看到是否是网络不可达,端口未开放还是协议不匹配,这样我们甚至可以探测出sae与内部网络的隔离程度
ftp协议毕竟不是特别友好,而对于已经封装的http协议我们发现stream_wrapper_unregister和stream_wrapper_restore并没有禁用,于是通过这两个函数我们可以恢复原生的http请求,向所有我们想发起的地方发起http请求了:

if ( in_array( "http", stream_get_wrappers() ) ) {
stream_wrapper_unregister("http");
}
stream_wrapper_restore("http"));

漏洞证明:

修复方案:

目前SAE已经封禁掉相关函数和修复了相关代码

版权声明:转载请注明来源 结界师@乌云


漏洞回应

厂商回应:

危害等级:中

漏洞Rank:8

确认时间:2011-12-20 15:44

厂商回复:

非常感谢结界师对新浪安全做出的贡献,目前该问题已经修复

最新状态:

暂无


漏洞评价:

评论

  1. 2012-03-29 23:56 | _Evil ( 普通白帽子 | Rank:418 漏洞数:59 | 万事无他,唯手熟尔。农民也会编程,别指望天...)

    http://www.80sec.com/sae-security.html 关联地址