×
Главная   »   Статьи   »   Burp Suite и picoCTF: ищем флаг на сервере и перебираем куки
Burp Suite и picoCTF: ищем флаг на сервере и перебираем куки
Метки:      ,   ,   

Вернемся к изучению Burp Suite и найдем два флага на picoCTF. Научимся пользоваться инструментом Intruder.

Автор статьи никого не призывает к правонарушениям и отказывается нести ответственность за ваши действия. Вся информация предоставлена исключительно в ознакомительных целях. Все действия происходят на виртуальных машинах и внутри локальной сети автора. Спасибо!

Сегодня возвращаюсь к изучению Burpsuite, чтобы решить CTF (https://play.picoctf.org/practice/challenge/132). Задание следующее:

Find the flag being held on this server to get ahead of the competition http://mercury.picoctf.net:47967/

Чтобы найти флаг на указанном сервере, необходимо для начала разобраться с Burpsuite. С ним я уже встречался в «День 11. Веб-анализ при помощи Nikto, OWASP ZAP, Burp Suite и Paros», но к сожалению, практически ничего не вышло.

Для начала разберемся с инструментами.

Target – цель – инструмент, который содержит подробную информацию о наших целевых веб-приложениях и позволяет управлять процессом тестирования.

Proxy – прокси – сам перехватчик, который работает как «человек-по-середине» между браузером и веб-приложением. Он позволяет перехватывать и изменять проходящий трафик в обоих направлениях.

Intruder – инструмент для проведения автоматизированных индивидуальных атак на веб-приложения.

Repeater – повторитель – инструмент для ручного изменения и повторной отправки отдельных HTTP-запросов и анализа ответов веб-приложения.

Sequencer – секвенсор – инструмент для анализа качества случайности в токенах сеанса приложения или в других данных, которые по умолчанию непредсказуемые.

Decoder – декодер – инструмент для ручного или автоматизированного декодирования или кодирования данных приложения.

Comparer – сравнитель – для визуализации различий между любыми двумя элементами данных, например, HTTP-сообщений.

Extensions – позволяет загружать расширения, использующие ваш или стороний код.

Подмена User-Agent

Чтобы подменить User-Agent, достаточно найти в вкладке Proxy -> Options раздел «Match and Replace» и выбрать нужный User-Agent, либо добавить свой. Для чего это может быть нужно? Например, сайт может хранить значение User-Agent в базе данных (какая-нибудь статистика посещений), следовательно, появляется уязвимость при неправильной обработке таких полей (перед добавлением данных в БД, например, кавычки не экранируются). Мы можем создать правило для замены ^User-Agent.*$ на User-Agent: '<script>alert(1)</script> и узнать о возможности SQL-инъекции и XSS.

Возвращаемся к заданию

Если внимательно посмотреть на отправляемые запросы, то можно заметить одинаковый адрес для обеих страниц (синяя и красная), но различные HTTP-методы: POST и GET. На самом деле, подсказка содержится в названии задания «GET aHEAD».

Переходим на вкладку Target, нажимаем по нашему хосту правой кнопкой мыши и отправляем его в Repeater (Send to Repeater). Переходим на вкладку Repeater и меняем метод запроса с GET или POST на HEAD. Нажимаем Send. Вот наш ответ:

HTTP/1.1 200 OK
flag: picoCTF{ответ}
Content-type: text/html; charset=UTF-8

Следующее задание

Переходим к следующему заданию:

Who doesn’t love cookies? Try to figure out the best one. http://mercury.picoctf.net:27177/

Посмотрим на вкладке Proxy сам запрос:

GET / HTTP/1.1
Host: mercury.picoctf.net:27177
…
Cookie: name=-1
Connection: close

Не будем ходить вокруг да около и сразу посмотрим на единственный cookie с именем name. Что-то с ним нужно сделать – в этом я уверен. Отправим для начала этот запрос в Repeater и попробуем поменять значение куки name на 0:

That is a cookie! Not very special though...
I love snickerdoodle cookies!

Такой ответ показался на странице. Поменяем на 1:

GET /check HTTP/1.1
Host: mercury.picoctf.net:27177
…
Cookie: name=1
Connection: close
Referer: http://mercury.picoctf.net:27177/

Получаем уже другой ответ: I love chocolate chip cookies!

Подозреваю что флаг появится в одном из таких сообщений. Разумеется, вручную такой перебор делать неэффективно. А если флаг находится на 158 позиции, например? Отправляем этот запрос в Intruder (инструмент для автоматизации атаки):

Как видите, значение, которое мы планируем менять, обрамлено символами параграфа. Если Intruder сам этого не сделал, то выделите значение -1 и нажмите кнопку Add в правой части.

После чего переходим на вкладку Payloads (Нагрузки). Вариантов можем быть множество: забить список чисел вручную (плохой вариант), загрузить список с числами (тоже так себе) или выбрать тип нагрузки Numbers и генерировать целые числа от 1 до 100. Вряд ли флаг запрятан так далеко.

Переходим на вкладку Options. Во-первых, необходимо разрешить автоматический редирект: в разделе «Redirections» ставим галочку у «Always». Во-вторых, чтобы вручную не искать флаг, добавим в раздел «Grep – Match» подстроку «CTF», которая наверняка присутствует в самом флаге.

Запускаем автоматизированную атаку. Смотрим результат:

Вот мы и решили вторую задачу.

В этом небольшом уроке мы познакомились с инструментом «Repeater» и совсем немного с автоматизированным средством «Intruder».

665 просмотров
02.03.2023
Автор