MySQL File priv to SSRF/RCE
Last updated
Last updated
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
यह MySQL/MariaDB/Percona तकनीकों का सारांश है https://ibreak.software/2020/06/using-sql-injection-to-perform-ssrf-xspa-attacks/।
SQL आउट ऑफ बैंड डेटा एक्सफिल्ट्रेशन की खोज में, LOAD_FILE()
फ़ंक्शन का सामान्यतः नेटवर्क अनुरोध शुरू करने के लिए उपयोग किया जाता है। हालाँकि, यह फ़ंक्शन उस ऑपरेटिंग सिस्टम और डेटाबेस की स्टार्टअप कॉन्फ़िगरेशन द्वारा सीमित है जिस पर यह कार्य करता है।
यदि secure_file_priv
वैश्विक चर सेट नहीं है, तो यह /var/lib/mysql-files/
पर डिफ़ॉल्ट होता है, जिससे फ़ाइलों तक पहुँच इस निर्देशिका तक सीमित होती है जब तक कि इसे खाली स्ट्रिंग (""
) पर सेट नहीं किया जाता। इस समायोजन के लिए डेटाबेस की कॉन्फ़िगरेशन फ़ाइल या स्टार्टअप पैरामीटर में संशोधन की आवश्यकता होती है।
यदि secure_file_priv
अक्षम है (""
), और आवश्यक फ़ाइल और file_priv
अनुमतियाँ दी गई हैं, तो निर्दिष्ट निर्देशिका के बाहर फ़ाइलें पढ़ी जा सकती हैं। फिर भी, इन फ़ंक्शंस के नेटवर्क कॉल करने की क्षमता ऑपरेटिंग सिस्टम पर बहुत निर्भर करती है। विंडोज़ सिस्टम पर, UNC पथों के लिए नेटवर्क कॉल संभव हैं क्योंकि ऑपरेटिंग सिस्टम UNC नामकरण मानकों को समझता है, जो NTLMv2 हैश के एक्सफिल्ट्रेशन की संभावना पैदा कर सकता है।
यह SSRF विधि TCP पोर्ट 445 तक सीमित है और पोर्ट नंबर में संशोधन की अनुमति नहीं देती, हालाँकि इसका उपयोग पूर्ण पढ़ने की अनुमतियों के साथ शेयरों तक पहुँचने के लिए किया जा सकता है और, जैसा कि पूर्व शोध में प्रदर्शित किया गया है, आगे के शोषण के लिए हैश चुराने के लिए।
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 अनुरोध स्मगलिंग तकनीकों का उपयोग किया जा सकता है।
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)