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

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

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

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

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

श्रेणियाँ

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

cakephp-window-sqli

CakePHP 5.4.2 - उच्च - रिमोट - SQLi - WindowExpression रेंज/फ्रेम ऑफसेट SQL में जोड़े गए

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

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

सभी देखें →

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

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

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

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

Abraxas Labs - cakephp-window-sqli

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

cakephp-window-sqli

Class: SQLi Reach: Remote

CakePHP 5.4.2 (887b641) - Cake Software Foundation

CVE-2026-79752 ने FunctionsBuilder के cast / extract / dateAdd को ensureSimpleString() के साथ बंद कर दिया। WindowExpression::range() और frame() उस फिक्स में नहीं थे। rows() और groups() ?int लेते हैं। range() अभी भी एक स्ट्रिंग लेता है। buildOffsetSql ऑफ़सेट, फ़्रेम प्रकार, और PRECEDING / FOLLOWING को OVER में जोड़ता है। बाइंडर का उपयोग तब तक नहीं होता जब तक ऑफ़सेट पहले से ExpressionInterface न हो।

एक ऐप जो रिक्वेस्ट डेटा को func()->count('*')->over()->range($start, $end) में फ़ॉरवर्ड करता है, कॉलर की स्ट्रिंग को RANGE BETWEEN में बिना बाइंड और बिना कोट के डाल देता है।

IDअभी तक कोई CVE नहीं
ClassSQLi
ReachRemote (ऐप जो रिक्वेस्ट डेटा को range() / frame() में फ़ॉरवर्ड करता है)
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ऐप जो क्वेरी/फ़ॉर्म डेटा को ->over()->range($start, $end) / frame() में फ़ॉरवर्ड करता है
LicenseGNU Affero GPL v3.0
Labकेवल 127.0.0.1

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

एक उपयोगकर्ता जो ऐप द्वारा फ़ॉरवर्ड किए जाने वाले विंडो बाउंड को सेट कर सकता है (एनालिटिक्स "पिछले N दिन", एक रिपोर्ट बिल्डर) OVER क्लॉज़ को अतिरिक्त SQL में बदल देता है।

PrivilegeMethod / sinkKindLab-proven or inferred
OVER (RANGE BETWEEN ...) में SQL फ़्रैगमेंट जोड़नाGET /?mode=range&start= को AggregateExpression::range($start, $end) / WindowExpression::frame() मेंसंकलित SQL की अखंडताLab-proven। संकलित SQL है RANGE BETWEEN 1) /* CAKEPHP-WINDOW-SQLI-WITNESS */ -- PRECEDING एक खाली बाइंडर के साथ
ऐप के DB उपयोगकर्ता के रूप में पंक्तियाँ पढ़ना या संशोधित करनावही क्वेरी, निष्पादितDB की अखंडता / reconस्प्लिस से अनुमानित। यह लैब केवल-संकलन है
उसी तरह फ़्रेम प्रकार या दिशा बदलनाframe($type, $offset, $direction, ...) उन स्ट्रिंग्स को भी जोड़ता हैसंकलित SQL की अखंडताsql() / buildOffsetSql() से अनुमानित। लैब ने range() का उपयोग किया
rows() / groups() को उसी तरह तोड़नाटाइप्ड ?intबंदLab-proven बंद। rows(3) है ROWS BETWEEN 3 PRECEDING, न कोट किया गया, न बाइंड किया गया

इस पिन पर बंद: FunctionsBuilder cast / extract / dateAdd / jsonValue (CVE-2026-79752 / CVE-2026-77635); Query::limit / offset (टाइप्ड int)। डिफ़ॉल्ट cakephp/app क्वेरी-स्ट्रिंग डेटा के साथ range() को कॉल नहीं करता। बचा हुआ हिस्सा प्रलेखित विंडो API है। स्केलेटन ऐप पर अनऑथेंटिकेटेड RCE नहीं। शेल नहीं।

उसी पिन के अवशेष: collate SQLi, attachment CRLF, cache unserialize।

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

2026 FunctionsBuilder SQLi GHSAs के बाद मैंने cakephp/cakephp 5.4.2 को पिन किया। उस टैग पर दस शिकार। CSRF / FormProtection, View LFI, BodyParser XXE, mass assignment, helper XSS, और trustProxy के बिना clientIp() इस बार में खाली लौटे। WindowExpressionTest::testRange अभी भी यह दावा करता है:

$w = (new WindowExpression())->range("'1 day'", "'10 days'");

buildOffsetSql कभी स्ट्रिंग ऑफ़सेट को बाइंड नहीं करता:

protected function buildOffsetSql(
    ValueBinder $binder,
    ExpressionInterface|string|int|null $offset,
    string $direction,
): string {
    if ($offset === 0) {
        return 'CURRENT ROW';
    }
    if ($offset instanceof ExpressionInterface) {
        $offset = $offset->sql($binder);
    }
    return sprintf('%s %s', $offset ?? 'UNBOUNDED', $direction);
}

$binder का उपयोग तब तक नहीं होता जब तक ऑफ़सेट पहले से ExpressionInterface न हो।

पहले से दर्ज गलत मोड़: rows() को छेद मानना (यह टाइप्ड int है); यह दावा करना कि स्टॉक cakephp/app इसे सार्वजनिक फ़ॉर्म पर उजागर करता है; SQLite में इंजेक्टेड SQL को oracle के रूप में निष्पादित करना (POC-READY केवल-संकलन है); एक रिवर्स शेल। नाटक।

Lab

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

या

cd lab
./run.sh

लक्ष्य केवल http://127.0.0.1:19440। छोटा PHP ऐप, cakephp/database 5.4.2, SQLite :memory:। GET /?mode=range&start= को स्ट्रिंग के रूप में range() में पास किया जाता है। GET /?mode=rows&n=3 int नियंत्रण है।

SUCCESS cakephp-window-sqli pin=5.4.2 range-raw=yes rows-numeric=yes bound=no quoted=no CAKEPHP-WINDOW-SQLI-WITNESS

IOC संकलित SQL:

SELECT (COUNT(*) OVER (RANGE BETWEEN 1) /* CAKEPHP-WINDOW-SQLI-WITNESS */ -- PRECEDING AND CURRENT ROW)) AS n FROM sqlite_master

नियंत्रण:

SELECT (COUNT(*) OVER (ROWS BETWEEN 3 PRECEDING AND CURRENT ROW)) AS n FROM sqlite_master

समाधान

संख्यात्मक ऑफ़सेट बाइंड करें। फ़्रेम प्रकार (RANGE / ROWS / GROUPS) और दिशा (PRECEDING / FOLLOWING) को allowlist करें। इंटरवल स्ट्रिंग्स के लिए, उन्हें कोट करें या ExpressionInterface की आवश्यकता रखें। एक टेस्ट जोड़ें कि गैर-int range() ऑफ़सेट एक प्लेसहोल्डर या कोटेड लिटरल बने, कच्चा SQL नहीं।

संदर्भ

  • github.com/cakephp/cakephp टैग 5.4.2 (887b641de9f7aba06071f98f17edcbc573cbcf63)
  • WindowExpression.php · AggregateExpression.php
  • निकट पैच किया गया: CVE-2026-79752 · CVE-2026-77635
  • उसी पिन: cakephp-collate-sqli · cakephp-attachment-crlf · cakephp-cache-unserialize
  • CWE-89

लाइसेंस

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

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