
PoC Python et lab Docker pour CVE-2026-22599, une injection SQL authentifiée dans l'API d'écriture du Content-Type Builder de Strapi via le defaultTo brut de Knex.
abraxaslabs.tech · github.com/abraxas · @abraxas_null · [email protected] · CVE-2026-22599
Strapi 5.33.1 - Strapi
Je suis @abraxas_null. Labo loopback. Le client est CVE-2026-22599-Abraxas-Labs.py.
Injection dans les requêtes de base de données via l'API d'écriture du Content-Type Builder. Yup valide mais ne supprime pas le column.defaultTo inconnu. Le constructeur de schéma fusionne [value, { isRaw: true }] dans le defaultTo(raw()) de Knex. Corrigé dans 5.33.2 / 4.26.1 en masquant les API d'écriture du CTB en production.
| CVE | CVE-2026-22599 · CVE.org |
| CWE | CWE-89 |
| CVSS | Critique : 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 |
| Produit | Strapi |
| Affecté | toutes les versions jusqu'à 5.33.1 (inclus) |
| Corrigé | 5.33.2 / 4.26.1 et versions ultérieures |
| Auth | authentifié |
| Licence | GNU Affero GPL v3.0 |
| Labo | 127.0.0.1 uniquement |
JWT d'administrateur authentifié. POST /content-type-builder/content-types avec une expression DEFAULT brute. L'insertion suivante sur ce type utilise le SQL de l'attaquant. L'oracle du labo est GHSA22599-WITNESS sur une nouvelle ligne labitem, pas un shell.
J'ai cartographié createColumn qui étale attribute.column sur defaultTo, puis isRaw qui appelle knex raw() sans assainissement. J'ai monté Strapi 5.33.1, enregistré un admin, posté le content type, inséré une ligne.
Les contrôles d'échec sont déjà dans le labo : eval/base64/system n'est pas le témoin ; un reverse shell n'est pas le témoin ; 5.33.2 ne doit pas honorer le tuple brut.
Port 18098. Strapi 5.33.1. JWT d'administrateur. API d'écriture du CTB accessible (pré-patch : également en production). ./run.sh.
Cible uniquement 127.0.0.1:18098 (ou le loopback que vous avez lié).
cd lab
docker compose up --force-recreate
python3 ../CVE-2026-22599-Abraxas-Labs.py
Témoin : le JSON de l'entrée content-manager contient GHSA22599-WITNESS.
Façons d'échouer sans rien apprendre :
Mettez à jour Strapi vers 5.33.2 / 4.26.1 ou une version ultérieure. Relancez CVE-2026-22599-Abraxas-Labs.py contre la version corrigée : le DEFAULT brut ne doit pas aboutir.
github.com/strapi/strapi/security/advisories/GHSA-3xcq-8mjw-h6mx
Abraxas Labs : abraxaslabs.tech · github.com/abraxas · @abraxas_null
GNU Affero GPL v3.0. Voir LICENSE.
Le client communique avec le loopback. Son utilisation contre des systèmes que vous ne possédez pas n'est pas autorisée par Abraxas Labs. Aucune garantie.