Comment un serveur deviendra-t-il vulnérable avec chmod 777?

Je lis souvent des articles disant quelque chose du genre " chmod 777 est mauvais!"

Je me demandais:

Comment devenir vulnérable lorsque j'exécute 'chmod 777' sur un fichier?

Quel est un exemple réel de ceci que je peux reproduire?

21
demandé sur Brendon Muir 2012-06-30 09:06:44

5 réponses

Il permet de afficher et/ou modifier le contenu du système de fichiers par n'importe qui: en supposant que l'attaquant dispose déjà d'un accès Système général très courant sur les plateformes d'hébergement mutualisé .. certains sont plus" endurcis " que d'autres dès le début. Voici une petite liste incomplète de vecteurs d'attaque possibles:

  1. "votre code sécurisé" pourrait être remplacé par "leur code malveillant" qui s'exécute dans le contexte du serveur web même.. pourrait voler mots de passe / cheval de Troie, exposer DB, supprimer le contenu, etc. C'est, quelqu'un d'autre le code peut s'exécuter sous votre contexte de sécurité de.
  2. le contenu (par exemple "source de script") peut éventuellement être consulté en dehors du contexte du serveur web (ou du propriétaire). Avoir un mot de passe "sécurisé" pour se connecter à la base de données? Eh bien, pas plus...
  3. si le contenu était protégé par des autorisations (par exemple, le serveur web ne pouvait pas accéder auparavant), le serveur web pourrait pouvoir accéder/lister des informations sensibles... pas bon si vous ne vouliez pas le partager. Différentes configurations de serveur web traiteront également les" listes " différemment, ce qui peut également exposer plus que ce qui est souhaité.

Dans ce qui précède, je suppose également que "groupe" inclut le principal du serveur web et qu'il y a un serveur web (et/ou un hébergement partagé) impliqué qui peut être utilisé comme vecteur d'attaque primaire et/ou vulnérabilité de sécurité. Cependant, et je le souligne à nouveau: la liste ci-dessus n'est pas complète.

Alors qu'il n'est pas " garanti sécurité", en utilisant les autorisations les plus spécifiques peut atténuer certaines vulnérabilités / exposition.

19
répondu 2012-06-30 06:10:19

Si l'attaquant n'a accès qu'à l'interface web (pas aux fichiers, par exemple, via un autre compte sur le même hébergement partagé), le mode 777 n'ouvre pas directement les vulnérabilités. Ce qu'il fait est de le rendre plus facile pour l'attaquant de changer les choses sur le site une fois qu'ils obtenir d'une autre façon.

Par exemple, supposons que vous ayez un site WordPress et qu'il y ait un bug quelque part qui permet à l'attaquant d'exécuter du code PHP arbitraire sous les informations d'identification du serveur daemon (cela s'est produit plusieurs fois dans le passé et se reproduira sans doute à l'avenir). Le code de WordPress lui-même est stocké dans des fichiers .php que le démon serveur peut lire. Si ces fichiers sont en mode 777, l'attaquant peut leur écrire - ce qui signifie qu'ils peuvent modifier le code-en changeant ce que fait votre site. Peut-être ils installent les "exploiter" kit et maintenant tout le monde qui visite votre site obtient leur navigateur piraté. Peut être qu'ils installent un kit de spam SEO et maintenant Google pense que vous êtes vente de Viagra (mais si vous visitez le site directement, il est invisible -- oui, cela arrive).

Si les fichiers .php sont en mode 755 et appartiennent à un utilisateur qui n'est pas le démon du serveur, l'attaquant ne peut pas changer définitivement ce que fait le site.

Notez que cela signifie que la fonctionnalité D'auto-mise à niveau de WordPress à partir du panneau d'administration est risquée, car elle ne fonctionne que si WordPress peut se modifier-vous ne pouvez pas l'avoir et l'adversaire ne peut pas modifier les fichiers une fois qu'ils peuvent s'exécuter PHP arbitraire.

