abraxaslabs.tech · github.com/abraxas · @abraxas_null · [email protected] · CVE-2026-22599
Strapi 5.33.1 - Strapi
我是 @abraxas_null。回环实验环境。CVE-2026-22599-Abraxas-Labs.py 会切换到 lab/ 目录并运行 run.sh。
Content-Type Builder 写入 API 数据库查询注入。Yup 会进行校验,但不会剥离未知的 column.defaultTo。Schema builder 将 [value, { isRaw: true }] 合并进 Knex 的 defaultTo(raw())。已在 5.33.2 / 4.26.1 中通过在生产环境中隐藏 CTB 写入 API 修复。
| CVE | CVE-2026-22599 · CVE.org |
| CWE | CWE-89 |
| CVSS | 严重:9.3 CVSS:4.0/AV:N/AC:L/AT:N/PR:H/UI:N/VC:H/VI:H/VA:N/SC:H/SI:H/SA:N |
| 产品 | Strapi |
| 受影响 | 至 5.33.1(含)的所有版本 |
| 已修复 | 5.33.2 / 4.26.1 及更高版本 |
| 认证 | 需认证 |
| 许可证 | GNU Affero GPL v3.0 |
| 实验环境 | 仅 127.0.0.1 |
已认证的管理员 JWT。向 /content-type-builder/content-types 发送 POST 请求,携带原始 DEFAULT 表达式。随后对该类型执行的插入操作会使用攻击者的 SQL。实验环境的判定依据是新建 labitem 行上的 GHSA22599-WITNESS,而非 shell。
我梳理了 createColumn 将 attribute.column 展开覆盖到 defaultTo 上的过程,随后 isRaw 未经净化地调用了 knex raw()。我搭建了 Strapi 5.33.1,注册管理员,提交了该内容类型,并插入了一行数据。
实验环境中已内置失败对照:eval/base64/system 不是判定依据;反弹 shell 不是判定依据;5.33.2 必须不认可该原始元组。
端口 18098。Strapi 5.33.1。管理员 JWT。CTB 写入 API 可达(补丁前:生产环境中同样可达)。./run.sh。
仅针对 127.0.0.1:18098(或你所绑定的回环地址)。
python3 CVE-2026-22599-Abraxas-Labs.py
这会切换到 lab/ 目录并运行 run.sh(执行 compose up,等待管理员就绪,然后运行 poc.py)。
见证:content-manager 条目的 JSON 中包含 GHSA22599-WITNESS。
以下方式会在未获得任何信息的情况下失败:
将 Strapi 更新至 5.33.2 / 4.26.1 或更高版本。针对已修补的构建重新运行 CVE-2026-22599-Abraxas-Labs.py:原始的 DEFAULT 不得被写入。
github.com/strapi/strapi/security/advisories/GHSA-3xcq-8mjw-h6mx
Abraxas Labs:abraxaslabs.tech · github.com/abraxas · @abraxas_null
GNU Affero GPL v3.0。参见 LICENSE。
该客户端仅与回环地址通信。将其用于你并不拥有的系统未获 Abraxas Labs 授权。不提供任何担保。