Новость из категории: Информация

Как обойти определения MIME-типа в IE?

Как обойти определения MIME-типа в IE?

Итак, есть такой браузер — IE. И у него очень интересный, нестандартный механизм определения типа файлов и реакция на него. Говоря проще: если ты укажешь браузеру HTML-страничку (типа example.org/test.html) или что-то еще, типа SWF (example.org/test.swf), — он тебе ее отпарсит как HTML, отобразит плагином или предложит скачать. Мы можем воспользоваться данными особенностями для проведения каких-то атак (типа XSS). Давай приведу пару примеров. Вот предположим, мы нашли возможность инъекции кода в JSON-ответ, но который возвращается с заголовком «Content-Type: application/x-javascript». В данном случае XSS-атаку нам вроде как не провести, так как IE посмотрит на заголовок и отобразит страничку, не парся, пэйн-текстом так сказать (или предложит скачать). Или другой вариант: мы можем закачать на сервер файл с произвольным контентом (HTML’ка с XSS’ка или SWF’ка, проксирующая запросы хакера), но возвращается он нам без расширения. Тогда IE в любом случае будет скачивать этот файл — и атаки на этом особой не построишь. Так вот, зная повадки IE, мы можем ими воспользоваться и сделать так, чтобы IE воспринимал контент как необходимый нам тип данных.

Здесь стоит отметить, что другие браузеры также имеют несколько различные механизмы определения типов, но в основном все-таки они опираются на поле заголовка ответа от сервера «Content-Type». Типа что там указано — тем и обрабатываем.

Официально у IE процесс нигде не описан. Но зато есть отличная преза, автор — Йосуке Хасегава (Yosuke Hasegawa): goo.gl/jeOgW). А в ней прекрасная схема (см. рисунок). Подробно можно все понять из нее. Сам важный для нас факт — на определение типа файла в IE очень сильно влияет расширение файла. На эти данные IE полагается, если заголовок «Content-Type» ему неизвестен (не зарегистрирован), а известных не очень много (htm*, изображения).

Как обойти определения MIME-типа в IE?

То есть в общем случае если мы можем внедрить данные в файл на сервере, то для его превращения в правильный и нужный нам тип нам надо «подменить» его расширение. И что для нас самое хорошее — сделать это иногда очень нетрудно. Надо всего лишь добавить в конец URL’а необходимое нам расширение, но так, чтобы приложение (веб-сервер) продолжало считать, что обращение происходит к нужному нам UPL’y. Например, JSP поддерживает точку с запятой для разделения параметров, но для IE точка с запятой может быть в пути к файлу, а потому мы можем передать необрабатываемый параметр, который воспримется IE как расширение.
http://victim.eom/vuln.jsp:any_file_name.any_extension

Кроме этого, в PHP и .NET мы можем обмануть браузер за счет того, что эти языки поддерживают передачу path-info в качестве параметра после пути до скрипта, но отделенного от скрипта слешем «/». То есть следующее также сработает:

http://victim.com/vuln.php/any_file_name.
any extension?query=string

http://victim.com/vuln.aspx /any file name.
any_extension?query=string

Кроме этого, если расширение cgi, exe или пустое, то IE может брать тип расширения из query string. Таким образом, имеем следующие варианты, когда IE скушает подставное расширение:
http://victim.com/foo.cgi?param=abc&any file name.
any_extension

http://victim.com/foo.exe?param=abc&any_file_name.
any_extension

http://victim.com/foo?param=abc&any file name.
any_extension

http://victim.com/foo/?param=abc&any_file_name.
any extension

А в иных расширениях — не скушает из query string’а:
http://victim.com/foo.php?param=abc&any_file_name.
any_extension

Таким образом, мы можем в большинстве случаев обмануть IE. Возьмем пример. Есть веб-сервер, на который мы можем заливать файлы. Но сервер ссылочку дает до него в виде «http://victim.com/zzzz». Предположим, что залили мы SWF'ку, которая будет проксировать наши запросы через клиента-жертву, и создали страничку на своем сервере, подгружающую SWF'ку с помощью плеера (типа object). Но IE жертвы хоть и запустит плагин, но не запустит контент, заблудившись где-то в процессе определения типов :). Зато с использованием «src=http:// victim.com/zzzz;aaa.swf"» все заработает прекрасно!

С точки зрения минусов и трудностей мы утыкаемся в два проблемных момента. Во-первых, это заголовок Content-Disposition, который указывает браузеру, что файл необходимо скачать. Далее, заголовок «X-Content-Type-Options: nosniff», указывающий IE основываться только на Content-Type или скачивать файл в ином случае. Последний проблемный момент может быть с Content-Type, начинающимся с image/что-то, который укажет IE обрабатывать данные только как изображение. Ну вот, а так — очень угарно. Поподробнее, но в контексте эксплуатации XSS в JSONe можно почитать здесь: goo.gl/l7fuv, goo.gl/s1L2q.

Вот и все. Надеюсь, что было интересно :). И успешных познаний нового!



Вы водитель, а не хакер, поэтому Вас гораздо больше интересуют не баги IE, а Запчасти ЯМЗ (http://22233.ru/catalog/Zapchasti_k_dvigatelyam_YaMZ_i_TMZ.html)! И именно поэтому Вам следует заглянуть на 22233.ru! Здесь представлен самый полный ассортимент запчастей к двигателям ЯМЗ и ТМЗ!

Рейтинг статьи

Оценка
0/5
голосов: 0
Ваша оценка статье по пятибальной шкале:
 
 
   

Поделиться

Похожие новости

Комментарии

^ Наверх