
Exploitierbares Ziel für CVE-2017-5638
Vollständig basierend auf https://github.com/piesecurity/apache-struts2-CVE-2017-5638
Ein realistisches Szenario, in dem ein Referenzprojekt für ein Framework auf einem Container bereitgestellt wird, aber mit verheerenden Konsequenzen. Um sich damit vertraut zu machen, sieh dir den Code an und kompiliere ihn. Untersuche auch das Dockerfile – fällt dir etwas Bestimmtes auf?
Zeigt, wie leicht alltägliche Entscheidungen und mehrere Schwachstellen in Kombination ausgenutzt werden können.
Voraussetzungen:
Zur Vorbereitung:
./mvnw clean package im Projektverzeichnis ausführendocker build -t hackme \. ausführendocker run -d -p 9080:8080 hackme ausführenHinweis: Wenn Docker nicht installiert ist, kannst du ./mvnw jetty:run ausführen.
Um mit dem Testen von RCE zu beginnen, führe die Datei exploit.py aus:
python exploit.py http://localhost:9080/orders/3 "CMD" ausführenjava -jar jython*.jar exploit.py http://localhost:9080/orders/3 "CMD" ausProbiere verschiedene CMDs aus, zum Beispiel:
pwd – wo sind wir?whomai – als welcher Benutzer führen wir das aus?ls -la – was ist in meinem Verzeichnis?ls / – was ist auf meiner Maschine?ls /etc – was können wir noch finden?Verwende das Component Information Panel des Nexus Lifecycle, um eine nicht verwundbare Version von struts2-core zu identifizieren.
Aktualisiere die POM-Datei auf diese Version und baue neu. Du kannst auch das Docker-Image neu erstellen und ausführen, um den Angriff erneut zu versuchen.
Sieh auch in den Issues hier nach, um die DepShield-Ergebnisse zu sehen.
https://github.com/apache/struts/tree/master/apps/rest-showcase
README.txt - Rest Showcase Webapp
Rest Showcase is a simple example of REST app build with the REST plugin.
For more on getting started with Struts, see
* http://cwiki.apache.org/WW/home.html
I18N:
=====
Please note that this project was created with the assumption that it will be run
in an environment where the default locale is set to English. This means that
the default messages defined in package.properties are in English. If the default
locale for your server is different, then rename package.properties to package_en.properties
and create a new package.properties with proper values for your default locale.