Разделы портала

Онлайн-тренинги

.
Что такое межсайтовый скриптинг, и какое нам до него дело?
25.02.2019 00:00

Автор: Кристин Джеквони (Kristin Jackvony)
Оригинал статьи
Перевод: Ольга Алифанова.

Беседуя о тестировании безопасности, вы наверняка слышали о межсайтовом скриптинге (XSS), однако, возможно, не очень хорошо понимаете, что это такое. Межсайтовый скриптинг – это атака, при которой злоумышленник находит способ выполнять скрипт на чужом сайте. Сегодня мы поговорим о двух разных типах XSS-атак, наглядно на них посмотрим, и разберемся, чем они вредят пользователю.

Отраженный XSS

Отраженный XSS – это атака, выполняемая через веб-сервер, но не хранящаяся в коде или базе данных. Так как она нигде не хранится, хозяин сайта может и не подозревать, что его атакуют.

Чтобы продемонстрировать эту атаку, пойдем на отличный тренировочный сайт от Google - XSS Game. На этом сайте несколько упражнений на выполнение XSS-атак. Они возрастают по сложности по мере вашего прогресса. Попробуем выполнить первое из них.


На странице вы увидите простое поле поиска и кнопку. Для выполнения атаки вам нужно напечатать вот что:

<script>alert("XSS here!")</script>

в этом текстовом поле, а затем нажать на кнопку. Вы увидите, как ваше сообщение, "XSS here!", всплывет в новом окне.

Что тут произошло? Вы отправили скрипт, инициирующий всплывающее окно предупреждения, на сервер. Код клиентской части не защищен от выполнения такого скрипта, поэтому сайт его исполняет.

Вы, возможно, думаете "Ну да, это забавно, но как злоумышленник воспользуется этим, чтобы меня взломать? Я печатаю в моем собственном окне поиска". Один из способов – это фишинговые ссылки. Допустим, вы хозяин сайта. Злоумышленник может создать ссылку, ведущую на ваш сайт, и прицепит к ее концу скрипт, к примеру, вот так:

?query=%3Cscript%3Ealert%28%22XSS%22%29%3C%2Fscript%3E.

(это та же самая наша атака, только в HTML-кодировке). Злоумышленник может отправить эту ссылку в письме ничего не подозревающему пользователю сайта, оформив письмо так, чтобы оно выглядело полученным от вас. Когда человек кликнет по ссылке, скрипт переместится на ваш сайт, а затем выполнится. Злоумышленник составит скрипт так, что вместо безобидного сообщения "XSS here!" он будет содержать сообщение, приглашающее пользователя взаимодействовать с ним, дабы получить, к примеру, номер учетной записи пользователя и другую секретную информацию.

Сохраненный XSS

Сохраненный XSS – это атака, при которой зловредный скрипт реально хранится в базе данных или коде сайта, поэтому выполняется, как только пользователь перемещается на страницу или ссылку. Это может произойти, если создатель сайта недостаточно защитил базу данных бэкэнда.

Давайте посмотрим, как работает эта атака, выполнив второе упражнение XSS Game. Чтобы перейти к нему, нужно выполнить первое, поэтому следуйте инструкциям из первой части статьи.


Второе упражнение – это чат-приложение. Чтобы справиться с ним, вам нужно добавить в приложение текст, который инициирует скрипт. Это можно сделать, напечатав следующее:

<img src='foobar' onerror='alert("xss")'>

Как только вы опубликуете это, вы увидите попап-окошко с сообщением "XSS alert!". И не только! Если вы уйдете с этой страницы и вернетесь назад, вы снова увидите окошко. Атака хранится в вашем комментарии на странице чата, и покажет всплывающее окно всем, кто перейдет туда.

Давайте разберем наш скрипт, чтобы понять, что же он делает:

<img src='foobar' onerror='alert(“xss”)'>

Красный текст означает, что мы передаем изображение.

<img src='foobar' onerror='alert(“xss”)'>

Синий текст сообщает серверу источник изображения. Тут-то и таится фокус – такого URL, как "foobar", не существует, и картинка не может загрузиться.

<img src='foobar' onerror='alert(“xss”)'>

Зеленый текст сообщает серверу, что в случае ошибки нужно показать всплывающее окно с текстом "XSS". Так как мы настроили все так, что ошибка будет выдаваться всегда, этот попап всегда будет появляться.

Один из способов использования сохраненных XSS – это имитация окна авторизации. Когда пользователь переходит на взломанный сайт, он увидит окно авторизации, которое выглядит совсем как настоящее. Введя свой логин и пароль, он отправит их злоумышленнику, который сможет использовать их для авторизации и имитации своей жертвы.

Обсудить в форуме