avatar
Кавычка
@webpwn
16.01.2018 10:50
Тег вида <link rel=import> импортирует содержимое стороннего документа на текущую страницу (вжух http://w3c.github.io/webcomponents/spec/imports/index.html). А в Google Chrome можно импортировать html из любого файла, с абсолютно любым типом контента (заголовок Content-type) в том числе, если будет присутствовать указание не пытаться определить содержимое (X-Content-Type-Options: nosniff).

Для примера, создадим файл с случайными данными и добавим вконце тег script
head -c 1000000 /dev/urandom > /tmp/bin.bin
echo "<script>alert()</script>" >> /tmp/bin.bin


Теперь попробуем его импортировать: https://bo0om.ru/bin.html
И скрипт выполнится!

Таким образом, достаточно загрузить любой файл на ресурс, будь это валидное изображение или любой другой документ, в тело которого предварительно записан js - и вызвать его с помощью <link rel=import href=/path/to/file>. Так как обращение идет к ссылке текущего домена - такая ссылка не будет заблокированна Chrome XSS Auditor'ом.
23 9.3K

Обсуждение 0

Обсуждение не доступно в веб-версии. Чтобы написать комментарий, перейдите в приложение Telegram.

Обсудить в Telegram