Уязвим ли код

Discussion in 'Песочница' started by banned, 20 Feb 2012.

  1. banned

    banned Banned

    Joined:
    20 Nov 2006
    Messages:
    3,325
    Likes Received:
    1,194
    Reputations:
    252
    Ага, не хекер!

    magic_quotes_gpc = off
    PHP:
    <?php
        $_GET
    ['d'] = addslashes($_GET['d']);
        if (
    file_exists('ololo/files/' $_GET['d'] . '/thumb.php'))
            include 
    'ololo/files/' $_GET['d'] . '/thumb.php';
    Можно как-то применить LFI?
     
  2. t0ma5

    t0ma5 Reservists Of Antichat

    Joined:
    10 Feb 2012
    Messages:
    831
    Likes Received:
    817
    Reputations:
    90
    Надеюсь старейшины форума меня поправят если я не прав.
    Вот эта проверка
    if (file_exists('ololo/files/' . $_GET['d'] . '/thumb.php'))
    обходится нулл байтом, но нулл байт не канает так как addslashes его предварительно валит.
    Обойти можно попробовать через дополнительные ///, они выступают в качестве замены для %00.
    То есть по сути запрос вида ?d=../../../../../../../../../../../etc/shells///////[2048 или 4096] должен обрубить остальной запрос, точное количество слешей сказать не могу, надо тестить.
     
    _________________________
    1 person likes this.
  3. Konqi

    Konqi Green member

    Joined:
    24 Jun 2009
    Messages:
    2,251
    Likes Received:
    1,148
    Reputations:
    886

    в этом случий не пройдешь проверку file_exists, хотя если подумать.. file_exists пропускает диры, то есть file_exists('/etc/') вернет true.. *scratch*

    для обхода file_exists Нужно указать диру, так как в других папках нету thumb.php, а для инклуда нужен файл, насколько я понимаю это тупик
     
    _________________________
    #3 Konqi, 20 Feb 2012
    Last edited: 20 Feb 2012
    1 person likes this.
  4. t0ma5

    t0ma5 Reservists Of Antichat

    Joined:
    10 Feb 2012
    Messages:
    831
    Likes Received:
    817
    Reputations:
    90
    Есть одна идея, может бредовая конечно, но все же.
    Посмотреть реверс IP, узнать соседние сайты. Существует ведь вероятность что через один из них(хромает фильтрация) можно залить thumb.php, но нельзя выполнить(htaccess или еще что), и не корректно стоят права, и его можно заинклудить?
    Полный путь конечно придется узнать, но это в некоторых случаях не проблема.
     
    _________________________
  5. Pirotexnik

    Pirotexnik Member

    Joined:
    13 Oct 2010
    Messages:
    375
    Likes Received:
    71
    Reputations:
    38
    я так делал. нужно было взломать 1 сайт на нем был лишь инклуд. Через 5 минут залил пхп на соседа. Путь узнал по ошибка выдающихся LFI.
     
  6. banned

    banned Banned

    Joined:
    20 Nov 2006
    Messages:
    3,325
    Likes Received:
    1,194
    Reputations:
    252
    Такой вариант у меня был, но это геморрой :)
    В последней версии openx 2.8.8 файл www/delivery/al.php, там такая проверка.
     
  7. M_script

    M_script Members of Antichat

    Joined:
    4 Nov 2004
    Messages:
    2,581
    Likes Received:
    1,307
    Reputations:
    1,557
    Тебе поломать надо или наоборот?
    PHP:
    $_GET['d'] = strpos($_GET['d'], '.') !== false 'default'  addslashes($_GET['d']);
     
  8. banned

    banned Banned

    Joined:
    20 Nov 2006
    Messages:
    3,325
    Likes Received:
    1,194
    Reputations:
    252
    похекать, да. Дыры новые искал в openx :)