fastjson反序列化漏洞学习

Posted 向阳-Y.

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了fastjson反序列化漏洞学习相关的知识,希望对你有一定的参考价值。

环境复现参照网上教程即可


fastjson(1.2.24)

如何判断是不是fastjson

1.POST请求
2.尝试构造fastjson数据包的错误格式并发送,例如:


	"b":


返回结果如下图,则有可能出现fastjson反序列化漏洞:

fastjson的漏洞利用

poc在网上复制使用即可,

上面的rm://跟的是rmi服务器地址,dnslog里定义了一个dnslog.java文件,如下图

分析POC

先介绍一下fastjson的数据传输格式:
例如原始数据为

class Apple implements Fruit
	private Big_Decimal price;

使用fastjson传输值则为:


	“fruit”:
		"@type":"com.hollis.lab.fastjson.test.Apple",
		"price":0.5
			

1.@type表示引用某类,poc中引用了com.sun.rowset.JdbcRowSetlmpl,因为该类可以让fastjson使用rmi,相当于上面出现的引用了Apple类
2.rmi是什么?rmi可以让一个机器执行另一个机器的命令。
3.为什么要定义一个dataSourceName?和上面Apple的例子一样,后端已经定义了一个dataSourceName,所以可以直接传值

fastjson1.2.47

如何判断是不是fastjson

1.POST请求
2.尝试构造fastjson数据包的错误格式并发送,例如:


	"b":

出现了关键词(com.alibaba.fastjson.JSON)

fastjson的漏洞利用

对应POC如下图

分析POC

fastjson的绕过主要在于调用到com.sun.rowset.JdbcRowSetlmpl这个"危险类",其他的命令格式都是写死的。一旦调用成功则会触发可以执行rmi,但在1.2.47关闭autoType后反而出现了另一个问题:

本篇文章总结自视频:
https://www.bilibili.com/video/BV1Ab4y1d7w1?from=search&seid=1085813155982044542&spm_id_from=333.337.0.0

以上是关于fastjson反序列化漏洞学习的主要内容,如果未能解决你的问题,请参考以下文章

Fastjson反序列化漏洞

fastjson漏洞 - Fastjson1.2.47反序列化漏洞

FastJson反序列化漏洞(实验文章)

fastjson<=1.2.47-反序列化漏洞-命令执行-漏洞复现

Fastjson反序列化漏洞风险通告

Fastjson反序列化漏洞预警