• XSS.stack #1 – первый литературный журнал от юзеров форума

Статья Промокоды, случайно оставленные в исходном коде веб-сайта

baykal

(L2) cache
Пользователь
Регистрация
16.03.2021
Сообщения
370
Реакции
838
vqwjpkekuisjqccuqm-udks138e.png

Не так давно я обнаружил онлайн-магазин, нагло лгущий о количестве людей, просматривающих его товары. Его исходный код содержал функцию JavaScript, рандомизировавшую это число. После моей статьи администраторы магазина втихомолку удалили этот код с веб-сайта.

Сегодня мы снова будем изучать исходный код веб-сайта, но теперь в нём не будет ничего мошеннического. Сайт, который я покажу сегодня, просто раскрыл тайные промокоды в своём публичном коде.

Мы исследуем сайт сети крытых аквапарков Great Wolf Lodge, однако должен сообщить, что веб-сайты довольно часто раскрывают свою внутреннюю информацию в плохом коде.

Я буду объяснять каждый свой шаг, чтобы вы могли сами использовать описанные в статье способы для исследования исходного кода других веб-сайтов. И поверьте мне, в исходном коде можно найти всевозможные любопытные подробности.
Вот что мы сделаем:
  1. Изучим исходный код Great Wolf, где найдём ссылки на промокоды, которые проверим.
  2. Попробуем использовать один из промокодов на веб-сайте и перехватим URL, передаваемый веб-браузеру.
  3. Спойлер: в конечном итоге, мы найдём работающий промокод.

Изучаем исходный код​

Давайте начнём с того, что доберёмся до объекта изучения: Great Wolf. Нажмём правой клавишей мыши в любом месте веб-сайта и выберем «View source» («Просмотреть код»). Нажмём CTRL+F (или CMD+F) для поиска по коду и введём в поле поиска «promocode». Я нашёл две переменные, которые мне показались особо интересными: dealPromoCodeApiUrl и promoCodeList. Первая переменная содержит частичный URL, указывающий на файл JSON (файл с какими-то структурированными данными), в котором могут содержаться промо-коды. Вторая переменная — это массив (коллекция) промокодов.

Если взять URL, найденный в первой переменной, и добавить в его начало «greatwolf.com», то мы получим такой URL: https://www.greatwolf.com/content/experience-fragments/gwl/poconos/experience-fragment/master/_jcr_content/root/plan.json.
На момент написания статьи при переходе на этот URL меня приветствовали четыре разных промокода:

_8we8hnlhqkarwxb-kde4tw48lo.png

Данные, найденные на Great Wolf.

Если открыть URL в браузере, то данные могут и не выглядеть такими структурированными, как у меня. В некоторых браузерах есть встроенная функция просмотра JSON, но в большинстве её нет. Однако у каждого популярного десктопного браузера есть расширения, которые можно установить для более красивого отображения файлов JSON, поэтому достаточно перейти в магазин расширений/приложений своего браузера и поискать по запросу JSON.

Давайте запомним эти коды, а пока проверим ещё одну переменную: promoCodeList. Мы уже знаем её содержимое благодаря изучению исходного кода, но можно отобразить его удобнее с помощью консоли браузера. Откроем инструменты разработчика браузера, которые в большинстве браузеров под Windows открываются нажатием F12. Также в большинстве компьютеров и браузеров можно нажать правой кнопкой мыши в любом месте веб-сайта и выбрать что-то вроде «Inspect element» («Исследовать элемент»). Открыв инструменты разработчика, выберем «Console» («Консоль»). Затем мы можем ввести «promoCodeList» и нажать Enter, после чего увидим ещё пять промокодов:

gximqzqwtyuvhhr8hd2ssgzarj0.png


Давайте попробуем использовать один из них. В верхней части главной страницы Great Wolf есть опция поиска доступных дат. Я поискал даты, выбрал одного посетителя и ввёл обнаруженный ранее промокод: PROMO20.

q19ti4ttekt2g31bmxq7dulg9d4.png

После завершения поиска отобразился текст: «Unfortunately that is not a valid offer code. Please re-enter or view our other offers». («К сожалению, этот промокод недействителен. Введите код заново или изучите другие предложения.»)

Общаемся с веб-сервером​

Мне всегда любопытно следить за тем, как данные перемещаются между браузером и веб-сервером, поэтому давайте перейдём во вкладку «Network» («Сеть») инструментов разработчика. Выберем «XHR», чтобы посмотреть, какие данные перемещаются между страницей и веб-сервером. Если вкладка пуста, обновите страницу. После этого вкладка сети заполнится вызовами API. Аббревиатуры наподобие XHR и API по сути означают, что веб-сайт общается с сервером.

krrmqtmv6kzsk94pvgtfwzb3t78.png


Сетевые вызовы Great Wolf.

Большинство из них не представляет особого интереса, но моё внимание привлекла выделенная строка. В ней написано «availability» («доступность») и похоже, что она отправляет интересные данные. Если нажать на неё, браузер покажет URL, который использует веб-сайт для запроса у сервера свободных номеров в отеле.

qd57ewpwmllardtiuq1yvehhi0m.png


Если нажать на URL, открытый в этой вкладке сети на момент написания, мы окажемся на ещё одной странице, заполненной данными. Результаты на этой странице содержат номера, которые свободны на выбранные даты. Удобно, что в начале данных есть информация, связанная с промокодом. Там указан код ошибки, сообщающей, что предложение недоступно (это мы и так знаем).

_trzs9jx1bukfomlpjssibrqzdy.png


Данные, найденные на Great Wolf.

К сожалению, эти данные не особо интересны, но URL упрощает проверку других промокодов. Если изучить URL, то можно увидеть часть «offerCode=PROMO20». Можно или ввести другой промокод, или перезагрузить URL, чтобы проверить его. Не долго думая, я начал их проверять. Один из найденных ранее промокодов сработал: «FLING40». На момент написания статьи можно было нажать сюда и получить такой отзыв:

bzt82tes8266mprsq6jogjefrsu.png

Данные, обнаруженные на Great Wolf.

И в самом деле, если вернуться на веб-сайт и ввести промокод, то можно убедиться, что он применён:

kxvk6k1-pj2nlzb_beqnpwpw3iq.png

Миссия выполнена.

Стоит также заметить, что некоторые из найденных нами ранее промокодов указаны прямым текстом на странице Deals сайта Great Wolf. Однако кода FLING40, который я использовал, там нет.

Подведём итог​

Мы использовали очень простые методики, чтобы найти промокоды для веб-сайта бронирования номеров. Изучив исходный код, мы нашли несколько интересных переменных JavaScript. Мы проверили их и нашли несколько скрытых промокодов. Также мы обнаружили URL для общения с веб-сервером Great Wolf, позволивший быстрее тестировать коды. В конечном итоге, мы нашли сработавший скрытый промокод. Удачной вам охоты на интересности в исходном коде других сайтов.

Автор оригинала: Jacob Bergdahl
 


Напишите ответ...
  • Вставить:
Прикрепить файлы
Верх