
vRealize: تنفيذ تعليمات برمجية عن بُعد (RCE) + تصعيد الامتيازات (CVE-2021-21975, CVE-2021-21983, CVE-0DAY-?????)
vRealize RCE + Privesc (CVE-2021-21975, CVE-2021-21983, CVE-0DAY-?????)
"من السهل إيقافه كما هو سهل فهمه."
"Reality Smasher" هو استغلال (Exploit) لـ vRealize يستفيد من الثغرات الأمنية التي تمت معالجتها في VMSA-2021-0004 (CVE-2021-21975, CVE-2021-21983) بالإضافة إلى ثغرة تصعيد صلاحيات تم اكتشافها أثناء الاختبار.
يستغل "Reality Smasher" ثغرة CVE-2021-21975 لسرقة بيانات اعتماد حساب "maintenanceAdmin" الخاص بـ vRealize. يتم تحقيق ذلك عن طريق استضافة مستمع HTTPS باستخدام المفتاح والشهادة المرفقين في هذا المستودع. تُستخدم هذه البيانات في جميع الطلبات المصادَق عليها لاحقًا. أولًا، يتم طلب كلمات مرور حساب المسؤول المُجزّأة (hashed) وتخزينها لاستخدامها لاحقًا.
بعد ذلك، يتم إرسال طلب لتفعيل خدمة SSH. يتبع ذلك استبدال ملف "admin.properties" باستخدام CVE-2021-21983. ثم يتم إرسال طلب لتعيين كلمة المرور الأولية لمستخدم المسؤول. يُسمح بذلك لأن بيانات اعتماد المسؤول كانت مخزنة في "admin.properties". وبدون هذا الملف، يعتقد vRealize أن بيانات الاعتماد لم تُعيّن مطلقًا ويقبل الطلب غير المصادَق "/security/adminpassword/initial".
بعد التحقق من أن بيانات اعتماد المسؤول الجديدة تسمح بالوصول عبر SSH، يتم توليد مفاتيح SSH. ثم تُستخدم ثغرة تصعيد الصلاحيات للسماح بتسجيل دخول root عبر SSH، وإعادة تشغيل خدمة sshd، وإلحاق المفتاح العام بملف "/root/.ssh/authorized_keys". بعد التحقق من الوصول إلى root عبر SSH، تُستعاد كلمات المرور المُجزّأة الأصلية، ويُمنح المستخدم قشرة SSH تفاعلية كمستخدم root. تتم جميع عمليات SSH باستخدام "golang.org/x/crypto/ssh".
بُذلت جهود كبيرة لضمان موثوقية ومتانة هذا الاستغلال. ومع ذلك، هذا هو أول مشروع لي بلغة golang، لذا استخدم هذا الاستغلال على مسؤوليتك الخاصة. يُنصح بتشغيل هذا الاستغلال مع وضع الإطناب (verbosity) لالتقاط كلمات المرور المُجزّأة والمفتاح الخاص المُولّد.
