
phpMyAdmin 5.2.3 - उच्च - रिमोट - SQLi - ImportLdi TERMINATED BY शेष
abraxaslabs.tech · github.com/abraxas · @abraxas_null · [email protected] · phpmyadmin-importldi
Class: SQLi Reach: Remote
phpMyAdmin 5.2.3 (RELEASE_5_2_3 / 962857e) - phpMyAdmin
ImportLdi.php POST के ldi_terminated और ldi_new_line से FIELDS/LINES TERMINATED BY के साथ LOAD DATA बनाता है। इन दोनों स्ट्रिंग्स को सिंगल-कोटेड SQL में जोड़ा जाता है। ldi_enclosed और ldi_escaped escapeString से गुज़रते हैं। phpMyAdmin /import पर PMA_ENABLE_LDI सेट करता है ताकि MYSQLI_OPT_LOCAL_INFILE चालू रहे।
एक साइन-इन किया हुआ उपयोगकर्ता ldi_terminated में एक कोट के साथ format=ldi POST करता है। जारी किया गया LOAD DATA TERMINATED BY के अंदर रॉ POST को शामिल करता है। उपयोगकर्ता कनेक्शन में SQL इंजेक्शन, कंट्रोल उपयोगकर्ता में नहीं।
| ID | अभी तक कोई CVE नहीं |
| Class | SQLi |
| Reach | Remote (प्रमाणित कुकी लॉगिन; टेबल इम्पोर्ट, फॉर्मेट ldi) |
| CWE | CWE-89 |
| CVSS | Medium: 6.5 CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:N/I:H/A:N |
| Product | phpMyAdmin |
| Affected | 5.2.3 टैग RELEASE_5_2_3 (962857e4f63d42e38f11ff4d63f5e722018add76) |
| Auth | प्रमाणित कुकी लॉगिन। टेबल इम्पोर्ट, फॉर्मेट ldi |
| License | GNU Affero GPL v3.0 |
| Lab | केवल 127.0.0.1 |
एक साइन-इन किया हुआ phpMyAdmin उपयोगकर्ता जो Table import खोल सकता है, अपने MySQL कनेक्शन पर LOAD DATA ... TERMINATED BY में SQL इंजेक्ट कर सकता है।
| Privilege | Method / sink | Recon / integrity / availability | Lab-proven or inferred |
|---|---|---|---|
FIELDS TERMINATED BY लिटरल को तोड़ें | POST index.php?route=/import format=ldi ldi_terminated एक कोट के साथ | PMA जो स्टेटमेंट बनाता है उसकी इंटीग्रिटी | Lab-proven। HTML SQL बॉक्स: TERMINATED BY '',PMA-IMPORTLDI-WITNESS' |
ENCLOSED BY को इन-बैंड रखें | वही POST, ldi_enclosed में कोट | नेगेटिव कंट्रोल | Lab-proven। ENCLOSED BY एस्केप्ड है |
| उपयोगकर्ता कनेक्शन पर अतिरिक्त SQL (INTO OUTFILE / स्टैक्ड यदि अनुमति हो) | स्ट्रिंग बंद होने पर वही sink | उपयोगकर्ता कनेक्शन की इंटीग्रिटी | Inferred। Lab टूटे हुए डेलिमिटर पर रुक जाता है। डिफ़ॉल्ट mysqli::query सिंगल-स्टेटमेंट है |
| MySQL-साइड फ़ाइल पढ़ना/लिखना | वही LOAD DATA यदि अकाउंट के पास FILE है या वेब सर्वर तक LOCAL INFILE है | mysqld जिन फ़ाइलों को छू सकता है उनकी इंटीग्रिटी | Inferred। यहाँ अनुमति नहीं दी गई। दावा नहीं किया गया |
इस lab पर बंद: अनऑथेंटिकेटेड एक्सेस, control-user / pmadb, OS include LFI, और FILE-गेटेड read/write। साइन-इन किए हुए उपयोगकर्ता के पास पहले से ही एक SQL बॉक्स है; यह बचा हुआ हिस्सा उस स्टेटमेंट के अंदर अनएस्केप्ड डेलिमिटर है जो PMA उनके लिए बनाता है।
Same pin: WebAuthn CustomServer leftover.
मैंने phpMyAdmin RELEASE_5_2_3 को पिन किया। जो इम्पोर्ट प्लगइन हाथ से LOAD DATA बनाते हैं, वे एक कोटिंग ऑडिट हैं। चार डेलिमिटर फ़ील्ड्स में से दो एस्केप्ड थे। दो नहीं थे:
$sql .= ' FIELDS TERMINATED BY \'' . $ldi_terminated . '\'';
...
$sql .= ' LINES TERMINATED BY \'' . $ldi_new_line . '\'';
ldi_enclosed / ldi_escaped $dbi->escapeString को कॉल करते हैं। Common.php /import + format=ldi पर PMA_ENABLE_LDI सेट करता है। रूट्स GET|POST /import और GET|POST /table/import।
पहले से दर्ज गलत रास्ते: FILE ग्रांट के बिना LFI का दावा करना; SQL बॉक्स को ही फाइंडिंग मानना (बचा हुआ हिस्सा वह अनएस्केप्ड डेलिमिटर है जिसे PMA जोड़ता है); control-user / pmadb का दावा; एक रिवर्स शेल। नाटक।
python3 phpmyadmin-importldi-Abraxas-Labs.py
# or: cd lab && ./run.sh
लक्ष्य केवल http://127.0.0.1:19290। इमेज phpmyadmin:5.2.3 और mysql:8.0। Compose प्रोजेक्ट phpmyadmin-importldi। रन के बाद स्टैक टियर डाउन हो जाता है।
कुकी लॉगिन। format=ldi और ldi_terminated में एक कोट के साथ /import पर POST करें। जारी किया गया LOAD DATA LOCAL INFILE ... INTO TABLE \ldi_target` FIELDS TERMINATED BY '',PMA-IMPORTLDI-WITNESS'। ldi_enclosedमें वही कोट एस्केप्डENCLOSED BYके रूप में स्टोर हुआ। 5.2.3 इमेज पर पिन सोर्स में अभी भी'.$ldi_terminated.'और$dbi->escapeString($ldi_enclosed)` है।
SUCCESS phpmyadmin-importldi pin=RELEASE_5_2_3 how=live TERMINATED-BY-raw ENCLOSED-escaped PMA-IMPORTLDI-WITNESS
ldi_terminated और ldi_new_line पर escapeString, वैसे ही जैसे enclosed और escaped पर। skip_queries को Int-cast करें।
962857e4f63d42e38f11ff4d63f5e722018add76)libraries/classes/Plugins/Import/ImportLdi.phpGNU Affero GPL v3.0। देखें LICENSE। केवल लूपबैक lab। कोई वारंटी नहीं।