TinyUrl и Cross Site Scripting

Security

Автор: Александр Степанов

1 нояб. 2011 г., 10:12:41  1668


Доброго времени суток!

Часть 1 — общие сведения об TinyUrl

Наверно, каждый из пользователей всемирной паутины сталкивался с проблемой отправки/передачи ссылки на какой то материал в сети. Ссылки такого вида: http://gibs0n.name/article/Предотвращение+распространения+USB+вирусов Чтоже тут плохого?

На первый взгляд ничего, но многие сервисы использующие автоматическую типографию (преобразование текста в гипертекст) могут попросту «откусить» часть ссылки и переходе по ней пользователь попросту не увидит желаемый материал. Не думаю, что пользователь будет искать причину ошибки и попросту уйдет с ресурса.

Тогда для чего это нужно?

Так уж сложилось, что web 2.0 диктует нам свои правила и современные ресурсы должны отвечать новым стандартам (может быть и негласным). Это относиться не только к заголовкам статьям, но и к тегам, все тот же web 2.0

Сразу замечу, что не нужно четко брать за пример который я привел. Многие CMS формирую так называемы «slug» (слоганы), т.е. ссылки из которых убраны пробелы, а буквы транслитированы.

TinyUrl сервисы

Тут безусловным лидером является сервис tinyurl.com и наш tinyurl.ru. Эти сервисы дают возможность сократить ссылку, но не сделать ее понятной для конечного пользователя, тут то и кроется опасность.

Приведу кусок чужой статьи с www.epochta.ru/blog/ очень образованная женщина видимо)))

Используя Rex Swain’s HTTP Viewer (софтина совершенно не имеет значения =)) можно посмотреть ответы сервера TinyURL на запрос нашей ссылки tinyurl.com/c3ny43:

HTTP/1.1·301·Moved·Permanently(CR)(LF) Connection:·close(CR)(LF) X-Powered-By:·PHP/5.2.8(CR)(LF) Location:·http://www.epochta.ru/blog/fun/yumor-pro-email-marketing-i-ne-tolko/(CR)(LF) Content-type:·text/html(CR)(LF) Content-Length:·0(CR)(LF) Date:·Wed,·08·Apr·2009·21:23:14·GMT(CR)(LF) Server:·TinyURL/1.6(CR)(LF) (CR)(LF)

Таким образом становится очевидным, что TinyURL использует 301 редирект (страница перемещена навсегда) для перенаправления пользователя на исходную ссылку. Это наиболее правильный способ указать поисковой системе, что страница была перенесена и индексировать стоит именно исходную страницу с длинным адресом. А это, в свою очередь, позволяет без особых потерь с точки зрения SEO использовать короткие ссылки.

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

  • TR.im – 301 редирект;
  • BUDURL – 301 редирект;
  • B23 – 301 редирект;
  • Tiny.cc – 302 редирект;

302 редирект — это то, что вам следует избегать при использовании сервисов преобразования ссылок. Так как 302 редирект означает, что ссылка временно перенесена и поисковые системы оставляют ее в индексе, ссылка не переносит PR и вес страницы. Поэтому будьте внимательны.

Помимо этого, многие сервисы дают возможность собирать статистику переходов по ссылкам, могут отправлять уведомления при переходе.

Но есть и отрицательные моменты использования сервисов уменьшения URL:

  • при технических проблемах на серверах могут быть недоступны все ваши ссылки;
  • подобные сервисы маскируют оригинальные ссылки и этим могут пользоваться скамеры и читеры;
  • сервисы и скрипты, которые делают предварительный просмотр ссылаемой страницы в большинстве случаев просто не могут отобразить снимок страницы;
  • спамеры могут использовать сервисы для маскировки своих ссылок в рассылках, чтобы обойти антиспам фильтры;

Так что я рекомендую использовать подобные сервисы только в крайних случаях.

Я тоже не рекомендую использовать подобные ресурсы, либо прибегать к ним как можно реже. Почему вы поймете дальше.

Часть 2 — реализация пассивных XSS через TinyUrl

По запросу «TinyUrl+xss» в гуглы получилось 3 950 000 результатов, не хило) Самым громким заголовком «tinyurl.com XSS Vulnerability | XSSed.com». Дырка в сервисе коротких урлов это хорошо, но мы поступим по другому.

Первое что нам нужно это сервис, который предоставляет услугу коротких ссылок. Нам подойдет url.uz/ в качестве сайта с xss мы будет использовать www.coremedicalsolutions.com Конечная ссылка получиться:

http://url.uz/N3z5D Выполнение кода происходит в контексте уже атакуемого домена т.е. coremedicalsolutions.com

Дальшее описывать не стоит смысла, кому нужно и так найдут как это применить.
Enjoy!