
Exploit em Python para CVE-2026-41940, uma injeção CRLF crítica no cpsrvd do cPanel/WHM que contorna a autenticação e o 2FA, concedendo acesso de nível root por meio de uma cadeia de ataque HTTP em 4 etapas.
Vulnerabilidade: Manipulação de arquivo de sessão por meio de injeção de CRLF no manipulador de autenticação HTTP Basic do cpsrvd CVE: CVE-2026-41940 CVSS: 9.8 (Crítico) CWE: CWE-93 (Injeção de CRLF) / CWE-306 (Autenticação Ausente) Afetados: versões do cPanel & WHM anteriores a: 11.110.0.97, 11.118.0.63, 11.126.0.54, 11.132.0.29, 11.134.0.20, 11.136.0.5 Portas: 2082/2083 (cPanel), 2086/2087 (WHM), 2095/2096 (Webmail)
CAUSA RAIZ TÉCNICA: O manipulador de autenticação HTTP Basic do cpsrvd armazena a senha fornecida literalmente no arquivo de sessão de pré-autenticação por meio de Cpanel::Session::saveSession() -- ignorando os wrappers de sanitização Cpanel::Session::create() / Cpanel::Session::Modify::save(), que chamam filter_sessiondata() para remover CR/LF. Como o próprio saveSession() não chama filter_sessiondata(), qualquer CR/LF na senha é gravado no arquivo de sessão bruto como quebras de linha literais.
Quando uma requisição é rejeitada por falhar na verificação do token de segurança vinculado à URL, o manipulador do_token_denied() do cpsrvd invoca Cpanel::Session::Modify::new($session, nocache => 1). O sinalizador nocache => 1 força uma nova análise do arquivo de sessão bruto (key=value linha por linha) em vez de carregar o cache JSON. Linhas separadas por CRLF do campo pass controlado pelo atacante agora são tratadas como registros key=value separados. Modify::save() então reescreve o cache JSON com todas as chaves analisadas -- incluindo as do atacante -- promovidas a entradas de sessão de nível superior.
Após a regeneração, a sessão contém user=root, hasroot=1, tfa_verified=1, um cp_security_token escolhido pelo atacante e um successful_internal_auth_with_timestamp recém-criado. O cpsrvd trata a sessão como totalmente autenticada.
CADEIA DE ATAQUE (4 requisições HTTP):
NOTA: Há uma condição de corrida devido à ordem de iteração aleatória do hash do Perl. O cp_security_token original (não definido) pode sobrescrever o injetado. Múltiplas tentativas tornam a cadeia confiável.
AVISO LEGAL: Esta ferramenta é fornecida apenas para testes de segurança autorizados e fins de pesquisa. O uso não autorizado contra sistemas que você não possui ou sem permissão explícita para testar é ilegal.