
Exploit PoC para el escape de sandbox de Angular Expressions (CVE-2024-54152) que logra RCE mediante una expresión maliciosa. Incluye entorno Docker y scripts de payload en Go y Python.
Angular Expressions proporciona expresiones para el framework web Angular.JS como un módulo independiente. Antes de la versión 1.4.3, un atacante puede escribir una expresión maliciosa que escapa del sandbox para ejecutar código arbitrario en el sistema. Con un payload más complejo (no divulgado), se puede obtener acceso completo a la ejecución de código arbitrario en el sistema. El problema ha sido parcheado en la versión 1.4.3 de Angular Expressions. Hay dos posibles soluciones alternativas. Se puede deshabilitar el acceso a __proto__ globalmente o asegurarse de que la función se utilice con un solo argumento.
Para demostrar la vulnerabilidad, hemos creado una aplicación Node.js sencilla que utiliza la versión vulnerable de Angular Expressions. La aplicación expone un endpoint /parse que evalúa expresiones proporcionadas por el usuario.
Clona el repositorio:
git clone https://github.com/example/CVE-2024-54152-poc.git
cd CVE-2024-54152-poc
Construye y ejecuta el contenedor Docker:
docker build -t vulnerable-app .
docker run -p 8080:8080 vulnerable-app
Envía el payload malicioso: Puedes usar el script de Go o Python proporcionado para enviar el payload.
Usando Go:
go run poc.go
Usando Python:
python3 poc.py
El servidor debería ejecutar el payload y devolver el resultado del comando id, lo que demuestra la ejecución de código arbitrario.
Para mitigar esta vulnerabilidad, actualiza Angular Expressions a la versión 1.4.3 o posterior. Alternativamente, puedes deshabilitar el acceso a __proto__ globalmente o asegurarte de que la función se utilice con un solo argumento.