HTMLi в Drupal через баг IE MIME сниффера

Discussion in 'Веб-уязвимости' started by p0deje, 29 Aug 2010.

  1. p0deje

    p0deje New Member

    Joined:
    29 Aug 2010
    Messages:
    11
    Likes Received:
    0
    Reputations:
    0
    Эксплуатация древнего бага в 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. На английском уже давно об этом писал в своем блоге.
     
  2. chekist

    chekist Elder - Старейшина

    Joined:
    14 Nov 2007
    Messages:
    215
    Likes Received:
    160
    Reputations:
    100
    древний баян, ослик всегда был чудо браузером ))
     
  3. p0deje

    p0deje New Member

    Joined:
    29 Aug 2010
    Messages:
    11
    Likes Received:
    0
    Reputations:
    0
    Баян то древний, только почему-то все про него забывают.
    А это получается из серии "Как взломать Drupal?". Немного соц. инженерии и все ok.