Межсайтовый скриптинг как оружие

NSD (www.nsd.ru)

Xakep, номер #063, стр. 063-082-1

Захват аккаунтов при помощи CSS

Cross-site scripting (CSS/XSS) – это мощный инструмент, с помощью которого хакер может получать незаконный акцес к разным сетевым услугам: к чужим почтовым ящикам, аккаунтам на форуме, чатам и т.д. Особенность этой атаки заключается в том, что юзер ее вообще не почувствует, т.к. CSS не палит себя ни в файрволах, ни в антивирусах. А юзер догадается, что его учетную запись скоммуниздили, только когда увидит появившиеся постинги от своего имени :).

В чем суть атаки?

Межсайтовый скриптинг возможен лишь в тех случаях, когда удается встроить в веб-страницу опасный код на языке JavaScript, VBScript, Java, ActiveX и др. При этом сам код будет исполнен на стороне пользователя, просмотревшего эту веб-пагу. Для вставки своих скриптов хакер может воспользоваться guestbook’ами, чатами и форумами. Однако уже давным-давно прошли те времена, когда можно было безнаказанно украшать свою мессагу в чатах и форумах любыми тегами. В современных скриптах форумов фильтры, обрабатывающие введенный пользователем текст, всячески препятствуют вставке потенциально опасного содержимого, но об этом мы поговорим чуть позже.

Что же можно делать с юзером, исполнившим на своей тачке JavaScript-код? С помощью javascript’а можно сделать практически все что угодно: начиная от определения цвета background’a на странице и заканчивая многочисленными способами насолить пользователю. А если еще задействовать и уязвимость в браузере, то атакующий сможет даже выполнять команды операционной системы на компе пользователя. Кроме того, внедрив JavaScript в форум или чат, хакер может получить доступ к текущей учетной записи пользователя.

Как же захватывают аккаунты, используя JavaScript?

Чтобы юзеру не приходилось набирать пароль каждый раз, когда он заходит в форум, разработчики придумали систему авторизации через cookie. Сессия, которая генерируется из логина и пароля пользователя, записывается к юзверю на хард в текстовый файлик и помещается в папку C:Documents and Settingsимя_пользователяCookies. Каждый кукис маркируется доменом, т.е. скрипт, принадлежащий к одному домену, имеет доступ только к тем кукисам, которые были записаны скриптами этого домена. Так вот, когда юзер заходит на форум, скрипт запрашивает кукис и проверяет, совпадает ли сессия, хранящаяся на винте, с сессией, которая лежит в базе данных форума. И если они совпадают, то форум распознает юзера как законного пользователя аккаунта.

Сам понимаешь, если хакер похитит данные из этого кукиса юзверя и передаст их сервису как свои, то система распознает взломщика как реального пользователя! Так вот, в JavaScript’e как раз имеются средства для чтения кукисов :). Поэтому, встроив троянский код, например, в сообщение на форуме, хакер получит доступ к кукисам юзверей, просмотревших его мессагу. А поскольку JavaScript поддерживается всеми современными браузерами, то уязвимыми окажутся все пользователи…

Процесс хищения cookie

Что сделает хакер, чтобы спионерить cookie? Сначала он подготовит cgi-скрипт, который будет принимать данные из кукиса и сохранять их в файле. Как этот скрипт выглядит на perl’e:

Содержание  Вперед на стр. 063-082-2
ttfb: 3.3090114593506 ms