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

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

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

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

دليل الأدوات

الفئات

عرض جميع الفئات
Loading categories
CVE-2021-3899_PoC — حالة سباق في apport تؤدي إلى تصعيد الامتيازات المحلية على Ubuntu | Kitploit
أدوات/GitHubGitHub/liumuqing/cve-2021-3899_poc
تصعيد الامتيازاتتحليل الثغرات الأمنيةالاستغلالاختبار الاختراق
GitHubliumuqing/cve-2021-3899_poc

CVE-2021-3899_PoC

حالة سباق في apport تؤدي إلى تصعيد الامتيازات المحلية على Ubuntu

عرض المستودع
3منذ 4 سنواتلم تتم المراجعة بعد

الأكثر شعبية

عرض الكل →

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

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

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

عرض جميع الأدوات →
مشاركة

CVE-2021-3899 PoC

إعادة الإنتاج

  1. قم بتثبيت إصدار أقدم من apport: sudo apt-get install apport=2.20.11-0ubuntu27 (أي إصدار <= 2.20.11-0ubuntu27.10 مناسب، لكن يجب تنزيل كود المصدر)
  2. (اختياري) قم بتعيين pid_max صغيرًا. وإلا فسيستغرق وقتًا أطول للتحضير لاسترجاع pid. echo 10000 | sudo tee /proc/sys/kernel/pid_max
  3. اسمح لأي شخص بتشغيل ping كجذر: أضف ALL ALL=(root) NOPASSWD: /usr/bin/ping في /etc/sudoers
  4. قم بتشغيل الأمر ulimit -c unlimited; ./exploit عدة مرات
  5. يجب أن ترى ملفًا في /etc/logrotate.d/core
  6. افتح نافذة طرفية أخرى وشغّل nc -lvcp 1234
  7. انتظر حتى يتم تشغيل logrotate، يمكنك:
    1. ضبط الساعة قبل دقيقة واحدة من موعد تشغيل crontab اليومي، وانتظر. (تحقق من /etc/crontab)
    2. شغّل sudo logrotate -vf /usr/sbin/logrotate /etc/logrotate.conf لتشغيل logrotate فورًا. (مطابق تمامًا لـ /etc/cron.daily/logrotate)
  8. ستظهر شلّة جذر عكسية متصلة بـ 127.0.0.1:1234

التفاصيل

يتحقق Apport مما إذا كان pid قد أُعيد استخدامه، وذلك بالتحقق مما إذا كان وقت بدء العملية أحدث من وقت بدء Apport نفسه:

root@kitploit:~
  # /usr/share/apport/apport
  594 apport_start = get_apport_starttime()
  595 process_start = get_process_starttime()
  596 if process_start > apport_start:
  597 error_log('process was replaced after Apport started, ignoring')
  598 sys.exit(0)

ولكن يمكن إعادة استخدام هذا pid بعد تشغيل Apport مباشرة. في هذه الحالة، get_apport_starttime() == get_process_starttime().

إذًا، يمكنك جعل Apport يضع ملف core بصلاحيات -rw------- root:root، إذا تمكنت من إعادة شغل هذا PID بعملية أخرى تعمل تحت uid==0:

  1. حضّر عملية X لتتعطل، بحيث يكون pid الخاص بها هو A.
  2. كرّر عملية fork، حتى يصل pid الحالي إلى A - 2.
  3. تسبب في تعطل العملية X، سيطلق kernel تطبيق Apport بpid A - 1. نقتل العملية X، لذا يصبح pid A حرًا.
  4. شغّل الأمر sudo ping 8.8.8.8 مع مجلد العمل الحالي /etc/logrotate.d/. ستعيد عملية تعمل تحت صلاحيات root:root شغل pid A.
  5. بما أن وقت بدء sudo و Apport متطابقان، يتم تجاوز التحقق في السطر 596. عندها يضع Apport ملف core للعملية X في /etc/logrotate.d
تنزيل الأداة