
Exploit PoC pour l'évasion du sandbox des expressions Angular (CVE-2024-54152) permettant une exécution de code à distance (RCE) via une expression malveillante. Inclut un environnement Docker et des scripts de payload en Go et Python.
Angular Expressions fournit des expressions pour le framework web Angular.JS en tant que module autonome. Avant la version 1.4.3, un attaquant peut écrire une expression malveillante qui s'échappe du bac à sable pour exécuter du code arbitraire sur le système. Avec une charge utile plus complexe (non divulguée), on peut obtenir un accès complet à l'exécution de code arbitraire sur le système. Le problème a été corrigé dans la version 1.4.3 d'Angular Expressions. Deux solutions de contournement sont possibles. On peut soit désactiver l'accès à __proto__ globalement, soit s'assurer que l'on utilise la fonction avec un seul argument.
Pour démontrer la vulnérabilité, nous avons créé une simple application Node.js qui utilise la version vulnérable d'Angular Expressions. L'application expose un point de terminaison /parse qui évalue les expressions fournies par l'utilisateur.
Cloner le dépôt :
git clone https://github.com/example/CVE-2024-54152-poc.git
cd CVE-2024-54152-poc
Construire et lancer le conteneur Docker :
docker build -t vulnerable-app .
docker run -p 8080:8080 vulnerable-app
Envoyer la charge utile malveillante : Vous pouvez utiliser le script Go ou Python fourni pour envoyer la charge utile.
En utilisant Go :
go run poc.go
En utilisant Python :
python3 poc.py
Le serveur doit exécuter la charge utile et renvoyer le résultat de la commande id, démontrant ainsi l'exécution de code arbitraire.
Pour atténuer cette vulnérabilité, mettez à jour Angular Expressions vers la version 1.4.3 ou une version ultérieure. Vous pouvez également désactiver l'accès à __proto__ globalement ou vous assurer que la fonction n'est utilisée qu'avec un seul argument.