
POC تم تطويره ذاتيًا لاستغلال تجاوز سعة المكدس لـ ESXI (CVE-2021-21974)، يدعم فقط الأهداف والبيئة المقدمة من المشروع، للاستخدام في التعلم والبحث.
إثبات المفهوم (PoC) لتنفيذ التعليمات البرمجية عن بعد عبر تجاوز سعة الكومة في OpenSLP لـ VMware ESXi
المؤلف: Aiyakami
CVE-2021-21974 هي ثغرة أمنية من نوع تجاوز سعة الكومة (Heap Overflow) موجودة في خدمة OpenSLP في VMware ESXi. يمكن للمهاجم إرسال حزم بيانات مصممة خصيصًا إلى خدمة SLP (المنفذ الافتراضي 427) على مضيف ESXi المستهدف دون مصادقة، مما يؤدي إلى تنفيذ التعليمات البرمجية عن بعد (RCE).
يحتوي هذا المستودع على إثبات مفهوم (PoC) بلغة Python في ملف واحد يمكنه إعادة إنتاج الثغرة بشكل موثوق على بيئة ESXi 6.7 حقيقية. يتم الاختراق عبر الشبكة بالكامل، ولا حاجة لبيانات اعتماد محلية أو وصول SSH لتنفيذ الأوامر.
| العنصر | المعلومات |
|---|---|
| النظام المستهدف | VMware ESXi 6.7.0 Update03 |
| رقم البناء | 14320388 |
| الخدمة الثغرة | OpenSLP (slpd)، المنفذ 427 |
| معدل النجاح | 100% |
صورة ISO الرسمية لـ VMware-VMvisor-Installer 6.7.0 update03 build-14320388:
هذه الصورة هي صورة التثبيت الأصلية المستخدمة في بيئة الاختبار المذكورة أعلاه، ويمكنها إعادة إنتاج نجاح إثبات المفهوم هذا بنسبة 100%.
توضح لقطتا الشاشة التاليتان النتائج الفعلية لتشغيل إثبات المفهوم هذا على ESXi 6.7 build-14320388:


# يجب أن تكون خدمة slpd قيد التشغيل على مضيف ESXi الهدف (المنفذ الافتراضي 427)
python CVE-2021-21974.py
عند تشغيل السكريبت، سيطبع اسم المؤلف، ثم ينفذ سلسلة الاستغلال الكاملة:
تسريب المعلومات في المرحلة 1 → قراءة عنوان عشوائي → تسريب عنوان قاعدة libc → تحديد موقع المخزن المؤقت DB → تغيير __free_hook إلى system → تشغيل SrvDeReg لتنفيذ الأمر.
الأمر الافتراضي COMMAND هو:
echo PWNED_BY_CVE_2021_21974>/tmp/p
بعد النجاح، يمكن رؤية PWNED_BY_CVE_2021_21974 في /tmp/p على المضيف الهدف.
ملاحظة: يعتمد إثبات المفهوم هذا على معاملات تخطيط كومة ثابتة، ويعتمد على إصدارات slpd / glibc الخاصة بـ ESXi 6.7 build-14320388. عند تغيير البيئة، يجب تعديل معاملات fd / size / pacing وفقًا لذلك.
يُستخدم هذا المشروع فقط في أبحاث الأمن المصرح بها وسيناريوهات التدريس CTF / AWD، ويتم التحقق منه في بيئة صندوق رمل معزولة. يُرجى عدم استخدامه على أنظمة حقيقية غير مصرح بها. يتحمل المستخدم كامل المسؤولية القانونية الناتجة عن ذلك.