Запустите системные команды от имени пользователя root. — Безопасность

Я ищу несколько советов ..

Мне удалось получить скрипт php для вызова другой страницы, которая, в свою очередь, запускает системные команды от имени пользователя root.

Это то, что я сделал, я хотел бы посмотреть, смогу ли я это обеспечить.

В etc/sudoers.d Я добавил файл, который содержит список файлов, которые пользователь wwwrun может запускать от имени пользователя root без пароля. Он содержит записи, похожие на:

wwwrun ALL=(ALL) NOPASSWD: /Web/scripts/helper/filea
wwwrun ALL=(ALL) NOPASSWD: /Web/scripts/helper/fileb
wwwrun ALL=(ALL) NOPASSWD: /Web/scripts/helper/filec

Мой основной веб-сайт имеет страницу test.php, разрешения на это 777 & wwwrun:root

В test.php у меня есть некоторые jquery, который использует ajax для вызова action.php&action=aaa

В action.php у меня есть:

if ($_REQUEST['action']) == 'aaa') {
exec('/Web/scripts/helper/filea', $res);
}

if ($_REQUEST['action']) == 'bbb') {
exec('/Web/scripts/helper/fileb', $res);
}

if ($_REQUEST['action']) == 'bbb') {
exec('/Web/scripts/helper/filec', $res);
}

filea содержит пару команд bash. Этот файл имеет 655 & root:root разрешения.

Команды в filea, fileb и filec являются фиксированными, и, если передана переменная, это всего лишь говорит ей выполнить другую фиксированную команду в файле.

Как я могу сделать это более безопасным? Очевидно, что лучше не иметь root-прав, но мне нужно запустить некоторые команды для перемещения, редактирования, обновления, установки файлов и т. Д.

ОБНОВИТЬ

Просто чтобы подтвердить, что это работает. Я хотел бы сделать это немного более безопасным.

Я попытался изменить владельца на wwwrun: root и разрешения на 744

Это сделало так, что только root может редактировать файлы, я думаю, это хорошая идея ..

Спасибо

1

Решение

Несколько предложений по обеспечению безопасности приложения, отсортированных по результативности:

  1. Попробуйте перестроить систему так, чтобы права root не требовались. Вы указали на это, если вы можете предоставить более подробную информацию о функциональности приложения, мы могли бы изучить его. Это, вероятно, лучшее вложение вашего времени для защиты приложения.

  2. Защитите скрипты от модификации не-root пользователями. Если wwwroot может изменить содержимое скрипта, он может выполнить любую команду от имени root:

    • Убедитесь, что файлы принадлежат пользователю root и группе, к которой принадлежит wwwdata, и что никто, кроме root, не может их изменять. Вы можете ограничить права доступа wwwrun только для выполнения и отказаться от других разрешений, в противном случае злоумышленник может просто перезаписать содержимое файла и выполнить произвольные команды:

      wwwrun$ cp evil /Web/scripts/helper/filea && sudo /Web/scripts/helper/filea

    • Убедитесь, что все пути, вплоть до сценария, принадлежат пользователю root, и что только root может изменять их. В противном случае злоумышленник может просто перемещать каталоги для выполнения произвольных команд:

      wwwrun$ rm -rf /Web/script && mkdir -p /Web/script/helper

      wwwrun$ cp evil /Web/scripts/helper/filea && sudo /Web/scripts/helper/filea

    • Сделайте это для всех команд, которые вы запускаете из своих скриптов

  3. Убедитесь, что все указанные команды и файлы используют абсолютные пути

  4. Проверьте безопасность скриптов, которые вы выполняете: они запускаются от имени root, если они не предназначены для запуска от имени root (временные файлы, небезопасные зависимости и т. Д.), Злоумышленник воспользуется ими

  5. Измените файл sudoers, чтобы команды не могли запускаться с аргументами, используя синтаксис «», например:

    wwwrun ALL=(ALL) NOPASSWD: /Web/scripts/helper/filea ""

  6. Проверьте условия гонки — например, Злоумышленник может одновременно выполнять более одной команды, проверьте, не может ли этот параллелизм создать уязвимости. При необходимости убедитесь, что сценарии не запускаются одновременно с использованием механизма блокировки

2

Другие решения

Попробуй дать root привилегии для www-data тоже!
Требуется чтобы www-data право читать. Вы также можете попробовать изменить файлы owner а также group в www-data,

0

По вопросам рекламы [email protected]