
PoC en Python y laboratorio Docker para CVE-2026-22599, una inyección SQL autenticada en la API de escritura del Content-Type Builder de Strapi a través de Knex raw defaultTo.
abraxaslabs.tech · github.com/abraxas · @abraxas_null · [email protected] · CVE-2026-22599
Strapi 5.33.1 - Strapi
Soy @abraxas_null. Laboratorio loopback. El cliente es CVE-2026-22599-Abraxas-Labs.py.
Inyección de consulta a base de datos en la API de escritura del Content-Type Builder. Yup valida pero no elimina el column.defaultTo desconocido. El constructor de esquemas fusiona [value, { isRaw: true }] en el defaultTo(raw()) de Knex. Corregido en 5.33.2 / 4.26.1 ocultando las APIs de escritura del CTB en producción.
| CVE | CVE-2026-22599 · CVE.org |
| CWE | CWE-89 |
| CVSS | Crítico: 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 |
| Producto | Strapi |
| Afectadas | todas las versiones hasta la 5.33.1 (inclusive) |
| Parcheadas | 5.33.2 / 4.26.1 y posteriores |
| Autenticación | autenticado |
| Licencia | GNU Affero GPL v3.0 |
| Laboratorio | solo 127.0.0.1 |
JWT de administrador autenticado. POST a /content-type-builder/content-types con una expresión DEFAULT en crudo. La siguiente inserción en ese tipo usa SQL del atacante. El oráculo del laboratorio es GHSA22599-WITNESS en una nueva fila labitem, no una shell.
Mapeé createColumn propagando attribute.column sobre defaultTo, y luego isRaw llamando a knex raw() sin sanear. Levanté Strapi 5.33.1, registré un admin, publiqué el content type, inserté una fila.
Los controles de fallo ya están en el laboratorio: eval/base64/system no es el testigo; una reverse shell no es el testigo; la 5.33.2 no debe aceptar la tupla en crudo.
Puerto 18098. Strapi 5.33.1. JWT de administrador. API de escritura del CTB accesible (pre-parche: también en producción). ./run.sh.
Objetivo solo 127.0.0.1:18098 (o el loopback que hayas enlazado).
cd lab
docker compose up --force-recreate
python3 ../CVE-2026-22599-Abraxas-Labs.py
Testigo: el JSON de entrada del content-manager contiene GHSA22599-WITNESS.
Formas de perder sin aprender nada:
Actualiza Strapi a 5.33.2 / 4.26.1 o superior. Vuelve a ejecutar CVE-2026-22599-Abraxas-Labs.py contra la compilación parcheada: el DEFAULT en crudo no debe asentarse.
github.com/strapi/strapi/security/advisories/GHSA-3xcq-8mjw-h6mx
Abraxas Labs: abraxaslabs.tech · github.com/abraxas · @abraxas_null
GNU Affero GPL v3.0. Ver LICENSE.
El cliente se comunica con loopback. Usarlo contra sistemas que no te pertenecen no está autorizado por Abraxas Labs. Sin garantía.