Как сервер станет уязвимым с помощью chmod 777?

Я часто читаю статьи, говорящие что-то вроде строк «chmod 777 is bad!»

Я размышлял:

Как стать уязвимым, когда я выполняю ‘chmod 777’ в файле?

Что такое реальный пример, который я могу воспроизвести?

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

  1. «ваш безопасный код» может быть перезаписан «своим вредоносным кодом», который работает в одном и том же контексте веб-сервера .. может украсть пароли / трояны, выставить БД, удалить контент и т. д. То есть чужой код может работать под вашей безопасностью контекст .
  2. Контент (например, «источник сценария») может быть просмотрен вне контекста веб-сервера (или владельца). У вас есть «безопасный» пароль для подключения к БД? Ну, не больше …
  3. Если контент был защищен разрешениями (например, веб-сервер не мог получить доступ до этого), веб-сервер может иметь доступ к конфиденциальной информации / список … не очень хорошо, если вы не хотели его делиться. Различные конфигурации веб-сервера также будут обрабатывать «списки» по-разному, что также может привести к большему, чем это необходимо.

В вышеизложенном я также предполагаю, что «группа» включает в себя принципала веб-сервера и что есть веб-сервер (и / или общий хостинг), который может использоваться как основной вектор атаки и / или уязвимость безопасности. Тем не менее, я еще раз подчеркиваю это: приведенный выше список не является полным .

Хотя это не «гарантированная безопасность», использование наиболее конкретных разрешений может снизить некоторые уязвимости / подверженность.

Если злоумышленник имеет доступ только к веб-интерфейсу (а не к файлам, скажем, через другую учетную запись на том же общедоступном хостинге), тогда режим 777 не будет открывать какие-либо уязвимости непосредственно . Что он делает, так это облегчить для злоумышленника изменение вещей на сайте, как только они попадут каким-то другим способом.

Например, предположим, что у вас есть сайт WordPress, и где-то есть ошибка, позволяющая злоумышленнику выполнить произвольный PHP-код под учетными данными сервера-демона (это случалось много раз в прошлом и, несомненно, повторится в будущем). Код для самого WordPress хранится в файлах .php которые может прочитать демон сервера. Если эти файлы являются режимом 777, тогда злоумышленник может писать им, что означает, что они могут изменять код, изменяя то, что делает ваш сайт. Возможно, они устанавливают комплект «drive by exploit», и теперь каждый, кто посещает ваш сайт, получает взломанный браузер. Возможно, они устанавливают спам-пакет SEO, и теперь Google думает, что вы продаете Виагру (но если вы посещаете сайт напрямую, это невидимо – да, это действительно так).

Если файлы .php являются режимом 755 и принадлежат пользователю, который не является деmonoм сервера, то злоумышленник не может навсегда изменить то, что делает сайт.

Обратите внимание, что это означает, что функция самообновления WordPress-from-the-admin-panel является рискованной, поскольку она работает только в том случае, если WordPress может самостоятельно модифицировать себя – вы не можете иметь этого, а также иметь противника, неспособного изменять файлы после их выполнения произвольный PHP.

Также обратите внимание, что в этом отношении вы на 100% безопасны, если нет файлов и нет каталогов, которые может изменить демон сервера. Даже просто разрешить загрузку файлов в один каталог все еще может быть проблемой – даже если вы позволите кому-либо положить туда файлы изображений. (Если это невозможно, посмотрите http://lcamtuf.coredump.cx/squirrel/ .)

Каждая цифра в команде chmod представляет восьмеричное (3-битное) число. С тремя цифрами это всего 9 бит. Каждый бит представляет собой разрешение; 1 == имеет разрешение, 0 == не имеет разрешения.

Три бита в каждой цифре представляют чтение (двоичный 100 == десятичный 4), write (двоичный 010 == десятичный 2) и execute (двоичный 001 == десятичный 1). Десятичный 7 – это чтение + запись + разрешение на выполнение.

Первая цифра команды chmod представляет разрешения владельца файла или каталога. Второй – для группы. Третий – для «вseleniumной», то есть для всех остальных.

Итак, chmod 777 представляет права на чтение, запись и выполнение для вас, группы и всех. Обычно это гораздо больший доступ, чем требуется.

Для вашего примера в реальном мире представьте, был ли изменен файл с именем my_bank_account_credentials с chmod 777 . Не очень безопасно! Злоумышленник может изменить то, что там есть, или просто прочитать его и с радостью взять деньги.

Для серверов главной опасностью является то, что уязвимость в коде сервера может позволить злоумышленнику получить доступ к чему-либо, что имеет серверный процесс, к которому относятся все, что имеет набор разрешений 777 .

chmod – команда CHange MODe. 777 указывает разрешения. есть три группы людей, которые могут иметь разрешения (каждый получает свою собственную цифру), чтобы: Владелец (файла или каталога, первые 7), группы (все, кто принадлежит к той же группе, что и владелец, второй 7 ), и мир (третий 7).

Владелец – пользователь файла – это вы. В мире * nix пользователи принадлежат к группам. Таким образом, вы можете быть пользователем / владельцем Боба в группе Marketing. Эта модель позволяет вам делать такие вещи, как сказать, что Боб может читать / записывать файл, остальная часть маркетинга может читать только файл, а другие пользователи могут читать файл.

Каждая цифра в 777 является двоичным представлением: rwx (read / write / execute). Таким образом, chmod из 755 означает: 111 (7) – Владелец может читать write execute 101 (5) – другие в группе могут выполнять или читать, не писать 101 (5) – остальной мир может читать и исполнять, не писать.

Эта настройка означает, что вы можете читать / записывать и выполнять свои файлы, но люди, посещающие ваш сайт, могут читать или выполнять только файл. Таким образом, вам необходимо установить программы в вашем cgi-bin на 755, чтобы люди могли выполнять файл как программу.

Если вы установите разрешения на «chmod 644», вы получите файл, который может быть написан вами, но может быть прочитан только остальным миром. Это полезно для прямых HTML-файлов, чтобы не было никаких проблемных panky. Но попробуйте и выполните файл с разрешениями 644, и вы получите сообщение об ошибке.

CHMOD 777 позволит всем вносить изменения в файлы вашего сервера, это даст им условие WRITE, и все знают, что это плохо.

Если вредоносная запись достигает вашего приложения, веб-сайта и т. Д. Независимо от того, что он делает с кодом. Критическая точка находится в базе данных, и нет никакой защиты от «записи» на нее. Таким образом, разрешения chmod 777 вообще ничего не представляют опасности.

  • Классическая ASP-инъекция
  • XMLHttpRequest не может загрузить файл. Запросы на кросс-начало поддерживаются только для HTTP
  • Лучший способ защитить данные, чувствительные к приложениям Android?
  • Действиям ребенка не разрешено выполнять действия перенаправления после установки сайта на HTTPS
  • Безопасность HTML5 localStorage
  • Почему API-интерфейсы браузера ограничивают междоменные запросы?
  • Как получить файл с сервера через SFTP?
  • Как ограничить модификацию данных Firebase?
  • Что такое межсайтовый скриптинг
  • OAuth2 и API Google: срок действия токена доступа?
  • Лучший способ ограничить доступ по IP-адресу?
  • Давайте будем гением компьютера.