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

Типы XSS межсайтовый скриптинг

XSS (Cross-Site Scripting) — это тип атаки на веб-приложения, которая использует уязвимости в обработке данных на стороне клиента для внедрения вредоносного кода в веб-страницы, просматриваемые другими пользователями. В этой статье, простым языком, на наглядных примерах, я расскажу о типах XSS атак.

Еще по теме: Пример полезной нагрузки XSS в SSRF

Нашими подопытными будут Алиса, Боб, Чарли и Мэллори. В роли хакера (злоумышленника) будет выступать Мэллори.

Что такое XSS

Атаки XSS бывают разных типов, но все они имеют одну общую черту: злоумышленник внедряет вредоносный код в браузер другого пользователя. Вредоносным может быть код JavaScript, HTML и каскадные таблицы стилей (Cascading Style Sheets, CSS). Вредоносный код может попасть в браузер разными путями: в теле, URL или заголовке HTTP-запроса.

Статья в образовательных целях, для обучения этичных хакеров и програмистов. Несанкционированный взлом с помощью XSS является незаконным и рассматривается как уголовное преступление. Ни редакция spy-soft.net, ни автор не несут ответственности за ваши действия.

Типы XSS атак

Атаки XSS делятся на три подкатегории. Каждая определяется механизмом, используемым для внедрения вредоносного кода:

  • Хранимый XSS (Stored XSS).
  • Отраженный XSS (Reflected XSS).
  • XSS на основе DOM (DOM-based XSS).

Эти атаки считаются наиболее распространенными и мощными.

Хранимый XSS (Stored XSS)

Предположим, что Алиса и Мэллори являются пользователями социальной сети social.bob.com. Как и любая другая социальная сеть, сайт Боба позволяет пользователям обмениваться контентом. К сожалению, на этом сайте отсутствует полноценная проверка ввода; что еще более важно, он отображает общий контент, не экранируя его. Мэллори замечает это и создает следующий однострочный сценарий, цель которого – переадресовать Алису с сайта social.bob.com на поддельный сайт social.mallory.com:

Типы XSS Хранимый XSS (Stored XSS)

Затем Мэллори переходит на страницу с настройками своего профиля, изменяет один из параметров, записывая в него вредоносный код. Сайт Боба не проверяет ввод Мэллори и просто сохраняет его в базе данных.

Позже Алиса натыкается на страницу профиля Мэллори, которая теперь содержит вредоносный код. Браузер Алисы выполняет этот код, переадресуя Алису на сайт social.mallory.com, где ее обманом вынуждают ввести свои учетные данные для аутентификации и другую личную информацию.

Эта атака является примером хранимого XSS. Уязвимая система позволяет использовать эту форму XSS, сохраняя вредоносный код злоумышленника. Позже, не по вине потерпевшего, вредоносный код внедряется в браузер жертвы. Ход этой атаки показан ниже.

Типы XSS Хранимый XSS (Stored XSS)

Системы, предназначенные для обмена пользовательским контентом, особенно подвержены этой разновидности XSS. К подобным системам относятся сайты социальных сетей, форумы, блоги и продукты для совместной работы. Злоумышленники обычно более агрессивны, чем Мэллори. Например, в описанном сценарии Мэллори ждет, пока Алиса наткнется на ловушку. В реальном мире злоумышленник часто активно заманивает жертв по электронной почте или в чате.

В этом разделе Мэллори атакует Алису через сайт Боба. В следующем разделе Мэллори попытается атаковать Боба через один из сайтов Алисы.

Отраженный XSS (Reflected XSS)

Предположим, что Боб – пользователь нового веб-сайта Алисы search.alice.com. Подобно google.com, этот сайт принимает искомую строку через параметры URL запроса. В ответ Боб получает HTML-страницу с результатами поиска. Как и следовало ожидать, страница с результатами отражает критерии поиска, заданные Бобом.

