
Это эксплойт для CVE-2019-17240.
Версии до 3.9.2 включительно CMS Bludit уязвимы для обхода механизма защиты от брутфорса, который блокирует пользователей, совершивших 10 или более неудачных попыток входа.
Уязвимость была обнаружена Rastating.
Отправка запроса на вход с изменяющимся значением заголовка X-Forwarded-For (поддельной строкой) успешно обрабатывалась, и неудачная попытка входа регистрировалась в журнале с этой поддельной строкой.
Приведённый выше скрипт использует эту уязвимость для обхода анти-брутфорс механизма.
На странице входа присутствуют csrf-токены, поэтому перед каждым POST-запросом с учётными данными необходимо получить csrf-токен из исходного кода последнего ответа.
Один из способов — выполнить GET-запрос, получить csrf-токен, затем отправить POST-запрос с учётными данными и полученным токеном, и повторять до тех пор, пока не будет найден пароль. Именно такой подход я видел в большинстве скриптов.
Другой способ — извлекать csrf-токен из ответа на последний POST-запрос, то есть только для первого раза нужно сделать GET-запрос.
Второй способ значительно быстрее первого, и даже небольшое повышение эффективности сильно сказывается при атаках брутфорсом, где требуется выполнить много запросов.
Я опробовал оба способа и смог проверить 63 слова за 1 минуту вторым способом, тогда как первым — всего 19 слов.
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
