Skip to content
KitploitKITPLOIT
उपकरणएक्सप्लॉइटब्लॉग
Log in
जमा करें
उपकरणएक्सप्लॉइटब्लॉग
जमा करें

हैकिंग, पेनटेस्ट और साइबर सुरक्षा उपकरण आपके सुरक्षा शस्त्रागार के लिए!

Kitploit हैकिंग, साइबर सुरक्षा और पेंटेस्टिंग टूल्स की एक निर्देशिका है। कमजोरियों को खोजने, सिस्टम का विश्लेषण करने, परीक्षण को स्वचालित करने और अपनी सुरक्षा को मजबूत करने के लिए नवीनतम प्रोजेक्ट अपडेट खोजें।

फ़ीडसंपर्कगोपनीयता© 2026 Kitploit

टूल निर्देशिका

श्रेणियाँ

सभी श्रेणियाँ देखें
Loading categories
cakephp-collate-sqli — CakePHP 5.4.2 - उच्च - रिमोट - SQLi - COLLATE कोलेशन एक कच्चा SQL फ्रैगमेंट है | Kitploit
उपकरण/GitHubGitHub/abraxas/cakephp-collate-sqli
भेद्यता स्कैनरभेद्यता विश्लेषणशोषणवेब एप्लिकेशन शोषणवेब सुरक्षापेनिट्रेशन टेस्टिंगडेटाबेस सुरक्षा
GitHubabraxas/cakephp-collate-sqli

cakephp-collate-sqli

CakePHP 5.4.2 - उच्च - रिमोट - SQLi - COLLATE कोलेशन एक कच्चा SQL फ्रैगमेंट है

रिपॉजिटरी देखें
189 दिन पहलेअभी तक समीक्षित नहीं

सबसे लोकप्रिय

सभी देखें →

हमारे समुदाय द्वारा सबसे अधिक उपयोग किए जाने वाले उपकरण खोजें।

सभी उपकरण खोजें

हमारे उपकरणों का संग्रह ब्राउज़ करें

सभी उपकरण देखें →
साझा करें

Abraxas Labs - cakephp-collate-sqli

abraxaslabs.tech  ·  github.com/abraxas  ·  @abraxas_null  ·  [email protected]  ·  cakephp-collate-sqli

राइट-अप: https://abraxaslabs.tech/research/cakephp-collate-sqli

cakephp-collate-sqli

वर्ग: SQLi पहुँच: रिमोट

CakePHP 5.4.2 (887b641) - Cake Software Foundation

StringExpression::sql स्ट्रिंग मान को बाइंड करता है और कोलेशन को संयोजित करता है। IdentifierExpression भी वही करता है। यहाँ कोई ensureSimpleString नहीं है। Postgres का quoteIdentifier यह है '"' . trim($collation, '"') . '"', इसलिए एक एम्बेडेड कोट CAST को जल्दी बंद कर देता है।

एक ऐप जो अनुरोध/लोकेल कोलेशन को new StringExpression($term, $collation) में अग्रेषित करता है, उस स्ट्रिंग को COLLATE में डाल देता है। मान बाइंड रहता है। कोलेशन नहीं।

IDअभी तक कोई CVE नहीं
वर्गSQLi
पहुँचरिमोट (ऐप जो कोलेशन/लोकेल को StringExpression / IdentifierExpression में अग्रेषित करता है)
CWECWE-89
CVSSउच्च: 8.1 CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:N
उत्पादCakePHP (cakephp/database)
प्रभावित5.4.2 (887b641de9f7aba06071f98f17edcbc573cbcf63)
प्रमाणीकरणऐप जो कोलेशन/लोकेल को उन कंस्ट्रक्टरों में अग्रेषित करता है
लाइसेंसGNU Affero GPL v3.0
लैबकेवल 127.0.0.1

एक हमलावर क्या कर सकता है

इसके लिए एक ऐसे ऐप की आवश्यकता है जो उपयोगकर्ता/लोकेल कोलेशन को उन कंस्ट्रक्टरों में पास करता हो। स्टॉक cakephp/app अपने आप किसी सार्वजनिक फ़ॉर्म पर कोलेशन को उजागर नहीं करता।

