
Prueba de concepto para CVE-2022-45782: tokens de restablecimiento de contraseña predecibles de dotCMS, con un cracker de tokens y una cadena de explotación completa.
Este repositorio contiene un exploit de prueba de concepto para CVE-2022-45782, una vulnerabilidad en dotCMS donde los tokens de restablecimiento de contraseña se generan utilizando el método no criptográfico RandomStringUtils.randomAlphanumeric(). Debido a que este token es predecible, un atacante puede forzarlo por fuerza bruta o derivarlo y restablecer la contraseña de una cuenta de administrador.
Este PoC demuestra la cadena de explotación completa:
Este repositorio utiliza un submódulo de Git que contiene el cracker para la función vulnerable de generación de tokens. Es la implementación en C del cracker utilizado para derivar/adivinar tokens de restablecimiento de contraseña generados por RandomStringUtils.randomAlphanumeric().
Clonar con submódulo:
git clone https://github.com/alex91ar/randomstringutils.git
dotCMS debe enviar correos de restablecimiento para que el PoC funcione.
Editar docker-compose.yml:
DOT_MAIL_SMTP_USER: "<smtp_email>"
DOT_MAIL_SMTP_PASSWORD: "<smtp_pass>"
(Si se usa Gmail: habilitar App Password y usar la contraseña de aplicación de 16 caracteres generada.)
docker compose up
Si falla (común en el primer inicio), simplemente ejecútelo de nuevo.
Página de inicio de sesión: https://localhost:8443/dotAdmin/#/public/login
Dentro de dotCMS:
Estas dos cuentas serán utilizadas por el PoC.
randomstringutils es el herramienta de fuerza bruta/cracker para el token inseguro de dotCMS.
Compilarlo usando:
cd randomstringutils
gcc -lpthread -O3 -o randomutils randomutils.c
Esto produce el binario rápido de craqueo de tokens.
python3 poc.py
Si tiene éxito, el script utiliza el token de administrador descifrado para restablecer la cuenta de administrador.
Este repositorio es solo para fines educativos, académicos y de pruebas de seguridad autorizadas. NO utilice este exploit contra sistemas que no le pertenezcan o para los cuales no tenga permiso explícito de prueba.