PDA

Просмотр полной версии : HTMLi в Drupal через баг IE MIME сниффера


p0deje
29.08.2010, 22:47
Эксплуатация древнего бага в MIME сниффере IE на примере Drupal x.xx. Уязвимость известная, однако, как показывает практика, мало кто о ней знает.

Суть заключается в том, что IE, получая файл с


Code:
Content-type: text/plain

врубает свой MIME сниффер и пытается определить реальный MIME тип файла. Это сделано потому, что раньше многие серверы отдавали все файлы с text/plain. Сейчас с этим уже проблем нет, однако txt файлы сервер всегда отдает как text/plain. MIME сниффер смотрит внутрь файла и, увидев там, к примеру, HTML код, считает, что файл относится в text/html и соответственно рендерит его. Таким образом, если у пользователя есть возможность загружать txt-файлы на сервер, он может загрузить файл с необходимым HTML кодом: от фишинга до Reflected XSS.

Что касается Drupal, то в шестой ветке есть стандартный модуль Upload, в списке дефолтных расширений которого есть и txt. В седьмой ветке вроде бы Upload заменен на FileField, который всегда по умолчанию ставит txt.

Существует три способа защиты от такой HTML инъекции:

1. Использовать заголовок


Code:
X-Content-Type-Options: nosniff

, пердложенный Microsoft. Главный минус - поможет только для IE8.

2. Использовать заголовок


Code:
Content-disposition: attachment

, заставляющий браузер скачать файл, а не рендерить его. Минус - не всегда есть возможность настраивать сервер.

3. Не разрешать загрузку text/plain файлов.

Microsoft чинить баг не будет. Причем, в Chromium тоже есть MIME сниффер, но подобной уязвимсоти нет. Drupal чинить тоже ничего не будет.

P.S. На английском уже давно об этом писал в своем блоге (http://p0deje.blogspot.com/2010/05/exploiting-ie-mime-sniffer.html).

chekist
31.08.2010, 22:15
древний баян, ослик всегда был чудо браузером ))

p0deje
01.09.2010, 10:42
Баян то древний, только почему-то все про него забывают.

А это получается из серии "Как взломать Drupal?". Немного соц. инженерии и все ok.