
Strapi के Content-Type Builder write API में Knex raw defaultTo के माध्यम से एक authenticated SQL injection, CVE-2026-22599 के लिए Python PoC और Docker lab।
abraxaslabs.tech · github.com/abraxas · @abraxas_null · [email protected] · CVE-2026-22599
Strapi 5.33.1 - Strapi
मैं @abraxas_null हूँ। Loopback लैब। क्लाइंट CVE-2026-22599-Abraxas-Labs.py है।
Content-Type Builder write API डेटाबेस-क्वेरी इंजेक्शन। Yup मान्य करता है लेकिन अज्ञात column.defaultTo को हटाता नहीं। Schema builder [value, { isRaw: true }] को Knex defaultTo(raw()) में मर्ज करता है। 5.33.2 / 4.26.1 में प्रोडक्शन में CTB write APIs को छिपाकर ठीक किया गया।
| CVE | CVE-2026-22599 · CVE.org |
| CWE | CWE-89 |
| CVSS | Critical: 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 |
| Product | Strapi |
| Affected | सभी वर्शन 5.33.1 तक (सम्मिलित) |
| Patched | 5.33.2 / 4.26.1 और बाद के |
| Auth | authenticated |
| License | GNU Affero GPL v3.0 |
| Lab | केवल 127.0.0.1 |
Authenticated administrator JWT। POST /content-type-builder/content-types एक raw DEFAULT expression के साथ। उस टाइप पर अगला insert हमलावर के SQL का उपयोग करता है। लैब oracle एक नई labitem पंक्ति पर GHSA22599-WITNESS है, शेल नहीं।
मैंने createColumn को मैप किया जो attribute.column को defaultTo पर फैलाता है, फिर isRaw जो knex raw() को बिना सैनिटाइज़ किए कॉल करता है। Strapi 5.33.1 खड़ा किया, admin रजिस्टर किया, content type पोस्ट किया, एक पंक्ति insert की।
लैब में पहले से मौजूद fail-controls: eval/base64/system witness नहीं है; reverse shell witness नहीं है; 5.33.2 को raw tuple का पालन नहीं करना चाहिए।
पोर्ट 18098। Strapi 5.33.1। Administrator JWT। CTB write API पहुँच योग्य (pre-patch: प्रोडक्शन में भी)। ./run.sh।
लक्ष्य केवल 127.0.0.1:18098 (या जो loopback आपने बाइंड किया है)।
cd lab
docker compose up --force-recreate
python3 ../CVE-2026-22599-Abraxas-Labs.py
Witness: content-manager entry JSON में GHSA22599-WITNESS शामिल है।
बिना कुछ सीखे हारने के तरीके:
Strapi को 5.33.2 / 4.26.1 या नए वर्शन में अपडेट करें। patched build के विरुद्ध CVE-2026-22599-Abraxas-Labs.py को फिर से चलाएँ: raw 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।
क्लाइंट loopback से बात करता है। जिन सिस्टम्स के आप मालिक नहीं हैं उनके विरुद्ध इसका उपयोग Abraxas Labs द्वारा अधिकृत नहीं है। कोई वारंटी नहीं।