
PoC-эксплойт для обхода песочницы Angular Expressions (CVE-2024-54152), обеспечивающий RCE через вредоносное выражение. Включает среду Docker и скрипты полезной нагрузки на Go и Python.
Angular Expressions предоставляет выражения для веб-фреймворка Angular.JS в качестве отдельного модуля. До версии 1.4.3 злоумышленник может написать вредоносное выражение, которое выходит за пределы песочницы для выполнения произвольного кода в системе. С помощью более сложной (не раскрытой) полезной нагрузки можно получить полный доступ к выполнению произвольного кода в системе. Проблема исправлена в версии 1.4.3 Angular Expressions. Доступны два возможных обходных пути. Можно либо отключить доступ к __proto__ глобально, либо убедиться, что функция используется только с одним аргументом.
Чтобы продемонстрировать уязвимость, мы создали простое приложение Node.js, которое использует уязвимую версию Angular Expressions. Приложение предоставляет конечную точку /parse, которая вычисляет выражения, предоставленные пользователем.
Клонируйте репозиторий:
git clone https://github.com/example/CVE-2024-54152-poc.git
cd CVE-2024-54152-poc
Соберите и запустите Docker-контейнер:
docker build -t vulnerable-app .
docker run -p 8080:8080 vulnerable-app
Отправьте вредоносную полезную нагрузку: Вы можете использовать либо предоставленный скрипт на Go, либо скрипт на Python для отправки полезной нагрузки.
С помощью Go:
go run poc.go
С помощью Python:
python3 poc.py
Сервер должен выполнить полезную нагрузку и вернуть результат команды id, что демонстрирует выполнение произвольного кода.
Чтобы смягчить эту уязвимость, обновите Angular Expressions до версии 1.4.3 или новее. В качестве альтернативы можно отключить доступ к __proto__ глобально или убедиться, что функция используется только с одним аргументом.