CVE-2021-3156 (Sudo Baron Samedit)
يحتوي هذا المستودع على استغلال ثغرة CVE-2021-3156 الموجّه لأنظمة Linux x64. للاطلاع على الشرح التفصيلي، يرجى زيارة https://datafarm-cybersecurity.medium.com/exploit-writeup-for-cve-2021-3156-sudo-baron-samedit-7a9a4282cb31
الفضل يعود إلى Braon Samedit من Qualys للاستشارة الأصلية.
الملفات
استغلال على glibc مع tcache
- exploit_nss.py يكتشف تلقائيًا جميع المتطلبات وعدد الإدخالات في /etc/nsswitch.conf
- exploit_nss_manual.py نسخة مبسّطة من exploit_nss.py لفهم أفضل للاستغلال
- exploit_timestamp_race.c يستبدل def_timestamp ويستغل حالة السباق لتعديل /etc/passwd
استغلال على glibc بدون tcache
- exploit_defaults_mailer.py يستبدل الاستغلال بنية defaults لتعديل مسار ثنائي mailer. يتطلب sudo مُجمّعًا بدون disable-root-mailer مثل CentOS 6 و7.
- exploit_userspec.py يستبدل الاستغلال بنية userspec لتجاوز المصادقة وإضافة مستخدم جديد في /etc/passwd. يدعم فقط إصدار sudo 1.8.9-1.8.23.
- exploit_cent7_userspec.py نسخة مبسّطة من exploit_userspec.py للفهم ولكنها تستهدف فقط CentOS 7 مع التكوين الافتراضي
- exploit_nss_d9.py يستبدل بنية service_user على Debian 9 ولكنه يدعم فقط /etc/nsswith.conf الافتراضي
- exploit_nss_u16.py يستبدل بنية service_user على Ubuntu 16.04 ولكنه يدعم فقط /etc/nsswith.conf الافتراضي
- exploit_nss_u14.py يستبدل بنية service_user على Ubuntu 14.04 ولكنه يدعم فقط /etc/nsswith.conf الافتراضي
أخرى
- asm/ مكتبة tinyelf وملف تنفيذي مضمّن في استغلال بايثون
- gdb/ سكربتات تُستخدم لتصحيح أخطاء كومة sudo
اختيار الاستغلال
لتوزيعات Linux التي يدعم glibc فيها tcache ومُفعّل (CentOS 8، Ubuntu >= 17.10، Debian 10):
- جرّب exploit_nss.py أولاً
- إذا كان الخطأ غير متعلق بـ glibc tcache، يمكنك تجربة exploit_timestamp_race.c بعد ذلك
لتوزيعات Linux التي لا يدعم glibc فيها tcache:
- إذا كان الهدف هو Debian 9 أو Ubuntu 16.04 أو Ubuntu 14.04، جرّب exploit_nss_xxx.py للإصدار المحدد أولاً
- بعد ذلك، جرّب exploit_defaults_mailer.py. إذا كنت تعلم أن sudo على الهدف مُجمّع مع --disable-root-mailer، يمكنك تخطي هذا الاستغلال. يحاول الاستغلال التحقق من علامة root mailer من ثنائي sudo. لكن صلاحيات sudo على بعض توزيعات Linux هي 4711 (-rws--x--x) مما يجعل التحقق مستحيلًا على النظام الهدف. (الأنظمة المعروفة بالعمل هي CentOS 6 و7)
- أخيرًا، جرّب exploit_userspec.py