Выполнить команду на сервере

Discussion in 'Песочница' started by n0153r, 16 Nov 2008.

  1. n0153r

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

    Joined:
    19 Jun 2007
    Messages:
    260
    Likes Received:
    92
    Reputations:
    11
    Всем привет. Возник вопросик.
    Раньше на сервере выполнял команды таким методом :

    $result = passthru($_POST['cmmd']);

    Теперь админ пофиксил :( как еще можно выполнить ?
    OS : FreeBSD 6.3
    PHP : 5.2.6

    Зарание спасибо.
     
  2. Pashkela

    Pashkela Динозавр

    Joined:
    10 Jan 2008
    Messages:
    2,750
    Likes Received:
    1,044
    Reputations:
    339
    Непонятно, как пофиксил:

    if ((!$_POST['cmd']) || ($_POST['cmd']=="")) { $_POST['cmd']="id;pwd;uname -a;ls -la"; }
    echo "".passthru($_POST['cmd'])."";

    Тебе останется написать только html форму для скрипта

    ну и:

    http://ru2.php.net/passthru

     
    #2 Pashkela, 16 Nov 2008
    Last edited: 16 Nov 2008
  3. otmorozok428

    otmorozok428 Banned

    Joined:
    19 Oct 2007
    Messages:
    127
    Likes Received:
    88
    Reputations:
    17
    Сперва выясни в чём заключался фикс. Было ли это запрещение одной или нескольких функций, или же на сервере включили safe_mode. Выполни phpinfo() и посмотри строчку disable_functions. Если там запрещена только функция passthru() - юзай system() или exec().

    Так же обрати внимание на значение параметра safe_mode, если установлен в On, значит на сервере врубили Safe Mode - пробуй заюзать какой-либо из способов обхода Safe Mode. Инфы по этой теме дофига на том же Античате.

    Даже если не удастся использовать ничего из вышеперечисленного, всё равно остаётся возможность производить какие-то действия средствами чистого PHP (без использования функций операционной системы), например просмотр содержимого каталогов, просмотр , редактирование или создание файлов и т.д.
     
    #3 otmorozok428, 16 Nov 2008
    Last edited: 16 Nov 2008
    1 person likes this.
  4. n0153r

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

    Joined:
    19 Jun 2007
    Messages:
    260
    Likes Received:
    92
    Reputations:
    11
    disable_functions :
    safe_mode Off

    Что можно сделать в таком случае ???
     
  5. otmorozok428

    otmorozok428 Banned

    Joined:
    19 Oct 2007
    Messages:
    127
    Likes Received:
    88
    Reputations:
    17
    Попробуй заюзать popen(). Вот как-то так:
    PHP:
    <?php
    $handle 
    popen("uname -a""r");
    $read fread($handle2096);
    echo 
    $read;
    ?>
     
  6. n0153r

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

    Joined:
    19 Jun 2007
    Messages:
    260
    Likes Received:
    92
    Reputations:
    11
    Теперь вопрос к админам!
    Как можно зашитить свой сервер ?
    Такая ситуация :
    Есть хостинг на котором 50 сайтов. Каждый может выполнить
    ls /home
    cat /etc/passwd
    лазить по сайтам других клиентов.

    Как можно ограничить выполнения команд пользовательом ???
    Что-бы он немог выйти за свою директорию.
    Спасибо большое.
     
  7. $n@ke

    $n@ke Elder - Старейшина

    Joined:
    18 Sep 2006
    Messages:
    696
    Likes Received:
    404
    Reputations:
    134
    open basedir ./
    safe_mode On

    ман по пхп.ини тебе в руки.Если ты про выполнение из пхп скриптов.Иначе- запретить доступ по ссш =)))
     
    1 person likes this.
  8. otmorozok428

    otmorozok428 Banned

    Joined:
    19 Oct 2007
    Messages:
    127
    Likes Received:
    88
    Reputations:
    17
    А сверху накати что-нибудь типа Suhoshin и будет тебе счастье :)
     
    1 person likes this.
  9. GuD-ok

    GuD-ok New Member

    Joined:
    14 Nov 2008
    Messages:
    17
    Likes Received:
    2
    Reputations:
    0
    Перекомпилить PHP без exec(); и т.п. и поднять ssh шелл, ну собсно тоже подправленный(можно даже без cd, vim и т.п.).
     
    1 person likes this.
Loading...