
CVE-2026-41940 cPanel/WHM प्रमाणीकरण बायपास IOC स्कैनर — अपस्ट्रीम डिटेक्शन स्क्रिप्ट में गलत सकारात्मक परिणामों को ठीक करता है, लॉग क्रॉस-सहसंबंध जोड़ता है
cPanel/WHM प्रमाणीकरण बाईपास (CVE-2026-41940) का पता लगाने वाली स्क्रिप्ट, जो 11.40 के बाद के सभी cPanel संस्करणों को प्रभावित करती है।
यह अपस्ट्रीम cPanel डिटेक्शन स्क्रिप्ट का पुनर्लेखन है, जिसमें गलत सकारात्मक परिणामों के लिए सुधार और लॉग सहसंबंध जोड़ा गया है।
/var/cpanel/sessions/raw/ को न्यूलाइन-इंजेक्शन शोषण के संकेत दिखाने वाली सत्र फ़ाइलों के लिए स्कैन करता है, फिर संदिग्ध IP और सत्र टोकन को cPanel एक्सेस/लॉगिन/त्रुटि लॉग के विरुद्ध क्रॉस-रेफरेंस करता है। साथ ही, ऐतिहासिक शोषण के लिए access_log को भी स्कैन करता है जहाँ सत्र फ़ाइल समाप्त हो चुकी है या हटा दी गई है।
pass रेगेक्स को हटाता है जो उत्पादन में हर प्रमाणित सत्र पर गलत सकारात्मक परिणाम देती है (रेगेक्स किसी भी pass= फ़ील्ड के बाद दूसरी पंक्ति से मेल खाती है, जो हर सत्र फ़ाइल है)।method=badpass origin + कोई भी पोस्ट-प्रमाणीकरण विशेषता के लिए, संकीर्ण token_denied + cp_security_token संयोजन की आवश्यकता के बजाय। token_denied को छोड़ने वाले PoC वेरिएंट को पकड़ता है।POST /login/?login_only=1 -> 401) को उसी IP से बाद के सफल cpsess टोकन उपयोग के साथ सहसंबंधित करके।--extended मोड अतिरिक्त स्रोतों में गहरे लॉग स्वीप के लिए।# Bash — हर जगह काम करता है, कोई निर्भरता नहीं
bash <(curl -fsSL https://raw.githubusercontent.com/AndreiG6/cpanel-cve-2026-41940-ioc/main/ioc.sh)
# Python — बड़े सत्र निर्देशिकाओं पर तेज़, --json का समर्थन करता है
curl -fsSLo /tmp/ioc.py https://raw.githubusercontent.com/AndreiG6/cpanel-cve-2026-41940-ioc/main/ioc.py
python3 /tmp/ioc.py
# विस्तारित स्कैन (किसी भी वेरिएंट)
bash <(curl -fsSL https://raw.githubusercontent.com/AndreiG6/cpanel-cve-2026-41940-ioc/main/ioc.sh) --extended
python3 /tmp/ioc.py --extended
# चलाने के बाद निकास कोड जाँचें ($? = 0 साफ, 1 IOC मिले, 2 पर्यावरण त्रुटि)
echo $?
curl फ़्लैग:
-fHTTP त्रुटियों पर विफल होता है, bash में त्रुटि पृष्ठ पाइप करने के बजाय,-sमौन (कोई प्रगति पट्टी नहीं),-S-sके बावजूद त्रुटियाँ दिखाता है,-Lरीडायरेक्ट का पालन करता है।
Python वेरिएंट संरचित आउटपुट के लिए --json का समर्थन करता है जिसे आप jq में पाइप कर सकते हैं, SIEM में फीड कर सकते हैं, या प्रोग्रामेटिक रूप से संसाधित कर सकते हैं।
# पूर्ण JSON आउटपुट
python3 ioc.py --json
# केवल सारांश गणना
python3 ioc.py --json | jq '.counts'
# सभी CRITICAL निष्कर्ष सूचीबद्ध करें
python3 ioc.py --json | jq '[.findings[] | select(.severity == "CRITICAL")]'
# अद्वितीय हमलावर IP निकालें
python3 ioc.py --json | jq '.suspect_ips[]'
# स्रोत IP के साथ निष्कर्ष दिखाएँ (फ़ायरवॉल ब्लॉकलिस्ट के लिए)
python3 ioc.py --json | jq '[.findings[] | {severity, source_ip, token: .cp_security_token}]'
# सभी IP प्राप्त करें जिनके पास सफल टोकन उपयोग था (तत्काल ब्लॉकिंग के लिए)
python3 ioc.py --json | jq '[.findings[] | select(.severity == "CRITICAL") | .source_ip] | unique'
# किसी विशिष्ट IP के लिए क्रॉस-रेफ डेटा फीड करें
python3 ioc.py --json | jq '.cross_ref[.suspect_ips[0]]'
उदाहरण JSON संरचना:
{
"findings": [
{
"severity": "CRITICAL",
"file": "/var/cpanel/sessions/raw/:Q3f8Ag2epeBuTaIZ",
"verdict": "Injected token used successfully (2xx/3xx in access_log)",
"origin": "address=203.0.113.50,app=whostmgrd,method=badpass",
"source_ip": "203.0.113.50",
"user": "root",
"hasroot": "1",
"tfa_verified": "0",
"cp_security_token": "/cpsess04396539398",
"token_denied": "1",
"successful_internal_auth_with_timestamp": "9999999999",
"token_hits": [
"203.0.113.50 - root [04/30/2026:12:12:01 -0000] \"GET /cpsess04396539398/json-api/version HTTP/1.1\" 200 0 ..."
]
},
{
"severity": "MEDIUM",
"file": "/var/cpanel/sessions/raw/:2TDiaHwh_r8qOH5y",
"verdict": "Injection landed; token was tried but BLOCKED (all 4xx/5xx)",
"source_ip": "198.51.100.23",
"cp_security_token": "/cpsess5637704041",
"token_hits": [
"198.51.100.23 - root [04/30/2026:04:08:09 -0000] \"GET /cpsess5637704041/json-api/version HTTP/1.1\" 403 0 ..."
]
},
{
"severity": "CRITICAL",
"file": null,
"verdict": "Injected cpsess token used with 2xx/3xx after failed login; session expired or purged",
"source_ip": "203.0.113.99",
"cp_security_token": "/cpsess8705792557",
"token_hits": ["..."]
}
],
"counts": {"critical": 2, "high": 15, "medium": 71, "warning": 0},
"suspect_ips": ["203.0.113.50", "198.51.100.23", "203.0.113.99"],
"suspect_ips_omitted": 0,
"cross_ref": {
"203.0.113.50": {
"cpanel_access_log": ["...last 5 lines..."],
"cpanel_login_log": ["..."]
}
},
"advisory": "https://support.cpanel.net/hc/en-us/articles/40073787579671"
}
git clone https://github.com/AndreiG6/cpanel-cve-2026-41940-ioc.git
cd cpanel-cve-2026-41940-ioc
# Bash वेरिएंट
bash ioc.sh # डिफ़ॉल्ट (CRITICAL/HIGH विस्तारित, MEDIUM/WARNING केवल गणना)
bash ioc.sh -v # वर्बोज़ (सभी निष्कर्ष विस्तारित करें)
bash ioc.sh --extended # वर्बोज़ + गहरे लॉग + क्रॉस-रेफ में सभी IP
# Python वेरिएंट (समान डिटेक्शन लॉजिक, तेज़, संरचित आउटपुट)
python3 ioc.py # डिफ़ॉल्ट (bash के समान संक्षिप्त व्यवहार)
python3 ioc.py -v # वर्बोज़
python3 ioc.py --extended # वर्बोज़ + गहरे लॉग
python3 ioc.py --json # संरचित JSON (हमेशा सभी निष्कर्ष शामिल करता है)
लक्ष्य cPanel सर्वर पर रूट के रूप में चलाया जाना चाहिए। Python वेरिएंट के लिए Python 3.6+ आवश्यक है (CentOS 7 / CloudLinux 7+ के साथ आता है)।
| कोड | अर्थ |
|---|---|
| 0 | कोई संकेतक नहीं मिला |
| 1 | IOC का पता चला |
| 2 | पर्यावरण त्रुटि (cPanel सर्वर नहीं) |
MIT