Что такое межсайтовый скриптинг (XSS)?

Опубликовано: 4 Июля, 2021

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

Вначале это называлось CSS, и это было не совсем то, что есть сегодня. Первоначально было обнаружено, что вредоносный веб-сайт может использовать JavaScript для чтения данных из ответов других веб-сайтов, встраивая их в iframe, запускать сценарии и изменять содержимое страницы. Тогда это называлось CSS (межсайтовый скриптинг). Определение изменилось, когда Netscape представила Политику одинакового происхождения, и межсайтовым сценариям было запрещено разрешать чтение ответов из разных источников. Вскоре было рекомендовано называть эту уязвимость XSS, чтобы избежать путаницы с каскадными таблицами стилей (CSS).

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

В зависимости от контекста существует два типа XSS:

  1. Отраженный XSS:
    Если ввод должен предоставляться каждый раз для выполнения, такой XSS называется отраженным. Эти атаки в основном осуществляются путем доставки полезной нагрузки непосредственно жертве. Жертва запрашивает страницу с запросом, содержащим полезные данные, и эти полезные данные встроены в ответ в виде сценария. Примером отраженного XSS является XSS в поле поиска.

  2. Сохраненный XSS:
    Когда ответ, содержащий полезную нагрузку, сохраняется на сервере таким образом, что сценарий выполняется при каждом посещении без отправки полезной нагрузки, тогда он идентифицируется как сохраненный XSS. Примером сохраненного XSS является XSS в цепочке комментариев.

Существует еще один тип XSS, называемый XSS на основе DOM, и его экземпляры либо отражаются, либо сохраняются. XSS на основе DOM возникает, когда пользовательские данные предоставляются объектам DOM без надлежащей очистки.
Пример кода уязвимого к XSS ниже, обратите внимание переменные fistname и фамилия:




<?php
if (isset( $_GET [ "firstname" ]) && isset( $_GET [ "lastname" ]))
{
$firstname = $_GET [ "firstname" ];
$lastname = $_GET [ "lastname" ];
if ( $firstname == "" or $lastname == "" )
{
echo "<font color="red">Please enter both fields...</font>" ;
}
else
{
echo "Welcome " . $firstname . " " . $lastname ;
}
}
?>

Пользовательский ввод напрямую добавляется в ответ без какой-либо проверки. Атакующий вводит что-то вроде -




< script > alert(1) </ script >

и он будет отображаться как JavaScript.

Есть два аспекта XSS (и любая проблема безопасности):

  1. Разработчик:
    Если вы разработчик, основное внимание будет уделяться безопасной разработке, чтобы избежать каких-либо дыр в безопасности в продукте. Вам не нужно очень глубоко погружаться в аспект эксплуатации, просто нужно использовать инструменты и библиотеки, применяя лучшие практики для разработки безопасного кода, как предписано исследователями безопасности.

    Некоторые ресурсы для разработчиков -

    а). Проект кодирования OWASP: это библиотека, написанная на Java, разработанная Open Web Application Security Project (OWASP). Он бесплатный, с открытым исходным кодом и прост в использовании.

    б). Заголовок «X-XSS-Protection»: этот заголовок дает браузеру команду активировать встроенный аудитор XSS, чтобы идентифицировать и блокировать любые попытки XSS против пользователя.

    в). Шпаргалка по защите XSS от OWASP: в этом ресурсе перечислены правила, которым необходимо следовать во время разработки, с соответствующими примерами. Правила охватывают большое количество случаев, когда разработчик может пропустить что-то, что может привести к уязвимости веб-сайта для XSS.

    г). Политика безопасности контента: это автономное решение для проблем, подобных XSS, оно информирует браузер о «безопасных» источниках, кроме которых не следует запускать скрипты из любого источника.

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

    а). Шпаргалки -
    1. Шпаргалка по уклонению от XSS-фильтров от OWASP.
    2. Шпаргалка по XSS от Родольфо Ассиса.
    3. Шпаргалка по XSS от Veracode.

    б). Практические лаборатории -
    1. bWAPP
    2. DVWA (чертовски уязвимое веб-приложение)
    3. prompt.ml
    4. ЦФК

    в). Отчеты -
    1. Hackerone Hactivity
    2. Личные блоги выдающихся исследователей в области безопасности, таких как Джейсон Хаддикс, Гикбой, Пракхар Прасад, Дафидд Статтард (Портсвиггер) и т. Д.

РЕКОМЕНДУЕМЫЕ СТАТЬИ