• Добро пожаловать на сайт - Forumteam.bet !

    Что бы просматривать темы форума необходимо зарегестрироваться или войти в свой аккаунт.

    Группа в телеграме (подпишитесь, что бы не потерять нас) - ForumTeam Chat [Подписатся]
    Связь с администратором - @ftmadmin

Брут-форс веб-сайтов: инструкция по использованию patator, Hydra, Medusa ЧАСТЬ 2

karakas

Проявляет активность
Местный
Регистрация
28.01.19
Брут-форс веб-сайтов: инструкция по использованию patator, Hydra, Medusa ЧАСТЬ 2
hello worldFebruary 11, 2019 https://t.me/blockchainSellBot




4e471e9d16ac365ac81a6.png

https://github.com/jmk-foofus/medusa/issues/14. Будем надеяться, что он её поправит.



Использование THC-Hydra для брут-форса веб-форм, передающих данные методом GET
Как обычно, начнём знакомство с Hydra со страницы с опциями и выпишем те из них, которые нужны для брут-форса веб-форм.

Глобальные опции:

-R восстановить предыдущую прерванную/оборванную сессию

-S выполнить SSL соединение

-s ПОРТ если служба не на порту по умолчанию, то можно задать порт здесь

-l ЛОГИН или -L ФАЙЛ с ЛОГИНАМИ (именами), или загрузить несколько логинов из ФАЙЛА

-p ПАРОЛЬ или -P ФАЙЛ с паролями для перебора, или загрузить несколько паролей из ФАЙЛА

-x МИНИМУМ:МАКСИМУМ:НАБОР_СИМВОЛОВ генерация паролей для брутфорса, наберите "-x -h" для помощи

-e nsr "n" — пробовать с пустым паролем, "s" — логин в качестве пароля и/или "r" — реверс учётных данных

-u зацикливаться на пользователя, а не на паролях (эффективно! подразумевается с использованием опции -x)

-C ФАЙЛ формат где "логин:пароль" разделены двоеточиями, вместо опции -L/-P

-M ФАЙЛ список серверов для атак, одна запись на строку, после двоеточия ':' можно задать порт

-o ФАЙЛ записывать найденные пары логин/пароль в ФАЙЛ вместо стандартного вывода

-f / -F выйти, когда пара логин/пароль подобрана (-M: -f для хоста, -F глобально)

-t ЗАДАЧИ количество запущенных параллельно ЗАДАЧ (на хост, по умолчанию: 16)

-w / -W ВРЕМЯ время ожидания ответов (32 секунды) / между соединениями на поток

-4 / -6 предпочитать IPv4 (по умолчанию) или IPv6 адреса

-v / -V / -d вербальный режим / показывать логин+пароль для каждой попытки / режим отладки

-O использовать старые SSL v2 и v3

-q не печатать сообщения об ошибках соединения

-U подробные сведения об использовании модуля

server цель: DNS, IP или 192.168.0.0/24 (эта ИЛИ опция -M)

service служба для взлома (смотрите список поддерживаемых протоколов)

OPT некоторые модули служб поддерживают дополнительный ввод (-U для справки по модулю)

Опции модулей http-get-form, https-get-form, http-post-form, https-post-form

Модули требует страницу и параметры веб-формы.

По умолчанию этот модуль настроен следовать максимум пяти редиректам подряд. Он каждый раз собирает новое куки с того же URL без переменных. Параметр принимает три разделённых ":" значения, плюс опциональные значения.