В отличие от других поисковых сайтов, страница с результатами, возвращаемая сайтом search.alice.com, отображает критерии поиска без их экранирования. Мэллори замечает это и подготавливает следующий URL. Параметр запроса в этом URL содержит замаскированный вредоносный код на JavaScript. Этот код переадресует Боба с сайта search.alice.com на сайт search.mallory.com, еще один поддельный сайт:

XSS типы Отраженный XSS (Reflected XSS)

Мэллори отправляет этот URL Бобу в текстовом сообщении. Он попадается на приманку и щелкает на ссылке, непреднамеренно отправляя вредоносный код на search.alice.com. Сайт немедленно отражает вредоносный код Мэллори обратно Бобу. Затем браузер Боба запускает вредоносный сценарий, отображая страницу результатов. Наконец, он переадресуется на search.mallory.com, где Мэллори пытается развить успех.

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

Типы XSS. Отраженный XSS (Reflected XSS)

Атаки отраженным XSS, как нетрудно догадаться, не ограничиваются чатами. Злоумышленники также заманивают жертв через электронную почту или вредоносные веб-сайты. В следующем разделе я покажу третий вид атак XSS. На этот раз Мэллори будет атаковать Чарли. Как и атаки отраженным XSS, атаки этого вида начинаются с передачи вредоносного URL.

XSS на основе DOM (DOM-based XSS)

После того как Мэллори взломала Боба, Алиса решила устранить уязвимость на своем сайте. Она изменила страницу с результатами, так чтобы она отображала критерии поиска с визуализацией на стороне клиента. Следующий код иллюстрирует, как это реализовано в новой странице результатов. Обратите внимание, что теперь браузер, а не сервер, извлекает критерии поиска из URL. Теперь нет никаких шансов провести атаку отраженным XSS, потому что критерии поиска просто не отображаются:

Типы XSS. XSS на основе DOM (DOM-based XSS)

Мэллори снова посещает search.alice.com и замечает еще одну возможность для атаки. Она отправляет Чарли электронное письмо с вредоносной ссылкой. Эта ссылка содержит точно такой же URL, который использовался для атаки отраженным XSS. Чарли попался на удочку и перешел на search.alice.com, щелкнув на ссылке. Сервер Алисы возвращает обычную страницу с результатами; ответ не содержит вредоносного содержимого. К сожалению, JavaScript Алисы копирует вредоносный код Мэллори из URL в тело страницы. Затем браузер Чарли выполняет сценарий Мэллори, переадресуя Чарли на search.mallory.com.

Третья атака Мэллори – это пример XSS на основе DOM. Как и в атаке отраженным XSS, злоумышленник инициирует XSS на основе DOM, обманом заставляя пользователя отправить вредоносный контент на уязвимый сайт. В отличие от атаки отраженным XSS, контент не отражается, и внедрение происходит в браузере.

Во всех трех атаках Мэллори успешно заманивает своих жертв на поддельный сайт с помощью простого однострочного сценария. На самом деле эти атаки могут внедрять более сложный код для:

  • несанкционированного доступа к конфиденциальной или частной информации;
  • использования прав авторизации жертвы для выполнения действий от его имени;
  • несанкционированного доступа к cookie клиента, включая идентификаторы сеансов;
  • переадресации жертвы на вредоносный сайт, контролируемый злоумышленником;
  • злонамеренного искажения содержимого сайта, например баланса банковского счета или результата проверки здоровья.

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

На момент написания статьи атаки XSS занимали седьмое место в рейтинге OWASP Top Ten.

Заключение

Противостояние атакам XSS – отличный пример глубокой обороны, потому что одной линии защиты недостаточно. В следующей статье расскажу, как противостоять атакам XSS. Я представлю действия, предотвращающие атаки, в порядке событий, происходящих в течение жизненного цикла HTTP-запроса:

  • проверка ввода;
  • экранирование вывода, самый важный уровень защиты;
  • заголовки ответа.

ПОЛЕЗНЫЕ ССЫЛКИ:

Ban32

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

Добавить комментарий