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 फ्रैगमेंट है

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

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

सभी देखें →

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

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

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

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

Abraxas Labs - cakephp-collate-sqli

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

cakephp-collate-sqli

Class: SQLi Reach: Remote

CakePHP 5.4.2 (887b641) - Cake Software Foundation

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

एक ऐप जो request/locale collation को new StringExpression($term, $collation) में फॉरवर्ड करता है, वह उस स्ट्रिंग को COLLATE में डाल देता है। मान बाइंड रहता है। collation नहीं।

IDअभी तक कोई CVE नहीं
ClassSQLi
ReachRemote (ऐप जो collation/locale को StringExpression / IdentifierExpression में फॉरवर्ड करता है)
CWECWE-89
CVSSHigh: 8.1 CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:N
ProductCakePHP (cakephp/database)
Affected5.4.2 (887b641de9f7aba06071f98f17edcbc573cbcf63)
Authऐप जो collation/locale को उन कंस्ट्रक्टरों में फॉरवर्ड करता है
LicenseGNU Affero GPL v3.0
Labकेवल 127.0.0.1

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

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

PrivilegeMethod / sinkKindLab-proven या inferred
COLLATE के बाद SQL जोड़नाStringExpression::sql $this->collation को जोड़ता हैसंकलित SQL की अखंडताLab-proven। रॉ SQL में payload अनबाउंड मौजूद है
identifiers पर वही spliceIdentifierExpression note COLLATE <payload>संकलित SQL की अखंडताLab-proven। id_raw_sql में payload मौजूद है
Postgres "..." रैप से बाहर निकलनाquoteIdentifier = '"' . trim($collation, '"') . '"'संकलित SQL की अखंडताLab-proven। संकलित SQL है COLLATE "C" AS text)) || (SELECT ...
breakout को निष्पादित करना और दूसरी टेबल पढ़नाCAST(... ) || (SELECT note FROM lab_secret ...)DB की reconLab-proven। परिणाम xCAKEPHP-COLLATE-SQLI-WITNESS, कोई exec error नहीं
connection role के साथ पंक्तियाँ संशोधित करना / अधिक SQLवही injectionDB की अखंडताInferred। Lab एक SELECT oracle है
Negative controlcollation CClosedLab-proven। परिणाम x, कोई witness नहीं, संकलित COLLATE "C"

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

वही pin leftovers: window SQLi, attachment CRLF, cache unserialize।

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

FunctionsBuilder / filename= नोट्स के बाद मैंने 5.4.2 को pin किया। दस hunts। remaining-SQLi pass यही है। StringExpression::sql:

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

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

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

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) निष्पादित करता है। Secret टेबल में witness है।

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

समाधान

collation argument पर ensureSimpleString() (या एक collation allowlist)। Postgres को identifiers को ठीक से quote करना चाहिए, न कि trim के साथ रैप।

संदर्भ

  • github.com/cakephp/cakephp tag 5.4.2 (887b641de9f7aba06071f98f17edcbc573cbcf63)
  • StringExpression.php · IdentifierExpression.php · Postgres.php
  • आस-पास patched: CVE-2026-79752 ensureSimpleString()
  • वही pin: cakephp-window-sqli · cakephp-attachment-crlf · cakephp-cache-unserialize
  • CWE-89

लाइसेंस

GNU Affero GPL v3.0। देखें LICENSE। केवल loopback lab। कोई वारंटी नहीं।

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