Категория > Новости > Разрешено все! Изучаем новую крутую технику обхода CSP - «Новости»
Разрешено все! Изучаем новую крутую технику обхода CSP - «Новости»2-10-2018, 12:00. Автор: Martin |
"); }else{ $('#mpu1-desktop').remove(); console.log('mpu1-desktop removed'); } }); Содержание статьи
Типичный пример использования CSP — это разрешение загрузки ресурсов с собственного домена (self) и разрешение выполнения инлайн-сценариев:
Такая политика подразумевает «запрещено все, что не разрешено». В данной конфигурации будет запрещено любое использование функций, выполняющих код в виде строки, таких как Запрещено грузить любой контент с внешних источников, в том числе изображения, CSS, WebSocket. И конечно же, JS. ![]() Для примера я специально оставил XSS в этом месте, задача — украсть секрет пользователя. Но не стоит забывать, что self позволяет работать в контексте SOP в рамках этого домена, поэтому мы по-прежнему можем грузить сценарии, создавать фреймы, изображения. Если вспомнить о фреймах, то CSP распространяется и на фреймы, в том числе если в качестве протокола будет указан data, blob или будет сформирован фрейм с помощью атрибута srcdoc. ![]() Статья написана в исследовательских целях. Вся информация в ней носит ознакомительный характер. Ни автор, ни редакция не несет ответственности за неправомерное использование упомянутых в ней аппаратных платформ, программ и техник! Можно ли выполнить JS в текстовом файле?Для начала вспомним один трюк. Если современный браузер открывает изображение или какой-то текстовый файл, он автоматически преобразуется в HTML-страницу. Это нужно для корректного отображения содержимого пользователю, чтобы у изображения был фон и она была расположена по центру. Но Но что, если фрейм будет содержать страницу сайта, но уже без заголовка CSP? Вопрос риторический. Выполнит ли открытый фрейм без политики все JS, которые будут у него внутри? Если иметь XSS на странице, мы можем сами записать свой JS внутрь фрейма. Для теста сформируем сценарий, который открывает iframe. Для примера возьмем bootstrap.min.css, путь к которому указан на странице выше. Перейти обратно к новости |