
ماسح عالي الدقة لثغرة CVE-2026-41940 (تجاوز المصادقة في cPanel وWHM)
ماسح عالي الدقة لتجاوز المصادقة في cPanel/WHM المتتبع باسم CVE-2026-41940. يحدد المضيفات المعرّضة دون إنتاج السلبيات الكاذبة الشائعة في إثباتات المفهوم والكشوفات العامة، ودون تفعيل آليات قفل الحساب وقائمة السماح لعناوين IP الجذر التي تعيق الفحص الساذج.
تتضمن الأداة أيضًا سلسلة استغلال منفصلة اختيارية من العائلة نفسها لثغرة
اجتياز المسار في CalDAV على cpdavd (المنفذ 2079 نصي / 2080 TLS) —
CVE-2026-29205 —
تتيح لمهاجم عن بُعد قراءة ملفات عشوائية بصلاحيات root
بمجرد نجاح خطوة إعداد صغيرة عبر SMTP. يصلح cPanel 11.134.0.26 الخلل الأساسي
في عمر RAII، فأصبحت القراءة الآن تُنفَّذ بصلاحيات مالك الحساب غير المميز؛
الاجتياز نفسه ما يزال يصل إلى cpdavd لكنه لا يمكنه التصعيد إلى ما يتجاوز
ما يمكن لذلك الحساب قراءته أصلًا. سلسلة CalDAV مُقيَّدة خلف
--exploit وهي معطّلة افتراضيًا لأنها ترسل رسائل بريد إلكتروني حقيقية
وتقرأ ملفات من أهداف مؤكدة — انظر قسم
وضع الاستغلال (نشط).
معظم الكشوفات العامة لـ CVE-2026-41940 تتشارك ثلاث مشكلات. يعالج هذا الماسح كل واحدة منها.
يمكنك قراءة تدوينتنا حول تقنية الكشف هذه هنا: https://slcyber.io/research-center/high-fidelity-check-for-the-cpanel-authentication-bypass-cve-2026-41940/
تثبّت تهيئة Apache الخاصة بكل vhost في cPanel قاعدة ProxyPass تعيد توجيه
/___proxy_subdomain_whm إلى 127.0.0.1:2086 و/___proxy_subdomain_cpanel
إلى 127.0.0.1:2080 بغض النظر عن ترويسة Host في الطلب. تعمل
RewriteCond فقط على تقييد قاعدة إعادة الكتابة التي تربط النطاق الفرعي للإدارة
بمسار البروكسي؛ أما ProxyPass نفسها فهي غير مشروطة. الوصول إلى هذه المسارات على أي vhost
يخدمه Apache مُدار بواسطة cPanel يصل إلى نفس الخلفية المعرّضة مثل منافذ الإدارة.
الماسحات التي تفحص المنافذ 2082/2083/2086/2087 فقط ستبلغ أن المضيف غير معرّض عندما تكون هذه المنافذ محمية بجدار ناري، رغم أن الثغرة قابلة للوصول بالكامل عبر 443. يفحص هذا الماسح المنافذ 2087 و2083 ومساري البروكسي على 443 افتراضيًا.
يأتي cPanel مع cphulkd، الذي يقفل الحسابات بعد عدد صغير من محاولات كلمة
المرور الفاشلة، وauthorized_whm_root_ips، الذي يقيّد تسجيلات دخول الجذر
بقائمة مُهيأة من عناوين المصدر. الماسح الذي يستغل التجاوز بمحاولة حقن جلسة
لـ root سوف:
يتجنب هذا الماسح المشكلتين على جانب WHM بحقن expired=1 في حمولة الجلسة
تحت اسم مستخدم مولّد عشوائيًا. يُتحقق من حقن الجلسة بزيارة عنوان
cpsessXXXX الناتج ومطابقة msg_code:[expired_session] في نص الاستجابة،
وهو موجود فقط عند نجاح الحقن. لا يُستهدف أي حساب حقيقي، لذا لا يمكن قفل أي
حساب حقيقي، وتصبح قائمة سماح الجذر غير ذات صلة لأنه لا تُحاول أي عملية تسجيل
دخول كجذر.
يتطلب خفي cPanel (cpaneld، المنفذ 2083 ومسار /___proxy_subdomain_cpanel)
أن يطابق اسم المستخدم المُقدَّم حساب cPanel موجودًا على القرص
(-f /var/cpanel/users/$user). لن يرضي اسم المستخدم root هذا الفحص أبدًا
لأن root مستخدم نظام وليس مستخدم cPanel. الكشوفات التي تجرّب root فقط
تنتج سلبيات كاذبة على هذا السطح. يستخدم هذا الماسح قائمة كلمات قابلة للتهيئة
من أسماء مستخدمي cPanel الشائعة ضد سطح cPanel، ويعود إلى مسار اسم المستخدم
العشوائي على سطح WHM، الذي لا يخضع لمثل هذا القيد.
لكل هدف، ينفذ الماسح الخطوات التالية لكل سطح:
GET /login واقرأ ترويسة Set-Cookie إما لـ
whostmgrsession (WHM) أو cpsession (cPanel). تحتوي الكوكي على
مكوّن اسم جلسة مفصول بفواصل.GET / مع ترويسة Authorization: Basic التي قيمتها المفكوكة هي
<user>:\xff\nexpired=1. الجزء \nexpired=1 في النهاية هو حمولة حقن
الجلسة. تُعاد كوكي الجلسة من الخطوة 1 كما هي دون تعديل.Location من الاستجابة واستخرج رمز cpsessXXXX.GET /<cpsessXXXX>/ مع الكوكي الأصلية وابحث عن
msg_code:[expired_session] في النص. وجوده يثبت نجاح حقن الجلسة
وأن المضيف معرّض.في WHM (المنفذ 2087 ومسار /___proxy_subdomain_whm على 443)، يكون اسم
المستخدم u عشوائيًا متبوعًا بعشرة أحرف سداسية عشرية. في cPanel (المنفذ 2083
ومسار /___proxy_subdomain_cpanel على 443)، يجتاز الماسح قائمة كلمات
أسماء المستخدمين ويتوقف عند أول تطابق.
افتراضيًا، يفحص الماسح المنافذ 2087 و2083 و443 بهذا الترتيب ويتوقف فور تأكيد أي سطح لوجود الثغرة.
--exploit)CVE-2026-29205 — تحديث أمان cPanel/WHM WP2 بتاريخ 13 مايو 2026. أُصلح في cPanel 11.134.0.26. تتتبع النشرة الإرشادية نفس انحدار إسقاط الصلاحيات في
cpdavdالذي تسيء استخدامه سلسلة الاستغلال هذه.
الشرح الكامل للثغرة وسلسلة الاستغلال: https://slcyber.io/research-center/new-age-of-collisions-reading-arbitrary-files-pre-auth-as-root-in-cpanel-cve-2026-29205
cpdavd على المنفذين 2079 (HTTP نصي) و2080 (TLS) يثق في مسار
<principal>/<collection>/... الذي يبنيه عند تقديم موارد CalDAV/CardDAV.
من خلال صياغة طلب يرمّز مكوّن مساره إلى مقاطع .. وتوجيهه إلى مجلد maildir
الذي يرمّز اسمه على القرص أيضًا إلى اجتياز (x-attachment-1-y)، يمكن إجبار
cpdavd على قراءة أي ملف على القرص بصلاحيات root، بغض النظر عن الملكية أو
الأذونات — بما في ذلك /etc/shadow و/etc/passwd ومخازن البريد لكل مستخدم.
فشل الدفاع المتعمق الذي كان من المفترض أن يُسقط الصلاحيات إلى مالك الحساب قبل
القراءة بصمت: أُنشئ كائن Cpanel::AccessIds::ReducedPrivileges في سياق void،
لذا استعاد مدمّره صلاحيات root قبل تنفيذ القراءة. يربط cPanel 11.134.0.26
الكائن بمتغير معجمي my $privs فيبقى حيًا عبر سلسلة -f / stat / open /
read؛ لذلك على المضيفات المحدَّثة تُنفَّذ القراءة بصلاحيات مالك الحساب غير
المميز بدلاً من root.
يجب أن يكون المجلد المعرّض موجودًا على القرص قبل أن تنجح القراءة. ينشئ cPanel
تلقائيًا مجلدًا باسم .x-attachment-1-y للمستلم
<user>+x-attachment-1-y@<domain> في أول مرة يصل فيها بريد إلكتروني إلى ذلك
العنوان الفرعي. السلسلة إذن هي:
info وadmin
وwebmaster).<prefix>+x-attachment-1-y@<domain> إلى كل مرشح. يتم تتبع استجابات
RCPT TO المقبولة.GET لاجتياز المسار إلى cpdavd
على المنفذين 2080 (TLS) و2079 (نصي)، تحت بادئتي المجموعة /calendar/
و/addressbook/.النجاح يعيد بايتات الملف؛ ويسجّل الاكتشاف البريد الإلكتروني المستخدم والمجموعة وعدد البايتات وأول 200 بايت كمعاينة.
هذا الفحص معطّل ما لم يُمرَّر --exploit. عند تفعيله يتطلب مرحّل SMTP
صادر يعمل (انظر ملف الإعدادات أدناه) لأن خطوة إنشاء
المجلد لا يمكن تخطيها.
يعمل الاستغلال فقط ضد حسابات البريد الإلكتروني الافتراضية الحقيقية المكوّنة
ضمن ميزة Email Accounts في cPanel. عناوين الاستقبال الشامل لا تعمل — فالعنوان
الشامل يُوجَّه عبر موجّه system_aliases في Exim، ولا يصل أبدًا إلى
ناقل dovecot_virtual_delivery، وبالتالي لا يفعّل مسار
lda_mailbox_autocreate الذي ينتج مجلد .x-attachment-1-y/.
عندما تعرف مسبقًا بريدًا إلكترونيًا افتراضيًا صالحًا على الهدف، مرّره
مع --email:
python scanner.py --config scanner.ini --email [email protected] target.com
--email يتخطى تعداد SAN للشهادة وقائمة بادئات الرش بالكامل
ويرسل رسالة واحدة بالضبط إلى العنوان الذي زوّدته. يمكن تكراره
لاستهداف عدة حسابات معروفة. المسار الموجّه أكثر موثوقية بكثير من مسار الرش.