
针对 Angular Expressions 沙箱逃逸(CVE-2024-54152)的 PoC 漏洞利用,通过恶意表达式实现 RCE。包含 Docker 环境以及 Go 和 Python 编写的 payload 脚本。
Angular Expressions 为 Angular.JS Web 框架提供表达式支持,作为一个独立模块。在 1.4.3 版本之前,攻击者可以编写恶意表达式来逃逸沙箱,从而在系统上执行任意代码。通过一个更复杂(未公开)的载荷,攻击者可以在系统上获得完整的任意代码执行能力。该问题已在 Angular Expressions 1.4.3 版本中修复。有两种可行的规避方案:一种是全局禁用对 __proto__ 的访问,另一种是确保该函数仅使用一个参数调用。
为了演示该漏洞,我们创建了一个使用存在漏洞的 Angular Expressions 版本的简单 Node.js 应用程序。该应用暴露了一个 /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__ 的访问,或确保该函数仅使用一个参数调用。