
Este es el exploit de CVE-2019-17240.
Las versiones hasta la 3.9.2 inclusive del CMS Bludit son vulnerables a una evasión del mecanismo anti-fuerza bruta que está implementado para bloquear a los usuarios que hayan intentado iniciar sesión incorrectamente 10 veces o más.
La vulnerabilidad fue descubierta por Rastating.
El envío de una solicitud de inicio de sesión con un valor de cabecera X-Forwarded-For de una cadena cambiante (cadena falsificada) fue procesado con éxito, y el intento de inicio de sesión fallido se registró contra la cadena falsificada.
El script anterior utiliza esa vulnerabilidad para evadir el mecanismo anti-fuerza bruta.
Hay tokens CSRF en el cuerpo de la página de inicio de sesión, por lo que antes de cada solicitud POST que realiza con credenciales, necesita obtener el token CSRF del código fuente de la última respuesta.
Una forma de hacerlo es realizar una solicitud GET, obtener el token CSRF, hacer una solicitud POST con las credenciales y el token obtenido, y repetir hasta encontrar la contraseña; esto es lo que vi en la mayoría de los scripts.
La otra forma es obtener el token CSRF de la respuesta de la última solicitud POST, por lo que solo la primera vez necesitas hacer una solicitud GET.
La segunda forma es mucho más rápida en comparación con la primera, y un poco más de eficiencia afecta mucho cuando se trata de ataques de fuerza bruta en los que necesitas hacer muchas solicitudes.
Probé ambas formas y pude probar 63 palabras en 1 minuto con la segunda forma y solo 19 palabras con la primera.
python3 brute.py -u [url] -user [username] -w [pathToWordlist] [-t [threads to use]]
python3 brute.py -u https://192.168.10.13/ -user admin -w sysadmin -t 30
