SuperAPI AI 工具集

python-prototype-pollution

编程与开发

查看项目

更新于 10-16 08:08

技能介绍

用途:面向 Python Web 应用(Flask/Sanic/Django/FastAPI)的原型链污染(又称 Class Pollution、属性注入)检测与利用方法论。利用 Python 类继承与 globals 机制,通过递归合并函数或深度属性设置函数(如 pydash.set_())从普通对象跳出作用域,修改全局变量、Flask 配置、Jinja2 引擎设置,进而实现 RCE、文件读取或权限提升。

主要能力:识别污染入口,包括自定义 merge 函数(def merge(src, dst) + setattr)、pydash.set_()/get()/invoke()、glom、box 等深度设置库;判断 obj 类型(自定义类实例走 init.globals,字典走 class.init.globals);无害探测确认可行性;按决策树选择污染目标,如 pydash.invoke() 直接 RCE、污染 is_admin 提权、污染 SECRET_KEY 伪造 session、污染 Jinja2 定界符绕过 SSTI 过滤、污染 searchpath/静态目录读文件、重置 _got_first_request、PATH 劫持、sys.path 劫持、污染 defaults/kwdefaults。

使用方式:先寻找将用户 JSON 递归合并/设置到 Python 对象的代码模式,识别信号包括接口接受嵌套 JSON 或点分路径字符串、响应头显示 Python/Flask/Werkzeug/uvicorn、源码或 requirements.txt 提及 pydash/merge/update。随后用 curl 发送嵌套 JSON 或点分路径进行无害探测,例如向 /api/merge 提交 {"class": {"name": "test"}},或向 /api/update 提交 {"path": "class.name", "value": "test"}。推荐按低风险到高风险顺序推进:无害探测、信息泄露、权限提升、文件读取、RCE。

适用场景:目标为 Python Web 应用且存在递归合并或深度属性设置接口时的安全测试。

限制:资料未提供具体版本适用范围、成功率或环境依赖;详细利用 Payload、pydash 路径过滤绕过、Cookie 八进制绕过、Sanic 污染链等需查阅其 references 目录下的对应文档。原型链污染可与 SSTI、反序列化组合使用。