
PoC-Exploit für die Angular-Expressions-Sandbox-Escape (CVE-2024-54152), der über einen bösartigen Ausdruck RCE (Remote Code Execution) erreicht. Enthält Docker-Umgebung und Payload-Skripte in Go und Python.
Angular Expressions stellt Ausdrücke für das Angular.JS-Webframework als eigenständiges Modul bereit. Vor Version 1.4.3 kann ein Angreifer einen bösartigen Ausdruck schreiben, der die Sandbox umgeht, um beliebigen Code auf dem System auszuführen. Mit einer komplexeren (nicht offengelegten) Payload kann man vollen Zugriff auf die Ausführung beliebigen Codes auf dem System erlangen. Das Problem wurde in Version 1.4.3 von Angular Expressions behoben. Zwei mögliche Workarounds sind verfügbar. Man kann entweder den Zugriff auf __proto__ global deaktivieren oder sicherstellen, dass die Funktion nur mit einem einzigen Argument verwendet wird.
Um die Schwachstelle zu demonstrieren, haben wir eine einfache Node.js-Anwendung erstellt, die die verwundbare Version von Angular Expressions verwendet. Die Anwendung stellt einen Endpunkt /parse bereit, der benutzerbereitgestellte Ausdrücke auswertet.
Repository klonen:
git clone https://github.com/example/CVE-2024-54152-poc.git
cd CVE-2024-54152-poc
Docker-Container bauen und ausführen:
docker build -t vulnerable-app .
docker run -p 8080:8080 vulnerable-app
Bösartige Payload senden: Sie können entweder das bereitgestellte Go- oder Python-Skript verwenden, um die Payload zu senden.
Mit Go:
go run poc.go
Mit Python:
python3 poc.py
Der Server sollte die Payload ausführen und das Ergebnis des id-Befehls zurückgeben, was die Ausführung beliebigen Codes demonstriert.
Um diese Schwachstelle zu entschärfen, aktualisieren Sie Angular Expressions auf Version 1.4.3 oder höher. Alternativ können Sie den Zugriff auf __proto__ global deaktivieren oder sicherstellen, dass die Funktion nur mit einem einzigen Argument verwendet wird.