Skip to content
KitploitKITPLOIT
أدواتعمليات الاستغلالالمدونة
Log in
إرسال
أدواتعمليات الاستغلالالمدونة
إرسال

أدوات الاختراق واختبار الاختراق والأمن السيبراني لترسانتك الأمنية!

Kitploit هو دليل لأدوات الاختراق والأمن السيبراني واختبار الاختراق. اكتشف آخر تحديثات المشاريع للعثور على الثغرات وتحليل الأنظمة وأتمتة الاختبارات وتعزيز أمنك.

··الخلاصات·اتصال·الخصوصية·© 2026 Kitploit

دليل الأدوات

الفئات

عرض جميع الفئات
Loading categories
CVE-2019-20933 — تقرير معملي خطوة بخطوة يوضح تجاوز المصادقة في InfluxDB عبر رموز JWT المزورة (CVE-2019-20933)، بما في ذلك الاستغلال وما بعد الاستغلال وإرشادات المعالجة. | Kitploit
أدوات/GitHubGitHub/dungsocool/cve-2019-20933
المصادقة والترخيصتحليل الثغرات الأمنيةالاستغلالCTFاختبار الاختراقالتعلم والتعليمأمن قواعد البياناتمختبرات وتدريب عملي
GitHubdungsocool/cve-2019-20933

CVE-2019-20933

تقرير معملي خطوة بخطوة يوضح تجاوز المصادقة في InfluxDB عبر رموز JWT المزورة (CVE-2019-20933)، بما في ذلك الاستغلال وما بعد الاستغلال وإرشادات المعالجة.

عرض المستودع
15منذ 4 أشهرلم تتم المراجعة بعد

الأكثر شعبية

عرض الكل →

اكتشف الأدوات الأكثر استخدامًا من قبل مجتمعنا.

استكشف جميع الأدوات

تصفح مجموعتنا من الأدوات

عرض جميع الأدوات →
مشاركة

LAB 5-CVE-2019-20933

I. تحليل النظام

تحديد سطح الهجوم

نبدأ بما يعمل في البيئة. نقوم بإدراج جميع الحاويات النشطة:

docker ps

image.png

الضحية تعرض منفذًا واحدًا فقط: 8086.

حاليًا، لا تتوفر لدي معلومات مفصلة عن الهدف. من مخرجات docker ps، يظهر أن النظام يعرض خدمة واحدة فقط للخارج على المنفذ 8086، وهي مرتبطة بالخدمة داخل الحاوية. هذا هو سطح الهجوم الأساسي الذي يجب تحليله.

بدلاً من الوصول إليه مباشرة عبر المتصفح، نستمر في تحديد بصمة الخدمة باستخدام Nmap لمعرفة الخدمة التي تعمل على المنفذ 8086:

nmap -sV -sC -p 8086 192.168.3.137

image.png

تظهر نتائج الفحص أن المنفذ 8086 هو خدمة HTTP الخاصة بـ InfluxDB OSS 1.6.6. هذه قاعدة بيانات للسلاسل الزمنية (Time-Series Database) معرّضة عبر واجهة برمجة تطبيقات HTTP، وليست تطبيق ويب تقليديًا.

تحليل التفكير ما بعد تحديد البصمة

InfluxDB هي قاعدة بيانات سلسلة زمنية (TSDB) مفتوحة المصدر مكتوبة بلغة Go. على عكس قواعد البيانات العلائقية RDBMS (المحسّنة للمعاملات الدقيقة) أو Elasticsearch (المحسّنة للبحث النصي)، أُنشئت InfluxDB لغرض واحد: التعامل مع أحجام كتابة ضخمة (إنتاجية كتابة عالية) والاستعلام عن البيانات على طول المحور الزمني بزمن استجابة منخفض.

image.png

بما أنه تم تحديد بصمة الخدمة على أنها InfluxDB، فإن الخطوة التالية هي الرجوع إلى كيفية تواصل InfluxDB مع العملاء. وفقًا لوثائق InfluxDB v1 الخاصة بواجهة برمجة التطبيقات HTTP، فإن المنفذ 8086 هو منفذ واجهة برمجة التطبيقات الافتراضي. تتضمن نقاط النهاية الرئيسية المهمة ما يلي:

  • /ping: يتحقق من الحالة التشغيلية للخادم.
  • /query: يرسل استعلامات InfluxQL لقراءة البيانات الوصفية أو البيانات.
  • /write: يكتب بيانات السلاسل الزمنية إلى قاعدة البيانات.

