
MariaDB v11.1 के लिए UDF के माध्यम से RCE का संशोधित PoC, SQL क्वेरी के माध्यम से कमांड आउटपुट इनलाइन लौटाता है। Windows के लिए विस्तृत कोड तुलना और संकलन निर्देश शामिल हैं।
MariaDB v11.1 UDF के माध्यम से RCE — Ant1sec-ops/CVE-2024-27766 पर आधारित संशोधित PoC।
| प्रभावित | MariaDB v11.1 |
| में ठीक किया गया | 10.5.25 / 10.6.18 / 10.11.8 / 11.0.6 / 11.1.5 / 11.2.4 / 11.4.2+ |
| प्रकार | User-Defined Function (UDF) के माध्यम से RCE |
MariaDB v11.1 एक हमलावर को पर्याप्त डेटाबेस विशेषाधिकार (FILE privilege + plugin directory write access) के साथ एक दुर्भावनापूर्ण UDF पंजीकृत करने और इसके माध्यम से मनमाना OS कमांड निष्पादित करने की अनुमति देता है।
नोट: MariaDB Foundation इस CVE पर विवाद करता है क्योंकि कोई विशेषाधिकार सीमा पार नहीं होती। शोषण के लिए प्रशासन-स्तरीय DB पहुंच या समतुल्य आवश्यक है।
मूल PoC longlong रिटर्न प्रकार का उपयोग करता है, इसलिए do_system() केवल यह बताता है कि कमांड सफल हुआ या नहीं — आप SQL से सीधे आउटपुट नहीं देख सकते।
यह संस्करण रिटर्न प्रकार को char * में बदलता है, जो stdout को क्वेरी परिणाम के रूप में वापस भेजता है। किसी आउट-ऑफ-बैंड चैनल की आवश्यकता नहीं; बस SELECT do_system('whoami') चलाएं और आउटपुट सीधे आ जाएगा।
| Original | This PoC | |
|---|---|---|
| रिटर्न प्रकार | longlong | char * |
| निष्पादन | system() | _popen() + fgets() loop |
| SQL परिणाम | exit code | command stdout |
| मेमोरी | कोई नहीं | heap-allocated, deinit में मुक्त किया गया |
एक बात ध्यान देने योग्य: UDF से char * लौटाने के लिए MariaDB को बफर आकार पहले से जानना आवश्यक है। do_system_init initid->max_length = 65536 सेट करता है, जो मुख्य फ़ंक्शन में आवंटित आउटपुट बफर से मेल खाता है।
चूंकि रिटर्न प्रकार बदल गया है, फ़ंक्शन को पंजीकृत करते समय RETURNS STRING का उपयोग करना होगा — मूल की तरह RETURNS INTEGER नहीं।
CREATE FUNCTION do_system RETURNS STRING SONAME 'do_system.dll';
_popen / _pclose का उपयोग करता है)FILE विशेषाधिकार और प्लगइन निर्देशिका लेखन पहुंच होकेवल शैक्षिक और अनुसंधान उद्देश्यों के लिए। उन सिस्टमों के खिलाफ उपयोग न करें जिनके आप मालिक नहीं हैं या जिनके परीक्षण की स्पष्ट अनुमति नहीं है।