Notez également que vous n'êtes sûr à 100% à cet égard que s'il existe des no fichiers et no répertoires que le démon serveur peut modifier. Même simplement permettre le téléchargement de fichiers dans un seul répertoire peut toujours être un problème-même si la seule chose que vous laissez quelqu'un y mettre Est des fichiers image. (Si cela semble impossible, jetez un oeil à http://lcamtuf.coredump.cx/squirrel/.)

2
répondu zwol 2016-08-19 16:28:21

Chaque chiffre de la commande chmod représente un nombre octal (3 bits). Avec trois chiffres, c'est 9 bits au total. Chaque bit représente une autorisation; 1 = = A l'autorisation, 0 = = n'a pas l'autorisation.

Les trois bits de chaque chiffre représentent read (binaire 100 = = décimal 4), write (binaire 010 = = décimal 2) et execute (binaire 001 == décimal 1). Décimal 7 est une autorisation de lecture+écriture+exécution.

Le premier chiffre d'une commande chmod représente les autorisations du propriétaire d'un fichier ou d'un répertoire. La deuxième est pour le groupe. Le troisième est pour "l'univers" - c'est-à-dire, tout le monde.

Donc, chmod 777 représente l'autorisation de lecture, d'écriture et d'exécution pour vous, le groupe et tout le monde. Ceci est généralement beaucoup plus grand accès que nécessaire.

Pour votre exemple réel, imaginez si un fichier appelé my_bank_account_credentials a été modifié avec chmod 777. Pas très sûr! Un utilisateur malveillant pourrait changer ce qui est là-dedans ou simplement le lire et heureusement prendre votre argent.

Pour les serveurs, le chef le danger est qu'un bug exploité dans le code du serveur puisse permettre à un attaquant d'accéder à tout ce que le processus serveur a des droits-ce qui inclurait tout ce qui a l'ensemble d'autorisations 777.

1
répondu Alanyst 2012-06-30 05:17:52

Chmod est la commande Changer De MODe. Le 777 indique les autorisations. il y a trois groupes de personnes qui peuvent avoir des autorisations (chacun obtient son propre chiffre), dans l'ordre: propriétaire (du fichier ou du répertoire, le premier 7), groupe (tous ceux qui appartiennent au même groupe que le propriétaire, deuxième 7), et monde (troisième 7).

Le propriétaire est l'utilisateur du fichier - ce serait vous. Dans le monde *nix, les utilisateurs appartiennent à des groupes. Donc, vous pourriez être Utilisateur/propriétaire Bob dans le Marketing de groupe. Ce modèle vous permet de faire des choses comme, disons, le Bob peut lire/écrire le fichier, le reste de commercialisation ne peut lire le fichier, et les autres utilisateurs peuvent lire le fichier.

Chaque chiffre du 777 est une représentation binaire de: rwx (lecture / écriture / exécution). Donc un chmod de 755 signifie: 111 (7) - le propriétaire peut lire écrire exécuter 101 (5) - autre dans le groupe peut exécuter ou lire, pas d'écriture 101 (5) - reste du monde peut lire et exécuter, pas d'écriture.

Cette configuration signifie que vous pouvez lire / écrire et exécuter vos fichiers, mais les personnes qui visitent votre site peuvent seulement de lire ou exécuter le fichier. Ainsi, vous devez définir des programmes dans votre cgi-bin à 755, afin que les gens puissent exécuter le fichier en tant que programme.

Si vous définissez les autorisations de 'chmod 644', vous obtenez un fichier qui peut être écrit par vous, mais peuvent être lus uniquement par le reste du monde. C'est bon pour les fichiers HTML droits afin qu'aucun hanky panky ne continue. Mais essayez d'exécuter un fichier avec des autorisations de 644 et vous obtiendrez une erreur.

CHMOD 777 permettra à tout le monde d'apporter des modifications aux fichiers de votre serveur, il leur donnera la condition D'écriture et tout le monde sait que c'est mauvais.

0
répondu vipul_vj 2012-07-02 12:19:23

Si une entrée malveillante atteint votre application, site web, etc. Peu importe ce qu'il fait au code. Le point critique est la base de données et il n'y a aucune protection possible contre "l'écriture" sur elle. Donc, les autorisations chmod 777 ne sont rien de dangereux du tout.

-4
répondu CGM 2016-05-12 06:07:53