
phpMyAdmin 5.2.3 - उच्च - रिमोट - SQLi - केंद्रीय कॉलम pmadb क्वेरी अवशेष
abraxaslabs.tech · github.com/abraxas · @abraxas_null · [email protected] · phpmyadmin-pmadb-central-sqli
राइट-अप: https://abraxaslabs.tech/research/phpmyadmin-pmadb-central-sqli
वर्ग: SQLi पहुँच: रिमोट
phpMyAdmin 5.2.3 (टैग RELEASE_5_2_3, कमिट 962857e)। Central columns, कंट्रोल-यूज़र लिंक पर POST extra और attribute को एक सिंगल-कोटेड SQL लिटरल में जोड़कर col_extra लिखता है। पड़ोसी फ़ील्ड escapeString से गुज़रते हैं। ये दो नहीं गुज़रते।
एक साइन-इन किया हुआ उपयोगकर्ता index.php?route=/database/central-columns पर multi_edit_central_column_save=1 और field_attribute (या col_extra) में एक कोट के साथ POST करता है। फिर getInsertQuery / updateOneColumn उस स्ट्रिंग को pma कंट्रोल यूज़र के रूप में pma__central_columns के विरुद्ध चलाते हैं। वह खाता कॉन्फ़िगरेशन-स्टोरेज यूज़र है, लॉग-इन किया हुआ SQL बॉक्स नहीं।
CVE-2016-5703 central columns में डेटाबेस नाम था। ये extra और attribute फ़ील्ड वह बग नहीं थे।
| ID | अभी तक कोई CVE नहीं |
| वर्ग | SQLi (pma__central_columns पर कंट्रोल-यूज़र) |
| पहुँच | रिमोट (प्रमाणित कुकी लॉगिन; pmadb central columns सक्षम) |
| CWE | CWE-89 |
| CVSS | उच्च: 8.1 CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:N |
| उत्पाद | phpMyAdmin |
| प्रभावित | 5.2.3 टैग RELEASE_5_2_3 (962857e) |
| प्रमाणीकरण | प्रमाणित कुकी लॉगिन। pmadb central columns सक्षम। |
| लाइसेंस | GNU Affero GPL v3.0 |
| लैब | केवल 127.0.0.1:19210 |
एक साइन-इन किया हुआ phpMyAdmin उपयोगकर्ता जो Central columns खोल सकता है, pma__central_columns पर कंट्रोल यूज़र के रूप में SQL इंजेक्ट कर सकता है।
| विशेषाधिकार | विधि / पथ | लैब-प्रमाणित या अनुमानित |
|---|---|---|
| कंट्रोल-यूज़र INSERT/UPDATE स्ट्रिंग तोड़ें (pmadb SQL की अखंडता) | POST index.php?route=/database/central-columns multi_edit_central_column_save=1 के साथ field_attribute / col_extra में एक कोट | लैब-प्रमाणित। #1064 JSON त्रुटि। कंट्रोल-यूज़र त्रुटि में गवाह PMA-PMADB-CENTRAL-SQLI-WITNESS |
| पड़ोसी फ़ील्ड को इन-बैंड रखें | वही POST, field_name में कोट | लैब-प्रमाणित। पंक्ति neg'col के रूप में संग्रहीत। escapeString टिका रहा |
| अन्य उपयोगकर्ताओं की central-column पंक्तियाँ पढ़ें या अधिलेखित करें | वही सिंक, एक बार स्ट्रिंग बंद हो जाने पर | अनुमानित। लैब सिंटैक्स त्रुटि पर रुकती है; कोई स्टैक्ड क्वेरी नहीं |
| कंट्रोल यूज़र के रूप में अतिरिक्त स्टेटमेंट | वही सिंक यदि कंट्रोल mysqli लिंक मल्टी-क्वेरी की अनुमति देता है | अनुमानित। डिफ़ॉल्ट mysqli::query सिंगल-स्टेटमेंट है। यहाँ सक्षम नहीं |
अन्य pmadb तालिकाओं तक पहुँचें (bookmarks, history, pma__userconfig) | केवल यदि स्टैक्ड क्वेरी या INTO-शैली लेखन संभव हो | अनुमानित। इस लैब में कंट्रोल यूज़र के पास केवल phpmyadmin.* DML है |
इस लैब पर बंद: अनप्रमाणित पहुँच, साइन-इन किया हुआ appuser SQL बॉक्स (केवल appdb), OS शेल, और स्टैक्ड क्वेरी। यदि pmadb / central columns बंद है तो सुविधा नो-ऑप होती है (वह FAIL है, यह अवशेष नहीं)।
RELEASE_5_2_3 की आठ समानांतर स्रोत खोजें। CentralColumns.php में पड़ोसी फ़ील्ड escapeString'd हैं। Extra और attribute एक सिंगल-कोटेड लिटरल में implode होते हैं। CVE-2016-5703 डेटाबेस नाम था, ये कॉलम नहीं।
गलत मोड़: field_name में कोट को अवशेष मानना (यह neg'col के रूप में संग्रहीत होता है; वह नकारात्मक है); सामान्य लॉग से अनएस्केप्ड गवाह दिखने की अपेक्षा करना (INSERT सफल लेखन से पहले #1064 के साथ मर जाता है); pmadb-बंद को यह अवशेष मानना (सुविधा नो-ऑप होती है)।
python3 phpmyadmin-pmadb-central-sqli-Abraxas-Labs.py
या
cd lab
./run.sh
केवल लूपबैक: http://127.0.0.1:19210। इमेज phpmyadmin:5.2.3 और mysql:8.0। Compose प्रोजेक्ट phpmyadmin-pmadb-central-sqli। विटनेस PMA-PMADB-CENTRAL-SQLI-WITNESS।
SUCCESS phpmyadmin-pmadb-central-sqli how=live insert-syntax=yes field-name-escaped=yes general-log-unescaped=false error-has-witness=true PMA-PMADB-CENTRAL-SQLI-WITNESS
escapeString / quoteString(..., CONNECT_CONTROL) अतिरिक्त और विशेषता पर। Allowlist auto_increment, UNSIGNED, BINARY, UNSIGNED ZEROFILL, और on update CURRENT_TIMESTAMP। phpMyAdmin 6.x में designer JSON blob पर quoteString इस प्रकार के pmadb concat के लिए पैच किया गया स्वरूप है।
962857e)libraries/classes/Database/CentralColumns.php getInsertQuery / updateOneColumnControllers/Database/CentralColumnsController.php POST multi_edit_central_column_saveGET|POST /database/central-columnsGNU Affero GPL v3.0. देखें LICENSE। केवल लूपबैक लैब। कोई वारंटी नहीं।