загрузка произвольных файлов через архив.

Discussion in 'Уязвимости' started by (Dm), 22 Dec 2009.

  1. (Dm)

    (Dm) Elder - Старейшина

    Joined:
    8 Apr 2008
    Messages:
    261
    Likes Received:
    440
    Reputations:
    275
    Снова небольшой очерк.
    Пару раз сталкивался с веб приложениями в которых можно было загрузив архив, распаковать его. Но дело в том, что если нет проверки на '../'(опуститься на каталог выше), то файлы можно распаковать в произвольные каталоги на сервере.

    например архив:
    Распакуется на каталог выше.

    Рассмотрим веб приложение DCMS
    там используется PclZip класс для работы с zip архивами.

    Администратор может загружать и распаковывать архивы в разделе загрузки:
    PHP:
    $zip=new PclZip($dir_loads.'/'.$file);
    $zip->extract(PCLZIP_OPT_PATH$path_unzipPCLZIP_OPT_SET_CHMOD0777PCLZIP_OPT_BY_PREG"#^[^\.]+#ui");
    Как видно "#^[^\.]+#ui" вот эта регулярка защищает от '../' в начале имени файла =) Чтобы обойти фильтр в начале надо указать существующий каталог, что-то типа такого:
    При распаковке этого архива, файл test.php, будет записан не в том месте где предполагалось, а на каталог выше.

    Вот ещё аналогичный баг http://vuln.sg/net2ftp096-en.html
     
    #1 (Dm), 22 Dec 2009
    Last edited: 22 Dec 2009
    13 people like this.
  2. [Raz0r]

    [Raz0r] Elder - Старейшина

    Joined:
    25 Feb 2007
    Messages:
    425
    Likes Received:
    484
    Reputations:
    295
    http://www.sektioneins.de/advisories/SE-2008-06.txt
     
  3. (Dm)

    (Dm) Elder - Старейшина

    Joined:
    8 Apr 2008
    Messages:
    261
    Likes Received:
    440
    Reputations:
    275
    оке исправил =)

    PS бесит что всякая школота орет что баян, мега хакиры xD

    По поводу баянов и прочей ху*ни.
    да это баян я в курсе, еслиб он им не был, его в паблике не постил бы.
     
    1 person likes this.