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

Итак, SVG — это Scalable Vector Graphics, язык разметки масштабируемой векторной графики, он входит в подмножество расширяемого языка разметки XML и предназначен для описания двумерной векторной и смешанной векторно-растровой графики в формате XML. То есть мы имеем возможность описать в XML то, что должно быть на рисунке, а также добавить динамику.

Вот так, к примеру, можно нарисовать красный круг.

<svg height="100" width="100">
  <circle cx="50" cy="50" r="40" stroke="black" stroke-width="3" fill="red" />
</svg>

Кроме того, SVG поддерживает CSS. Добавим после тега <svg> стиль и получим синий круг:

<style>
  circle {fill: blue}
</style>

А еще SVG поддерживает JavaScript — с его помощью делается анимация. Для этого можно использовать все тот же стандартный тег <script>:

<svg height="100" width="100">
  <circle cx="50" cy="50" r="40" stroke="black" stroke-width="3" fill="red" />
  <script>alert(document.cookie)</script>
</svg>

SVG поддерживает и XLink (создание ссылок между документами XML), что дает возможность подгружать ресурсы из сторонних файлов. Тот же alert() можно подгрузить из файла:

<script type="text/javascript" xlink:href="alert.js"></script>

Причем в некоторых браузерах можно подгружать ресурсы и со сторонних хостов.

Интересно, что в SVG можно встраивать код на HTML (тег foreignObject) и картинки (<image>). При этом SVG в той или иной мере поддерживается всеми основными браузерами.

Как видишь, хоть SVG и картинка, но из нее можно без проблем запускать код на JavaScript. Таким образом, если есть какой-то сайт, куда можно загружать картинки в SVG, то можно попытаться получить на этом сайте хранимую XSS’ку. Для этого нужно знать еще несколько тонкостей, связанных с тем, как браузер открывает SVG. Есть несколько вариантов вставить SVG:

Продолжение доступно только подписчикам

Вариант 1. Оформи подписку на «Хакер», чтобы читать все материалы на сайте

Подписка позволит тебе в течение указанного срока читать ВСЕ платные материалы сайта. Мы принимаем оплату банковскими картами, электронными деньгами и переводами со счетов мобильных операторов. Подробнее о подписке

Вариант 2. Купи один материал

Заинтересовала информация, но нет возможности оплатить подписку? Тогда этот вариант для тебя! Обрати внимание: этот способ покупки доступен только для материалов, опубликованных более двух месяцев назад.


Оставить мнение

Check Also

Хроники битвы при Denuvo. Как «непробиваемая» игровая защита EA Origin оказалась пробиваемой

Защита от пиратства Denuvo пришла на смену SecuROM и связана с одним действующим лицом – Р…