Глубинная атака межсайтового скриптинга на основе DOM
В этой статье мы подробно рассмотрим один из типов межсайтового скриптинга, то есть XSS на основе DOM. Давайте обсудим это один за другим следующим образом.
Межсайтовый скриптинг на основе DOM :
- DOM XSS означает межсайтовый скриптинг на основе объектной модели документа. Уязвимости на основе DOM возникают на этапе обработки контента, выполняемого на клиенте, обычно в клиентском JavaScript.
- XSS на основе DOM работает аналогично отраженному XSS — злоумышленник манипулирует средой браузера клиента (объектная модель документа) и помещает полезную нагрузку в содержимое страницы. Основное отличие состоит в том, что, поскольку вредоносная полезная нагрузка хранится в среде браузера, она не может быть отправлена на сервер. Таким образом, все механизмы защиты, связанные с анализом трафика, не сработают.
- В отраженных и хранимых межсайтовых скриптовых атаках вы можете увидеть уязвимость вредоносного скрипта на странице ответа, но в межсайтовом скриптинге на основе DOM исходный код HTML и ответ атаки будут одинаковыми, т. е. вредоносный скрипт не может можно найти в ответе веб-сервера.
- При атаке XSS на основе DOM вредоносная строка не анализируется браузером жертвы до тех пор, пока не будет выполнен законный JavaScript веб-сайта. Чтобы выполнить XSS-атаку на основе DOM, вам необходимо поместить данные в источник, чтобы они распространились на приемник и вызвали выполнение произвольного кода JavaScript.
Разбивка атаки XSS на основе DOM:
Ниже приводится разбивка атаки XSS на основе DOM следующим образом.
- Злоумышленник обнаруживает XSS-уязвимость на основе DOM
- Хакер или злоумышленник создает вредоносный скрипт и отправляет URL-адрес цели (электронная почта, социальные сети и т. д.).
- Жертва нажимает на URL
- Браузер жертвы отправляет запрос на уязвимый сайт (примечание: запрос не содержит вредоносного скрипта XSS)
- Веб-сервер отвечает веб-страницей (примечание: этот ответ не содержит вредоносного скрипта XSS)
- Веб-браузер жертв отображает страницу с вредоносным скриптом XSS хакеров или злоумышленников.
Влияние :
- Украсть файлы cookie или сеансы другого клиента.
- Измените файлы cookie или сеансы другого клиента.
- Украсть отправленную информацию формы другого клиента или некоторые конфиденциальные учетные данные.
- Изменить данные или информацию формы, отправленные другим клиентом, перехватив запрос (до того, как он достигнет сервера).
Примечание -
Отправьте форму в свое приложение от имени пользователя, которая изменяет пароли или конфиденциальные данные на сервере или другие данные приложения.
Поиск межсайтовых сценариев на основе DOM:
- Большинство уязвимостей DOM XSS можно быстро и эффективно найти с помощью сканера инструментов Burp Suite или некоторых других скриптов, доступных на GitHub.
- Чтобы протестировать межсайтовый скриптинг на основе DOM вручную, вам обычно нужно использовать веб-браузер с инструментами разработчика, такими как Chrome или Firefox.
- Вам нужно работать с каждым доступным источником или полем ввода по очереди и тестировать каждый из них по отдельности.
Понимание атаки на основе DOM через диаграмму:
Описание диаграммы –
На приведенном выше рисунке «Считайте номера стрелок диаграммы (шаги 1–6) шагами» следующим образом.
- Шаг 1. Злоумышленник создает URL-адрес и отправляет его жертве.
- Шаг 2: Жертва нажимает на нее, и запрос отправляется на сервер.
- Шаг 3: Ответ сервера содержит жестко закодированный JavaScript.
- Шаг 4: URL-адрес злоумышленника обрабатывается жестко закодированным JavaScript, запуская его полезную нагрузку.
- Шаг 5: Браузер жертвы отправляет файлы cookie злоумышленнику.
- Шаг 6: Злоумышленник перехватывает сеанс пользователя.
Пример :
Пример атаки XSS на основе DOM выглядит следующим образом.
<HTML> <TITLE>Hello!</TITLE> <SCRIPT> var pos=document.URL.indexOf("name=")+5; document.write(document.URL.substring(pos,document.URL.length)); </SCRIPT> <BR> Welcome To Our Website … </HTML>
Объяснение -
Обычно эта HTML-страница используется для приветствия пользователя, например:
http://www.victim.site/hello.html?name=Gaurav
Однако запрос, подобный приведенному ниже, приведет к следующему условию XSS.
http://www.victim.site/hello.html?name=alert(document.domain)
Исправление от XSS на основе DOM:
- Обнаружить DOM XSS сложно, используя только обнаружение на стороне сервера (т. е. HTTP-запросы), поэтому провайдеры, такие как Acunetix, используют для этого DeepScan.
- Эти вредоносные скрипты или полезные данные никогда не отправляются на веб-сервер из-за того, что они находятся за фрагментом HTML (все, что находится за символом #).
- В результате основная проблема заключается в коде (например, JavaScript), который находится на исходной странице. Это означает, что вы всегда должны очищать или фильтровать пользовательский ввод, независимо от того, является ли он клиентским.
- Чтобы исправить XSS на основе DOM, данные не должны динамически записываться из какого-либо ненадежного источника в HTML-документ. Элементы управления безопасностью должны быть установлены, если этого требуют функциональные возможности.
- Это может включать комбинацию экранирования JavaScript, кодирования HTML и кодирования URL.
- Такие фреймворки, как AngularJS и React, используют шаблоны, которые делают создание специального HTML явным (и редким) действием. Это подтолкнет вашу команду разработчиков к использованию лучших практик и облегчит обнаружение небезопасных операций.
Примечание -
Следует избегать следующих атрибутов источника, таких как URL, URI документа, местоположение, href, поиск, хэш.