
Este é o exploit do CVE-2019-17240.
Versões anteriores e incluindo a 3.9.2 do CMS Bludit são vulneráveis a uma bypass do mecanismo anti-força bruta que está em vigor para bloquear utilizadores que tentaram iniciar sessão incorretamente 10 vezes ou mais.
A vulnerabilidade foi descoberta por Rastating.
Enviar um pedido de login com um valor de cabeçalho X-Forwarded-For de uma string em mudança (string falsificada) foi processado com sucesso, e a tentativa de login falhada foi registada contra a string falsificada.
O script acima usa essa vulnerabilidade para contornar o mecanismo anti-força bruta.
Existem tokens csrf no corpo da página de login, portanto, antes de cada pedido post com credenciais, é necessário obter o token csrf da fonte da última resposta.
Uma forma de o fazer é fazer um pedido get, obter o token csrf e fazer um pedido post com as credenciais e o token obtido, e repetir até encontrar a palavra-passe — e é isto que vi na maioria dos scripts.
A outra forma é obter o token csrf a partir da resposta do último pedido post, por isso apenas na primeira vez é necessário fazer um pedido get.
A segunda forma é muito mais rápida em comparação com a primeira, e um pouco mais de eficiência afeta muito quando se trata de ataques de força bruta onde é necessário fazer muitos pedidos.
Experimentei ambas as formas e consegui testar 63 palavras em 1 minuto pela segunda forma e apenas 19 palavras pela primeira forma.
python3 brute.py -u [url] -user [username] -w [caminhoParaWordlist] [-t [threads a usar]]
python3 brute.py -u https://192.168.10.13/ -user admin -w sysadmin -t 30
