Глубинная атака межсайтового скриптинга на основе DOM

Опубликовано: 23 Августа, 2022

В этой статье мы подробно рассмотрим один из типов межсайтового скриптинга, то есть XSS на основе DOM. Давайте обсудим это один за другим следующим образом.

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

  • DOM XSS означает межсайтовый скриптинг на основе объектной модели документа. Уязвимости на основе DOM возникают на этапе обработки контента, выполняемого на клиенте, обычно в клиентском JavaScript.
  • XSS на основе DOM работает аналогично отраженному XSS — злоумышленник манипулирует средой браузера клиента (объектная модель документа) и помещает полезную нагрузку в содержимое страницы. Основное отличие состоит в том, что, поскольку вредоносная полезная нагрузка хранится в среде браузера, она не может быть отправлена на сервер. Таким образом, все механизмы защиты, связанные с анализом трафика, не сработают.
  • В отраженных и хранимых межсайтовых скриптовых атаках вы можете увидеть уязвимость вредоносного скрипта на странице ответа, но в межсайтовом скриптинге на основе DOM исходный код HTML и ответ атаки будут одинаковыми, т. е. вредоносный скрипт не может можно найти в ответе веб-сервера.
  • При атаке XSS на основе DOM вредоносная строка не анализируется браузером жертвы до тех пор, пока не будет выполнен законный JavaScript веб-сайта. Чтобы выполнить XSS-атаку на основе DOM, вам необходимо поместить данные в источник, чтобы они распространились на приемник и вызвали выполнение произвольного кода JavaScript.

Разбивка атаки XSS на основе DOM:
Ниже приводится разбивка атаки XSS на основе DOM следующим образом.

  1. Злоумышленник обнаруживает XSS-уязвимость на основе DOM
  2. Хакер или злоумышленник создает вредоносный скрипт и отправляет URL-адрес цели (электронная почта, социальные сети и т. д.).
  3. Жертва нажимает на URL
  4. Браузер жертвы отправляет запрос на уязвимый сайт (примечание: запрос не содержит вредоносного скрипта XSS)
  5. Веб-сервер отвечает веб-страницей (примечание: этот ответ не содержит вредоносного скрипта XSS)
  6. Веб-браузер жертв отображает страницу с вредоносным скриптом XSS хакеров или злоумышленников.

Влияние :

  1. Украсть файлы cookie или сеансы другого клиента.
  2. Измените файлы cookie или сеансы другого клиента.
  3. Украсть отправленную информацию формы другого клиента или некоторые конфиденциальные учетные данные.
  4. Изменить данные или информацию формы, отправленные другим клиентом, перехватив запрос (до того, как он достигнет сервера).

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

Поиск межсайтовых сценариев на основе DOM:

  1. Большинство уязвимостей DOM XSS можно быстро и эффективно найти с помощью сканера инструментов Burp Suite или некоторых других скриптов, доступных на GitHub.
  2. Чтобы протестировать межсайтовый скриптинг на основе DOM вручную, вам обычно нужно использовать веб-браузер с инструментами разработчика, такими как Chrome или Firefox.
  3. Вам нужно работать с каждым доступным источником или полем ввода по очереди и тестировать каждый из них по отдельности.

Понимание атаки на основе 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, поиск, хэш.