MySQL File priv to SSRF/RCE

Support HackTricks

यह MySQL/MariaDB/Percona तकनीकों का सारांश है https://ibreak.software/2020/06/using-sql-injection-to-perform-ssrf-xspa-attacks/

सर्वर-साइड अनुरोध धोखाधड़ी (SSRF) SQL फ़ंक्शंस के माध्यम से

SQL आउट ऑफ बैंड डेटा एक्सफिल्ट्रेशन की खोज में, LOAD_FILE() फ़ंक्शन का सामान्यत: नेटवर्क अनुरोध शुरू करने के लिए उपयोग किया जाता है। हालाँकि, यह फ़ंक्शन उस ऑपरेटिंग सिस्टम द्वारा सीमित है जिस पर यह कार्य करता है और डेटाबेस की स्टार्टअप कॉन्फ़िगरेशन द्वारा।

यदि secure_file_priv वैश्विक चर सेट नहीं है, तो यह /var/lib/mysql-files/ पर डिफ़ॉल्ट होता है, जिससे फ़ाइलों तक पहुँच इस निर्देशिका तक सीमित होती है जब तक कि इसे खाली स्ट्रिंग ("") पर सेट नहीं किया जाता। इस समायोजन के लिए डेटाबेस की कॉन्फ़िगरेशन फ़ाइल या स्टार्टअप पैरामीटर में संशोधन की आवश्यकता होती है।

यदि secure_file_priv अक्षम है (""), और आवश्यक फ़ाइल और file_priv अनुमतियाँ दी गई हैं, तो निर्दिष्ट निर्देशिका के बाहर फ़ाइलें पढ़ी जा सकती हैं। फिर भी, इन फ़ंक्शंस के नेटवर्क कॉल करने की क्षमता ऑपरेटिंग सिस्टम पर अत्यधिक निर्भर करती है। विंडोज़ सिस्टम पर, UNC पथों के लिए नेटवर्क कॉल संभव हैं क्योंकि ऑपरेटिंग सिस्टम UNC नामकरण मानकों को समझता है, जो NTLMv2 हैश के एक्सफिल्ट्रेशन की संभावना को जन्म देता है।

यह SSRF विधि TCP पोर्ट 445 तक सीमित है और पोर्ट नंबर में संशोधन की अनुमति नहीं देती, हालाँकि इसका उपयोग पूर्ण पढ़ने की अनुमतियों के साथ शेयरों तक पहुँचने के लिए किया जा सकता है और, पूर्व के शोध में प्रदर्शित किया गया है, आगे के शोषण के लिए हैश चुराने के लिए।

उपयोगकर्ता परिभाषित फ़ंक्शंस (UDF) के माध्यम से रिमोट कोड निष्पादन (RCE)

MySQL डेटाबेस बाहरी पुस्तकालय फ़ाइलों से उपयोगकर्ता परिभाषित फ़ंक्शंस (UDF) के उपयोग की पेशकश करते हैं। यदि ये पुस्तकालय विशिष्ट निर्देशिकाओं के भीतर या सिस्टम के $PATH में सुलभ हैं, तो इन्हें MySQL के भीतर से बुलाया जा सकता है।

यह तकनीक UDF के माध्यम से नेटवर्क/HTTP अनुरोधों के निष्पादन की अनुमति देती है, बशर्ते कई शर्तें पूरी हों, जिसमें @@plugin_dir पर लिखने की अनुमति, file_priv को Y पर सेट करना, और secure_file_priv को अक्षम करना शामिल है।

उदाहरण के लिए, lib_mysqludf_sys पुस्तकालय या अन्य UDF पुस्तकालय जो HTTP अनुरोधों को सक्षम करते हैं, SSRF करने के लिए लोड किए जा सकते हैं। पुस्तकालयों को सर्वर पर स्थानांतरित किया जाना चाहिए, जिसे पुस्तकालय की सामग्री को हेक्स या बेस64 एन्कोडिंग के माध्यम से प्राप्त करके और फिर इसे उचित निर्देशिका में लिखकर किया जा सकता है।

यदि @@plugin_dir लिखने योग्य नहीं है, तो प्रक्रिया भिन्न होती है, विशेष रूप से v5.0.67 से ऊपर के MySQL संस्करणों के लिए। ऐसे मामलों में, वैकल्पिक पथों का उपयोग किया जाना चाहिए जो लिखने योग्य हों।

इन प्रक्रियाओं का स्वचालन SQLMap जैसे उपकरणों द्वारा किया जा सकता है, जो UDF इंजेक्शन का समर्थन करते हैं, और अंधे SQL इंजेक्शन के लिए, आउटपुट रीडायरेक्शन या DNS अनुरोध स्मगलिंग तकनीकों का उपयोग किया जा सकता है।

Support HackTricks

Last updated