TinyUrl и Cross Site Scripting
Доброго времени суток!
Часть 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 использовать короткие ссылки.
Давайте посмотрим как работают другие аналогичные сервисы:
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!