IPBUF安全漏洞报告
English
CVE-2025-11166 CVSS 5.4 中危

CVE-2025-11166:WP Go Maps插件CSRF漏洞

披露日期: 2025-10-09

漏洞信息

漏洞编号
CVE-2025-11166
漏洞类型
跨站请求伪造(CSRF)
CVSS评分
5.4 中危
攻击向量
网络 (AV:N)
认证要求
无需认证 (PR:N)
用户交互
需要交互 (UI:R)
影响产品
WP Go Maps(formerly WP Google Maps)WordPress插件

相关标签

CSRF跨站请求伪造WordPressWP Go MapsWP Google MapsREST API权限绕过插件漏洞CVE-2025-11166

漏洞概述

CVE-2025-11166是WordPress的WP Go Maps(原WP Google Maps)插件中存在的一个跨站请求伪造(CSRF)漏洞。该漏洞影响所有9.0.46及以下版本,由Wordfence安全团队的安全研究员发现并报告。

WP Go Maps是一款广受欢迎的WordPress地图插件,允许用户在网站上嵌入Google地图并添加自定义标记、几何图形等地图元素。由于该插件在实现上存在安全缺陷,暴露了REST API端点用于状态变更操作,但未对CSRF令牌进行充分验证,同时部分破坏性操作可通过GET请求直接访问且没有设置permission_callback权限检查。

该漏洞的CVSS 3.1评分为5.4分,属于中危级别。其攻击向量为网络攻击(AV:N),攻击复杂度低(AC:L),无需权限(PR:N),但需要用户交互(UI:R)。该漏洞对机密性影响较低(C:L),对完整性和可用性影响均为低(I:L, A:L)。

该漏洞的危害在于:未认证的攻击者可以通过构造恶意页面,诱使已登录的管理员点击链接,从而执行创建、更新或删除地图标记及几何要素的操作。此外,匿名用户还可以通过不安全的GET请求触发大量标记的批量删除操作,对网站地图数据造成破坏。

技术细节

该漏洞的核心问题在于WP Go Maps插件的REST API实现存在多处安全缺陷:

1. **CSRF令牌验证缺失**:插件通过AJAX桥接机制暴露了REST API端点用于处理状态变更操作(如创建、更新、删除标记和几何要素),但这些端点未对CSRF令牌(nonce)进行充分验证。WordPress中的CSRF保护通常通过wp_nonce_field生成令牌并在服务端验证,但该插件的REST路由绕过了这一机制。

2. **permission_callback缺失**:根据WordPress REST API规范,自定义路由应当实现permission_callback函数来验证请求者的权限。然而,插件中部分路由(特别是涉及破坏性操作的路由)未设置此回调函数,导致任何用户(包括未认证的匿名用户)都可以调用这些端点。

3. **GET请求处理破坏性操作**:REST API规范建议GET请求仅用于读取操作,不应用于状态变更。但该插件的破坏性操作(如批量删除标记)可通过GET方法触发,这违反了REST设计原则,并使得CSRF攻击更加容易实施(因为GET请求可简单地通过<img>标签触发)。

攻击利用方式:攻击者可以构造一个包含恶意GET请求URL的网页(如<img src="https://target-site.com/wp-json/..." />),当已登录的管理员访问该页面时,浏览器会自动发送请求并附带管理员的认证Cookie,从而在管理员不知情的情况下执行状态变更操作。对于批量删除操作,甚至不需要管理员登录,匿名用户即可直接发送GET请求触发。

攻击链分析

STEP 1
步骤1:信息收集
攻击者通过搜索引擎或WordPress指纹识别工具,识别目标网站是否安装了WP Go Maps插件,并确认其版本低于或等于9.0.46。
STEP 2
步骤2:构造恶意页面
攻击者创建一个包含恶意请求的网页。对于匿名批量删除场景,使用<img>标签触发GET请求;对于管理员CSRF场景,使用JavaScript的XMLHttpRequest或fetch API发送POST请求。
STEP 3
步骤3:诱导受害者访问
攻击者通过钓鱼邮件、社交媒体或其他方式诱使目标管理员访问恶意网页。对于匿名攻击场景,此步骤可省略。
STEP 4
步骤4:触发CSRF请求
浏览器自动发送包含管理员Cookie的请求到目标站点的REST API端点。由于缺乏CSRF令牌验证和权限检查,服务器执行请求中的操作。
STEP 5
步骤5:执行恶意操作
服务器执行创建、更新或删除标记及几何要素的操作,导致地图数据被篡改或破坏。在批量删除场景下,所有地图标记被删除。

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
<!-- CSRF PoC for CVE-2025-11166 - WP Go Maps Mass Marker Deletion via GET request --> <!-- This PoC demonstrates the unauthenticated mass deletion of markers --> <html> <body> <h1>Loading image...</h1> <!-- Trigger mass marker deletion via unsafe GET request --> <img src="https://target-wordpress-site.com/wp-admin/admin-ajax.php?action=wpgmza_delete_all_markers" alt="hidden" /> <!-- Alternative: CSRF to force admin to perform state-changing action --> <script> // Example: CSRF attack to create a malicious marker as the admin var xhr = new XMLHttpRequest(); xhr.open("POST", "https://target-wordpress-site.com/wp-admin/admin-ajax.php", true); xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded"); xhr.withCredentials = true; xhr.send("action=wpgmza_store_marker&marker_data={malicious_data}"); </script> </body> </html>

影响范围

WP Go Maps <= 9.0.46

防御指南

临时缓解措施
在等待官方补丁期间,建议采取以下临时缓解措施:1)限制WordPress管理后台的访问,仅允许可信IP地址访问/wp-admin/目录;2)通过Web应用防火墙(WAF)规则阻止对WP Go Maps相关REST API端点的未授权访问;3)暂时禁用WP Go Maps插件,直到可以升级到修复版本;4)为管理员账户启用双因素认证(2FA),降低CSRF攻击成功的风险;5)监控网站地图数据的变化,及时发现异常操作。

参考链接

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