⇒ تفكير: بعد أن يحدد Nmap الخدمة على أنها InfluxDB http admin 1.6.6، لا نستمر في اختبارها وكأنها موقع ويب قياسي. بالنسبة لتطبيقات الويب، نبحث عادةً عن المسارات أو نماذج تسجيل الدخول أو الدلائل. ومع ذلك، مع InfluxDB، يكمن سطح الهجوم داخل واجهة برمجة التطبيقات HTTP. لذلك، نحتاج إلى التحول إلى اختبار نقاط نهاية واجهة برمجة التطبيقات القياسية الخاصة بـ InfluxDB لتحديد ما إذا كانت واجهة البرمجة تتطلب مصادقة. وبالتالي، فإن اتجاه الاختبار التالي ليس الوصول إلى / عبر المتصفح، بل إرسال الطلبات مباشرةً إلى نقاط نهاية واجهة برمجة التطبيقات الخاصة بـ InfluxDB.

تحليل سلوك واجهة برمجة التطبيقات وتحديد أهداف المصادقة

فحص نقطة نهاية /ping

بعد تحديد المنفذ 8086 على أنه واجهة برمجة تطبيقات InfluxDB HTTP، تحقق من نقطة نهاية /ping للتأكد من أن الخدمة تعمل:

curl -i <http://192.168.3.137:8086/ping>

image.png

استجابة 204 No Content تؤكد أن InfluxDB تعمل بشكل طبيعي. كما تؤكد الترويسات أن إصدار الخدمة هو InfluxDB OSS 1.6.6

فحص المصادقة على نقطة نهاية /query

curl -i -s "http://192.168.3.137:8086/query?q=SHOW+DATABASES"

image.png

نقطة نهاية /query لا تسمح بالاستعلامات المباشرة دون بيانات اعتماد المصادقة. هذا يؤكد أن InfluxDB مفعّل لديها المصادقة وتمنع جميع الاستعلامات المجهولة المرسلة إلى النظام.

أنتقل إلى التفكير: هل يحتوي إصدار InfluxDB 1.6.6 على أي ثغرة أمنية تسمح بتجاوز آلية المصادقة؟

image.png

بالرجوع إلى قواعد بيانات الثغرات الأمنية العامة، نجد أن إصدارات InfluxDB الأقدم من 1.7.6 تتأثر بثغرة CVE-2019-20933. هذه ثغرة تجاوز مصادقة (Authentication Bypass) داخل دالة المصادقة في InfluxDB، وترتبط بمعالجة رموز JWT بسريّة مشتركة فارغة.

بما أن الهدف يعمل بإصدار InfluxDB 1.6.6، وهو أقل من الإصدار المُصحح 1.7.6، فإن الخدمة تقع ضمن نطاق الإصدارات المتأثرة.

يمكن استنتاج ما يلي:

Service: InfluxDB OSS
Version: 1.6.6
Authentication: Enabled
CVE mapping: CVE-2019-20933
Impact: Authentication Bypass
Status: Version vulnerable

⇒ تفكير: في البداية، تعيد نقطة نهاية /query استجابة 401 Unauthorized، مما يشير إلى أن آلية المصادقة نشطة. ومع ذلك، فإن تفعيل المصادقة لا يعني أمانًا مطلقًا. عندما يتم تحديد بصمة version على أنه 1.6.6، نحتاج إلى ربطه بثغرات CVE المعروفة. تشير النتائج إلى أن هذا الإصدار يقع ضمن النطاق المتأثر بـ CVE-2019-20933، مما يعني أنه من الممكن تجاوز آلية المصادقة التي تحمي نقطة نهاية /query. بناءً على نتائج التحديد هذه، ستركز مرحلة الاستغلال على التحقق من CVE-2019-20933 من خلال توليد رمز JWT مناسب لتجاوز المصادقة وتنفيذ استعلامات على نقطة نهاية /query.

تحليل آلية الثغرة (CVE-2019-20933)

