Существует ли (относительно) безопасный способ выполнить команды CLI от сети?

Можно отсортировать - выполняют то, что Вы хотите использовать xargs, открытый для гнома, и простой сценарий для фильтрации текста так, чтобы запаздывающие осколки были удалены. В основном Вы могли сделать что-то вроде:

скомпилируйте | filtererrors | xargs открытый для гнома

Конечно, необходимо было бы записать собственную "filtererrors" программу, но это не должно быть слишком твердо. Просто читайте в каждой строке. Найдите первый индекс ':', и затем распечатайте строку до и, исключая тот индекс.

5
12.10.2013, 20:34
2 ответа

Я думаю, что реальный риск состоит в том при смешивании входа от пользователя в один из них exec(). Это - то, где большая часть риска вошла бы, так как Вы позволяете пользователям давать Вам вход, который при смешивании в CLI может сделать опасные вещи, те, которые вставляют точки с запятой (;) в текстовое поле и выполненные дополнительные команды после того, как они обеспечили аргументы.

Таким образом в общих рабочих командах способом только для чтения больше не был должен опасный, чем выполнение чего-то еще.

Это - в основном та же проблема как с атакой с использованием кода на SQL, с которой Вы могли бы быть более знакомы.

3
27.01.2020, 20:40
  • 1
    Спасибо, Действительно я знаком с методом Внедрения SQL, но поскольку я понимаю, что это не применяется здесь. так как код работает в специализированном веб-сервере, в соответствии с защищенным паролем каталогом, к которому только получает доступ администратор... я пропускающий что-то? аргументы –  Kev 12.10.2013, 22:23
  • 2
    , которые переданы в текстовое поле и затем включены как аргументы команде, которая работает под exec() был бы вектор атаки. Выполнение сервера под a chroot'd каталог был бы одним способом ограничить Ваше воздействие также. –  slm♦ 12.10.2013, 22:30
  • 3
    mmm я все еще не получаю его, как взломщику удастся ввести вредоносный код, когда корень документа будет защищен паролем? –  Kev 12.10.2013, 22:39
  • 4
    @Kev - да, предупреждение, о котором я говорю, состояло бы в том, если бы оно не было защищено паролем, или если они получили доступ. Еще одна вещь иметь в виду, с паролем, охраняющим корень документа, нет встречных мер, обычно, таким образом, пользователь мог сидеть там и запустить скрипт, качающий пароли в то поле, пока они теоретически не предположили это. Маленький риск, но еще одна вещь оставаться подсознательно при представлении этого типа поверхности к внешней стороне. –  slm♦ 12.10.2013, 22:42
  • 5
    Спасибо, конечно, я мог добавить, что некоторым дополнительным мерам нравится, ограничивают доступ к решительному IP-адресу. Не проверенный уже, но я уверен, что веб-сервер может также limite объем входа в систему attemps, пользователь может иметь..., Вы думаете, что я могу получить относительно безопасный envirnment под этим параметры? –  Kev 12.10.2013, 22:55

Насколько я знаю (и я не программист действительно, так возьмите его с щепоткой соли), exec() вызовы не являются злыми вообще. Это просто, что они разветвляют новый процесс и имеют высокие издержки, так как Вы называете системную функцию. Обычно люди предлагают, чтобы Вы сделали вещи внутренне в любой программе/сценарии, которую Вы пишете и избегаете внешних вызовов как exec().

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

Так или иначе, основное заключение, exec() функции не по сути плохи, они просто имеют тенденцию быть менее эффективными, чем выполнение чего-то внутренне.

1
27.01.2020, 20:40

Теги

Похожие вопросы