
Prova de conceito para CVE-2022-45782: tokens previsíveis de redefinição de senha do dotCMS, com um quebrador de tokens e cadeia de exploração completa.
Este repositório contém uma prova de conceito de exploração para CVE-2022-45782, uma vulnerabilidade no dotCMS onde os tokens de redefinição de senha são gerados usando o método não criptográfico RandomStringUtils.randomAlphanumeric(). Como esse token é previsível, um atacante pode forçá-lo bruta ou derivá-lo e redefinir a senha de uma conta de administrador.
Esta PoC demonstra a cadeia completa de exploração:
Este repositório usa um submódulo Git contendo o cracker para a função vulnerável de geração de tokens. É a implementação em C do cracker usado para derivar/descobrir tokens de redefinição de senha gerados por RandomStringUtils.randomAlphanumeric().
Clone com submódulo:
git clone https://github.com/alex91ar/randomstringutils.git
O dotCMS deve enviar e-mails de redefinição para a PoC funcionar.
Edite docker-compose.yml:
DOT_MAIL_SMTP_USER: "<smtp_email>"
DOT_MAIL_SMTP_PASSWORD: "<smtp_pass>"
(Se estiver usando Gmail: ative a Senha de App e use a senha de app de 16 caracteres gerada.)
docker compose up
Se falhar (comum na primeira inicialização), basta executar novamente.
Página de login: https://localhost:8443/dotAdmin/#/public/login
Dentro do dotCMS:
Essas duas contas serão usadas pela PoC.
randomstringutils é o forçador bruto/cracker para o token inseguro do dotCMS.
Compile-o usando:
cd randomstringutils
gcc -lpthread -O3 -o randomutils randomutils.c
Isso produz o binário rápido de cracker de token.
python3 poc.py
Se bem-sucedido, o script usa o token de administrador descoberto para redefinir a conta de administrador.
Este repositório é apenas para fins educacionais, acadêmicos e testes de segurança autorizados. NÃO use esta exploração contra sistemas que você não possui ou para os quais não tem permissão explícita para testar.