Статьи Мозаика атак через загрузку изображений

Discussion in 'Статьи' started by Osstudio, 13 Feb 2012.

  1. Osstudio

    Osstudio Banned

    Joined:
    17 Apr 2011
    Messages:
    638
    Likes Received:
    160
    Reputations:
    81
    Мозаика атак через загрузку изображений

    Пролог:
    Я часто натыкаюсь на функцию загрузки изображений.... Можно подумать, что сегодня загрузка и обработка изображений на сервере - вполне обычная и безопасная операция... Но даже сегодня далеко не у все веб-приложений достаточная защита от хакеров, которые могут вмешаться, и действовать против сервера. Совсем недавно я имел дело с одним интересным случаем, некоторые ограничения по загрузке изображений заставили меня применить некоторые хитрости.


    Самый большой недостаток, это то что PHP сценарий и прочие скрипты пытаются изменить размер изображения, даже если оно не вылезает за "рамки" ограничений (ширины и высоты и т.п), ну и соответственно, от этого байты кода смешиваются, и он работать не будет.

    Итак, что мы имеем:

    1.) Изображения только при наличии соответствующей ширины, высоты и размеров допускается
    2.) Загрузка допускается только в одну конкретную папку, uploads к примеру ;)
    3.) Скрипт проверяет, является ли передаваемый файл действительно изображением, а не каким-либо другим файлом
    4.) Ну и конечно изображение обрабатывается с помощью PHP-функции

    Со стороны простого веб-интерфейса вроде-бы всё выглядит не пробиваемым, но присмотревшись, можно понять, что "голова бронежилетом не прикрыта".
    Я быстро написал Perl-скрипт, который делает прямые запросы к веб-приложению, и он показал, что я могу загрузить изображения с любым расширением. Тогда я подумал... изменить расширение на file.php и на этом игра заканчивается, но это был не тот случай... Сервер был настроен так, что все PHP файлы отправлялись пользователю как обычный файл :mad:
    Получается, нет у нас ни .pl ии CGI и т.д...

    Что-же делать в такой ситуации?! Первое, что пришло в голову это, чтобы обработать изображение с кодом XSS. При сохранении изображений с расширением file. HTML мы можем достичь желаемого результата. Нам нужно редактировать изображение с помощью HEX-редактора, так что PHP-функция не повредит нашей нагрузке. Очень ограничен, но работает способ "обойти" встроенный в сайт обработчик изображений, чтобы нам загрузить уже обработанные изображения.
    Таким образом, мы можем увидеть, какие байты не изменились, и вместо статического байта мы можем поставить на сайт наш код. Ниже я показал простой вектор XSS, для PoC целей.
    Единственным ограничением является длина "полезной нагрузки", но это не очень важно. Таким образом, атака выглядит примерно так:

    Code:
    http://127.0.0.1/test.html#alert('XSS');
    Но это еще далеко не все. Не забывайте о SSI. Здесь же простая идея - с помощью HEX редактора мы вставляем наш код и сохраняем изображение с расширением SHTML exntension... Одна из самых желанных возможностей является выполнение команд операционной системы :D

    Code:
    <!--#exec cmd="ls -la"-->
    Если это не сработает по какой-либо причине (например, Nginx не поддерживает), мы можем попробовать инклуд файлов:

    Code:
     <!--#include file="qwerty.php"-->
    Один человек предложил идею перебора файлов, указав имя файла динамически:

    Code:
    <!--#include file="$QUERY_STRING"-->
    Тогда запрос будет выглядеть примерно так:

    Code:
    http://127.0.0.1/test.shtml?/file_to_include.php
    Тут стоит помнить, что между параметрами файлов и виртуальных одно отличие - первый включает в себя файлы, второй делает запрос...
    Так что, только имея возможность изменить расширение изображений, нам открываются реально широкие возможности для злоумышленника, а это XSS, OS команды, PHP-код, LFI и т.п.

    P.S: Стоит также обратить внимание внимание на правильную конфигурацию Nginx... но об этом напишем позже ;)


    Перевод: Osstduio
    Автор статьи: ax330d
    Источник: http://ax330d.blogspot.com/2011/06/mosaic-of-attacks-from-image-upload.html
     
    #1 Osstudio, 13 Feb 2012
    Last edited: 13 Feb 2012
    3 people like this.
  2. Pirotexnik

    Pirotexnik Member

    Joined:
    13 Oct 2010
    Messages:
    376
    Likes Received:
    73
    Reputations:
    38
    Как всегда, радуешь. Заслуженный плюс!
     
    1 person likes this.
  3. shell_c0de

    shell_c0de Hack All World

    Joined:
    7 Jul 2009
    Messages:
    1,183
    Likes Received:
    618
    Reputations:
    690
    ничего не раскрыта + букафки с википедий ? =\
     
    _________________________
  4. Pirotexnik

    Pirotexnik Member

    Joined:
    13 Oct 2010
    Messages:
    376
    Likes Received:
    73
    Reputations:
    38
    Не придирайтесь так. Он ещё маленький :)

    Незнаю, для меня все было понятно и доступно "разжевано".
     
  5. M_script

    M_script Members of Antichat

    Joined:
    4 Nov 2004
    Messages:
    2,581
    Likes Received:
    1,317
    Reputations:
    1,557
    IE <= 6 обрабатывает png, как html. Можно выполнить JS-код прямо из картинки, не меняя расширения
     
  6. M_script

    M_script Members of Antichat

    Joined:
    4 Nov 2004
    Messages:
    2,581
    Likes Received:
    1,317
    Reputations:
    1,557
    Это не авторская статья, а перевод с ангийского статьи "Mosaic of attacks from image upload"
    Оригинал - http://ax330d.blogspot.com/2011/06/mosaic-of-attacks-from-image-upload.html

    Статья "Mosaic of attacks from image upload" в свою очередь является переводом с русского =)
    Оригинал - http://www.slideshare.net/d0znpp/mosaique-by-arthur-gerkis-ax330d
     
  7. Rebz

    Rebz Banned

    Joined:
    8 Nov 2004
    Messages:
    4,052
    Likes Received:
    1,534
    Reputations:
    1,128
    Добавил копирайты.
     
  8. gibson

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

    Joined:
    24 Feb 2006
    Messages:
    391
    Likes Received:
    247
    Reputations:
    88
    а я удалю в след раз, если будешь выдавать за свою
     
  9. Osstudio

    Osstudio Banned

    Joined:
    17 Apr 2011
    Messages:
    638
    Likes Received:
    160
    Reputations:
    81
    Так она изначальна была на русском?) :D

    Я думал, есть только инглиш => осуществил перевод
    Да у меня 8 IE показывает код... разве ещё кто-то пользуется этим угом?
     
    #9 Osstudio, 13 Feb 2012
    Last edited: 13 Feb 2012
  10. |qbz|

    |qbz| Banned

    Joined:
    25 Dec 2009
    Messages:
    385
    Likes Received:
    169
    Reputations:
    65
    Осстудио, поимей уже совесть, мне очень не нравится когда чужое выдают за свое.
     
  11. Osstudio

    Osstudio Banned

    Joined:
    17 Apr 2011
    Messages:
    638
    Likes Received:
    160
    Reputations:
    81
    Да я и не выдавал =) Это не чужой труд. Это я перевёл..
     
  12. zercal

    zercal New Member

    Joined:
    18 Feb 2012
    Messages:
    2
    Likes Received:
    0
    Reputations:
    0
    один позитиффф