Перейти к основному содержанию
 

CTF — HTTP open redirect

CTF

Привет, юный безопасник! Продолжаем решать задачки по информационной безопасности web-серверов. Сегодня задачка с портала rootme.org, называется "HTTP - Open redirect". За решение задачки дают 10 баллов, низкая сложность.

ctf

Нам предлагают найти способ выполнить редирект на непредусмотренный владельцем сайта домен:

Find a way to make a redirection to a domain other than those showed on the web page.

Используется уязвимость под названием "Open Redirect" или ""Unvalidated Redirects and Forwards".

Open Redirect Vulnerabilities — уязвимость web-сайта, позволяющая путём манипуляции параметров в URL перенаправить пользователя на ресурс, непредусмотренный разработчиком. В результате злоумышленник может отправить жертве письмо со ссылкой на один сайт, а в результате редиректа жертва попадёт на другой сайт.

Ссылки

https://www.root-me.org

Решение

Переходим на страницу задания:

http://challenge01.root-me.org/web-serveur/ch52/

Видим три ссылки.

ctf

Ссылки ведут на популярные сайты Facebook, Twitter, Slack. Заглянем в код страницы:

ctf

Мы видим, что при клике на кнопку пользователь попадает на ту же страницу, при этом в URL передаётся два параметра:

  • url — ссылка на сайт
  • h — некий хеш

Проверим, что хеш уникален для каждого URL. Возьмём ссылку:

view-source:http://challenge01.root-me.org/web-serveur/ch52/?url=https://slack.com&h=e52dc719664ead63be3d5066c135b6da

Подменим в ней URL, например, на https://google.com:

view-source:http://challenge01.root-me.org/web-serveur/ch52/?url=https://google.com&h=e52dc719664ead63be3d5066c135b6da

Смотрим, что получилось.

ctf

Incorrect hash! Что же, мы видим, что админ действительно проверяет хеши.

Нам остаётся попробовать сгенерировать хеш для google.com, для этого проверим, что за алгоритм хеширования использовал админ. Находим первый попавшийся инструмент для хеширования, например, http://www.fileformat.info/tool/hash.htm. В качестве исходной строки используем "https://slack.com", генерируем хеши.

ctf

Видим, что MD5 хеш совпадает с параметром "h" у ссылки — e52dc719664ead63be3d5066c135b6da. На этой же странице генерируем хеш для "https://google.com".

ctf

Получили 99999ebcfdb78df077ad2727fd00969f. Подставим его в нашу ссылку:

view-source:http://challenge01.root-me.org/web-serveur/ch52/?url=https://google.com&h=99999ebcfdb78df077ad2727fd00969f

ctf

Well done, the flag is e6f8a530811d5a479812d7b82fc1a5c5

Флаг найден. Валидируем.

ctf

Well done, you won 10 Points. Флаг принят.

Безопасность

  1. Если вы выполняете редирект на сторонние ресурсы, то вам необходимо иметь базу разрешённых доменов или ссылок.
  2. Нет смысла использовать в качестве источника хеша данные, которые лежат в открытом доступе. Вы должны использовать секрет.
  3. Динамическая генерация ссылок в зависимости от параметров URL — так себе идея в целом.

Теги