
استغلال Python للثغرة CVE-2026-96451 في إضافة WordPress Ultimate Member <= 2.13.1: يؤتمت التسجيل، وجمع الـ nonce، والاستيلاء على الحساب عبر تغيير البريد الإلكتروني على قوائم الأهداف.
ثغرة تصعيد الصلاحيات في إضافة 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 )