تحدث ثغرة CVE-2019-20933 في دالة authenticate داخل ملف services/httpd/handler.go الخاص بـ InfluxDB في الإصدارات الأقدم من 1.7.6.

آلية مصادقة JWT في InfluxDB

يدعم InfluxDB المصادقة باستخدام رموز الويب JSON (JWT) لطلبات واجهة برمجة التطبيقات HTTP. عند استلام طلب يحمل الترويسة:

Authorization: Bearer <token>

سينفذ InfluxDB الخطوات التالية:

  1. فك تشفير الرمز لاستخراج الترويسة والحمولة (Header and Payload).
  2. قراءة قيمة إعداد shared-secret من ملف influxdb.conf لتكون بمثابة المفتاح السري للتحقق من توقيع الرمز.
  3. إذا كان التوقيع صحيحًا، استرجاع حقل username من المطالبات (claims) لتحديد المستخدم الذي ينفذ الاستعلام.

الخلل

في الإصدارات المتأثرة، إذا تم تفعيل مصادقة JWT ولكن لم يتم تكوين معامل shared-secret، فقد تتم معالجة القيمة السرية كسلسلة فارغة ("").

يفشل النظام في التحقق بشكل كافٍ من قوة السر الأمنية قبل التحقق من توقيع JWT. وهذا يسمح للمهاجم بإنشاء JWT مخصص، وتوقيعه بسريّة فارغة، ثم تعيين مطالبة username على حساب صالح في النظام، مثل admin إذا كان هذا الحساب موجودًا في المختبر.

عند إرسال هذا الرمز عبر ترويسة Authorization: Bearer <token>، يستخدم InfluxDB نفس السر الفارغ للتحقق من التوقيع. إذا تطابق التوقيع وكان اسم المستخدم موجودًا، فسيتم تفويض الطلب دون الحاجة إلى كلمة مرور المستخدم الفعلية.

يمكن تلخيص تدفق المعالجة على النحو التالي:

الخطوةالمعالجة العاديةالخلل في CVE-2019-20933
1يرسل العميل Authorization: Bearer <token>المهاجم ينشئ JWT بنفسه
2يقرأ الخادم shared-secret من الإعداداتshared-secret غير معيّن
3يستخدم الخادم السر للتحقق من توقيع JWTتتم معالجة السر كسلسلة فارغة ""
4إذا كان الرمز صالحًا، استرجاع username من المطالبةالمهاجم يعيّن username=admin إذا كان المستخدم موجودًا
5يمنح الخادم الصلاحيات بناءً على مستخدم المطالبةيتم قبول الطلب دون الحاجة إلى كلمة مرور

تدفق الاستغلال على المستوى المنطقي:

InfluxDB < 1.7.6
→ authentication enabled
→ empty shared-secret
→ attacker creates JWT signed with secret ""
→ sends token via Authorization: Bearer
→ server accepts the token
→ query to /query succeeds

الملخص

بعد فهم آلية الثغرة CVE، من الضروري ربطها بالهدف لتجنب استخلاص الاستنتاجات بناءً على الإصدار فقط.

الشرطنتيجة الهدفالتقييم
الخدمة هي InfluxDBيحدد Nmap الخدمة على أنها InfluxDB http admin 1.6.6متوفر
الإصدار ضمن النطاق المتأثر1.6.6 < 1.7.6متوفر
المصادقة مفعّلة/query يعيد 401 Unauthorizedمتوفر
هل يتم قبول JWT الموقّع بسريّة مشتركة فارغة؟يحتاج إلى تحققغير مؤكد
هل اسم المستخدم في JWT صالح؟يحتاج إلى تحقق/مفترض في المختبرغير مؤكد

في هذه اللحظة، تم تحديد CVE-2019-20933 كمرشح مناسب للغاية للهدف. ومع ذلك، لتأكيد الاستغلال العملي، يجب علينا توليد JWT موقّع بسريّة مشتركة فارغة shared secret وإرساله إلى نقطة نهاية /query.

إذا قبل الخادم هذا الرمز وسمح بتنفيذ الاستعلام، عندها فقط يمكننا أن نستنتج أن الثغرة CVE تم استغلالها بنجاح.

تنزيل الأداة