विशेषाधिकारविधि / सिंकप्रकारलैब-प्रमाणित या अनुमानित
COLLATE के बाद SQL जोड़नाStringExpression::sql $this->collation को संयोजित करता हैसंकलित SQL की अखंडतालैब-प्रमाणित। रॉ SQL में पेलोड अनबाउंड होकर मौजूद है
पहचानकर्ताओं पर वही जोड़IdentifierExpression note COLLATE <payload>संकलित SQL की अखंडतालैब-प्रमाणित। id_raw_sql में पेलोड मौजूद है
Postgres "..." रैप से बाहर निकलनाquoteIdentifier = '"' . trim($collation, '"') . '"'संकलित SQL की अखंडतालैब-प्रमाणित। संकलित SQL है COLLATE "C" AS text)) || (SELECT ...
ब्रेकआउट निष्पादित करना और दूसरी तालिका पढ़नाCAST(... ) || (SELECT note FROM lab_secret ...)DB की टोहलैब-प्रमाणित। परिणाम xCAKEPHP-COLLATE-SQLI-WITNESS, कोई exec त्रुटि नहीं
कनेक्शन भूमिका के साथ पंक्तियाँ संशोधित करना / अधिक SQLवही इंजेक्शनDB की अखंडताअनुमानित। लैब एक SELECT ओरेकल है
नकारात्मक नियंत्रणकोलेशन Cबंदलैब-प्रमाणित। परिणाम x, कोई विटनेस नहीं, संकलित COLLATE "C"

इस अवशेष पर बंद: बाउंड स्ट्रिंग मान (:c0 शाब्दिक x ही रहता है); एक कोलेशन जो ensureSimpleString (^[a-zA-Z0-9]+$) पास कर देगा, वह यह पेलोड नहीं है। स्केलेटन ऐप पर अनप्रमाणीकृत RCE नहीं। शेल नहीं।

वही पिन अवशेष: window SQLi, attachment CRLF, cache unserialize।

मैंने इसे कैसे खोजा

FunctionsBuilder / filename= नोट्स के बाद मैंने 5.4.2 को पिन किया। दस खोजें। शेष-SQLi पास यही है। StringExpression::sql:

$placeholder = $binder->placeholder('c');
$binder->bind($placeholder, $this->string, 'string');
return $placeholder . ' COLLATE ' . $this->collation;

Postgres quoteIdentifier ASCII उद्धरणों के साथ लपेटता है और trim($collation, '"') करता है। एक अंतर्निहित " पहचानकर्ता को बंद कर देता है। -- बचे हुए क्लोज़र को खा जाता है जिसे Cake अभी भी जोड़ता है।

पहले से दर्ज गलत मोड़: SQLite को एकमात्र ड्राइवर मानना (concat वास्तविक है, wrap-breakout Postgres है); bound मान को injection मानना; यह दावा करना कि ensureSimpleString यहाँ पहले ही चल चुका है (यह नहीं चला); एक reverse shell। नाटक।

Lab

python3 cakephp-collate-sqli-Abraxas-Labs.py

या

cd lab
./run.sh

केवल http://127.0.0.1:19450 को लक्षित करें। cakephp/database 5.4.2 के साथ Postgres 16। छोटा ऐप ?collation= को StringExpression / IdentifierExpression में अग्रेषित करता है और CAST(... AS text) निष्पादित करता है। गुप्त तालिका में साक्ष्य रखा गया है।

SUCCESS cakephp-collate-sqli pin=5.4.2 raw=concat pg-wrap=breakout exec=yes CAKEPHP-COLLATE-SQLI-WITNESS

समाधान

collation आर्ग्युमेंट पर ensureSimpleString() (या collation allowlist)। Postgres को identifiers को उचित रूप से quote करना चाहिए, न कि trim के साथ wrap करना।

संदर्भ

  • github.com/cakephp/cakephp टैग 5.4.2 (887b641de9f7aba06071f98f17edcbc573cbcf63)
  • StringExpression.php · IdentifierExpression.php · Postgres.php
  • निकटवर्ती पैच किया गया: CVE-2026-79752 ensureSimpleString()
  • समान पिन: cakephp-window-sqli · cakephp-attachment-crlf · cakephp-cache-unserialize
  • CWE-89

लाइसेंस

GNU Affero GPL v3.0। देखें LICENSE। केवल लूपबैक लैब। कोई वारंटी नहीं।

टूल डाउनलोड करें