
Python-PoC und Docker-Lab für CVE-2026-22599, eine authentifizierte SQL-Injection in Strapis Content-Type-Builder-Write-API über Knex raw defaultTo.
abraxaslabs.tech · github.com/abraxas · @abraxas_null · [email protected] · CVE-2026-22599
Strapi 5.33.1 - Strapi
Ich bin @abraxas_null. Loopback-Lab. CVE-2026-22599-Abraxas-Labs.py wechselt per chdir in lab/ und führt run.sh aus.
Content-Type Builder Write-API-Datenbankabfrage-Injection. Yup validiert, entfernt aber unbekanntes column.defaultTo nicht. Der Schema-Builder führt [value, { isRaw: true }] in Knex defaultTo(raw()) zusammen. Behoben in 5.33.2 / 4.26.1 durch Ausblenden der CTB-Write-APIs in der Produktion.
| CVE | CVE-2026-22599 · CVE.org |
| CWE | CWE-89 |
| CVSS | Kritisch: 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 |
| Produkt | Strapi |
| Betroffen | alle Versionen bis einschließlich 5.33.1 |
| Gepatcht | 5.33.2 / 4.26.1 und später |
| Auth | authentifiziert |
| Lizenz | GNU Affero GPL v3.0 |
| Lab | nur 127.0.0.1 |
Authentifiziertes Administrator-JWT. POST /content-type-builder/content-types mit einem rohen DEFAULT-Ausdruck. Der nächste Insert auf diesem Typ verwendet das SQL des Angreifers. Das Orakel im Lab ist GHSA22599-WITNESS auf einer neuen labitem-Zeile, keine Shell.
Ich habe nachvollzogen, wie createColumn attribute.column über defaultTo verteilt und dann isRaw knex raw() unsanitisiert aufruft. Ich habe Strapi 5.33.1 aufgesetzt, einen Admin registriert, den Content-Type gepostet und eine Zeile eingefügt.
Fail-Controls sind bereits im Lab enthalten: eval/base64/system ist nicht der Zeuge; eine Reverse Shell ist nicht der Zeuge; 5.33.2 darf das rohe Tupel nicht berücksichtigen.
Port 18098. Strapi 5.33.1. Administrator-JWT. CTB-Write-API erreichbar (vor dem Patch: auch in der Produktion). ./run.sh.
Ziel ausschließlich 127.0.0.1:18098 (oder das Loopback, an das du gebunden hast).
python3 CVE-2026-22599-Abraxas-Labs.py
Das wechselt per chdir in lab/ und führt run.sh aus (compose up, auf Admin warten, dann poc.py).
Witness: Das Entry-JSON des Content-Managers enthält GHSA22599-WITNESS.
Möglichkeiten, ohne etwas zu lernen, zu scheitern:
Aktualisiere Strapi auf 5.33.2 / 4.26.1 oder neuer. Führe CVE-2026-22599-Abraxas-Labs.py erneut gegen den gepatchten Build aus: Das rohe DEFAULT darf nicht landen.
github.com/strapi/strapi/security/advisories/GHSA-3xcq-8mjw-h6mx
Abraxas Labs: abraxaslabs.tech · github.com/abraxas · @abraxas_null
GNU Affero GPL v3.0. Siehe LICENSE.
Der Client kommuniziert über Loopback. Die Verwendung gegen Systeme, die Ihnen nicht gehören, ist von Abraxas Labs nicht autorisiert. Keine Gewährleistung.