(Примечание: если вам нужно двоеточие в строке опций в качестве значения, экранируйте его с "\:", но не экранируйте "\" с "\\".)

Синтаксис:

  • <url>:<параметры формы>:<строка условия>[:<опционально>[:<опционально>]
  • Первое — это страница на сервере (URL) на которую отправляются данные методом GET или POST.
  • Второе — это переменные POST/GET получаемые либо из браузера, либо прокси и т. д. Имена пользователей и пароли будут подставлены вместо заполнителей "^USER^" и "^PASS^" (ПАРАМЕТРЫ ФОРМЫ).
  • Третье — это строка, которая проверяет неверный вход (по умолчанию). Перед условием неверного входа должна стоять "F=", перед условиям успешного входа должна стоять "S=". Это то место, где больше всего людей ошибаются. Вы должны проверить веб-приложение, на что похожа строка, которую он выдаёт при неуспешном входе и указать её в этом параметре!
Следующие параметры опциональны:

C=/page/uri

задаёт другую страницу с которой собрать начальные кукиз.

(h|H)=My-Hdr\: foo

для отправки с каждым запросом заданного пользователем HTTP заголовка

^USER^ и ^PASS^ также могут быть размещены в этих заголовках!

Примечание: 'h' добавит определённый пользователем заголовок в конец, независимо от того, отправила ли уже Hydra заголовок или нет.

'H' заменит значение этого заголовка, если оно существует, тем, которое указал пользователь или добавит заголовок в конец.

Помните, если вы собираетесь разместить двоеточие (:) в ваших заголовках, вам следует их экранировать обратным слэшем (\). Все двоеточия, которые не являются разделителями опций, должны быть экранированы .

Вы можете задать заголовок без экранирования двоеточий, но в этом случае вы не сможете разместить двоеточия в само значения заголовка, поскольку они будут интерпретироваться в hydra как разделители опций.

Примеры:

"/login.php:user=^USER^&pass=^PASS^:incorrect"

"/login.php:user=^USER^&pass=^PASS^&colon=colon\:escape:S=authlog=.*success"

"/login.php:user=^USER^&pass=^PASS^&mid=123:authlog=.*failed"

"/:user=^USER&pass=^PASS^:failed:H=Authorization\: Basic dT1w:H=Cookie\: sessid=aaaa:h=X-User\: ^USER^"

"/exchweb/bin/auth/owaauth.dll:destination=http%3A%2F%2F<target>%2Fexchange&flags=0&username=<domain>%5C^USER^&password=^PASS^&SubmitCreds=x&trusted=0:reason=:C=/exchweb"

Собираем нашу команду:

  • Как всегда, она начинается с бинарного файла THC-Hydra: hydra
  • Опциями -L и -P задаём файлы со списками имён пользователя и паролей: -L opened_names.txt -P 500-worst-passwords.txt
  • Установим количество потоков: -t 10
  • Из четырёх схожих модулей выбираем http-get-form и через символы :// указываем адрес localhost. Здесь же через слеш нам нужно указать адрес страницы формы (/dvwa/vulnerabilities/brute/), передаваемые форме данные, где необходимо указать "^USER^" и "^PASS^" в тех местах, куда будут подставлены имена и пароли (username=^USER^&password=^PASS^&Login=Login) и третье это строка, которая проверяет верный или неверный ввод (incorrect). Все эти данные разделены двоеточиями. Получается:
"http-get-form://localhost/dvwa/vulnerabilities/brute/:username=^USER^&password=^PASS^&Login=Login:incorrect"

  • Не забываем, что нам обязательно нужно передать куки, для этого используем опцию h и через двоеточие ещё дописываем (если внутри заголовка присутствует своё двоеточие, то обязательно экранируем его): h=Cookie\: security=low; PHPSESSID=1n3b0ma83kl75996udoiufuvc2
В конечном счёте у нас получилось:

hydra -L opened_names.txt -P 500-worst-passwords.txt -t 10 "http-get-form://localhost/dvwa/vulnerabilities/brute/:username=^USER^&password=^PASS^&Login=Login:incorrect:h=Cookie\: security=low; PHPSESSID=1n3b0ma83kl75996udoiufuvc2"

И опять, хорошая команда, правильно составлено, но есть одно «но»:

Много ложных срабатываний и ни одного угаданного пароля… Я пробовал менять команду, в качестве условия устанавливал успешный вход с соответствующей строкой. Но результат всегда один: ложные срабатывания и ни одного угаданного пароля… Всё-таки слова автора patator:

  • Неудовлетворённость существующими программами была вызвана следующими их недостатками:они не работают или работают ненадёжно (несколько раз в прошлом они выдавали ложноотрицательные результаты)
  • они недостаточно гибкие (как сделать перебор по всем спискам слов, подставить любой параметр модуля)
  • у них отсутствуют полезные функции (отображение прогресса или пауза во время выполнения)
Это не пустая болтовня о неудовлетворительном качестве альтернативных инструментов. Мы только что в этом убедились сами.



Брут-форс веб-форм, использующих метод POST
Если вы попробовали брут-форс веб-форм, когда они передают данные методом GET, и у вас всё получилось, то с методом POST также не должно возникнуть особых проблем. Теперь адрес страницы у нас будет статичным (не будет меняться), а для указания передаваемых данных мы будем использовать специальную опцию. Пожалуй, это и есть самое большое различие.

Использование patator для брут-форса веб-форм, передающих данные методом POST
Теперь давайте перейдём к брутфорсу веб-входа, когда данные передаются с использованием POST.

Я буду практиковаться в OWASP Mutillidae II, установленной в Web Security Dojo.

Там есть страничка входа http://localhost/mutillidae/index.php?page=login.php, она отправляет данные методом POST. Начнём, естественно, с анализа, введём произвольные данные в форму и нажмём отправить:

Как видим, вход не произошёл, из важного:

  • мы остались на странице http://localhost/mutillidae/index.php?page=login.php, т.е. скорее всего, данные отправляются этому файлу, причём скорее всего используется метод POST
  • при ошибке входа показывается надпись «Password incorrect».
Переходим теперь в Burp Suite:

Здесь важными являются строки:

Они говорят нам о том, что данные передаются методом POST странице /mutillidae/index.php?page=login.php. Также передаются кукиз, которые содержат «PHPSESSID=1n3b0ma83kl75996udoiufuvc2». Сами передаваемые данные имеют вид: «username=admin&password=password&login-php-submit-button=Login».

Анализирует ответ сервера:

Редиректов и записи новых куки нет.

Начинаем строить нашу команду.

  • Она начинается с ./patator.py http_fuzz (файл программы и указание используемого модуля).
  • Далее с опцией url мы указываем адрес страницы, на которую отправляются данные: url="localhost/mutillidae/index.php?page=login.php"
  • Опцией method мы задаём метод отправки данных: method=POST
  • С patator мы ещё не применяли опцию body, теперь пришло её время. В ней мы передаём те данные, которые оправляются серверу. Не забываем добавить заполнители FILE0 и FILE1: body='username=FILE0&password=FILE1&login-php-submit-button=Login'
  • С опциями 0= и 1= мы передаём в программу словари имён пользователя и паролей: 0=namelist_new.txt 1=500-worst-passwords.txt
  • Поскольку какие-то кукиз у нас уже есть, они были записаны автоматически, скорее всего, при первом открытии сайта. Непонятно, с какой периодичностью они будут изменяться, но ясно, что это будет происходить автоматически, как и в первый раз, поэтому мы указываем: accept_cookie=1. Эта опция означает принять кукиз от веб-приложения и отправить их при следующей проверке логина и пароля.
  • И опять мы выбираем игнорировать (не показывать нам) все попытки входа, если в ответе содержится слово incorrect: -x ignore:fgrep='incorrect'
  • После опции -t можно указать количество потоков: -t 50
Всё вместе:

./patator.py http_fuzz url="localhost/mutillidae/index.php?page=login.php" method=POST body='username=FILE0&password=FILE1&login-php-submit-button=Login' 0=namelist_new.txt 1=500-worst-passwords.txt accept_cookie=1 -x ignore:fgrep='incorrect' -t 50

Как видим, результаты есть:

При моих параметрах, иногда возникала ошибка 500 Internal Server Error, которая в данной ситуации означает лишь то, что я заDoS’ил сервер.



Брут-форс входа в phpMyAdmin, WordPress, Joomla!, Drupal
[ДОПИСЫВАЕТСЯ — БУДЕТ ДОБАВЛЕНО ПОЗЖЕ]



Заключение
Итак, из тройки patator, Hydra и Medusa полностью адекватно работающей оказалась только одна программа – patator.

Более того, гибкость patator позволяет проводить брут-форс в обстоятельствах, которые были бы не по зубам Hydra и Medusa (если бы они работали).

Если плачевные результаты Hydra и Medusa связаны с моими неправильными действиями, то просьба написать в комментариях, в чём именно мои ошибки.

Всем спасибо за внимание!
 

nellisos

Пользователь на проверке
На проверке
Регистрация
25.08.21
Как пользоваться, а также что представляет из себя программа THC-Hydra можно прочитать в этой статье , программа не простая, поэтому при ее использовании лучше всего найти хорошую инструкцию, так как hydra поддерживает большое количество служб, ее аналог это - BruteX.
 
Сверху Снизу