J'ai un ami qui a un site web développé en PHP sur lequel on peut parcourir tous ses fichiers un après un (bien sûr, on ne peut pas lire le contenu des fichiers PHP).
Est-ce que vous pense que c'est une faille de sécurité? Si oui, dans quel sens?
J'ai un ami qui a un site web développé en PHP sur lequel on peut parcourir tous ses fichiers un après un (bien sûr, on ne peut pas lire le contenu des fichiers PHP).
Est-ce que vous pense que c'est une faille de sécurité? Si oui, dans quel sens?
Ce que vous décrivez est une liste de répertoires normale
En soi, la liste de répertoires n'est pas un problème de sécurité. Si la sécurité de votre système est compromise après avoir déterminé la structure de vos fichiers et répertoires, vous comptez sur la sécurité par l'obscurité, ce qui est mauvais. Exemples de cette mauvaise pratique:
Cependant , dans le cadre d'une bonne politique de sécurité, après en mettant en œuvre des mesures de sécurité appropriées, il est avantageux de masquer les parties fonctionnelles de votre système. Moins vous en montrez à propos de votre système, moins un attaquant peut obtenir d'informations sur vous, ce qui signifie que vous rendez son travail plus difficile.
"Alors, que dois-je faire?" tu demandes. Simple: désactivez la liste des répertoires dans les configurations de votre serveur Web. Dans Apache, vous allez dans votre httpd.conf
et trouvez la ligne où il est dit
Les options incluent les index
Supprimer Indexes
à partir de la ligne, puis redémarrez votre apache.
Pour ajouter aux réponses de @adnan et @ william-calvin:
Cela "peut" être un problème;)
Cela révèle des noms des fichiers qui ne sont accessibles que par, par exemple, les utilisateurs authentifiés (pensez à "change_settings.php" pour les utilisateurs connectés). Or, ce n'est pas un problème en soi. Si son site Web est bien écrit, il effectuera des vérifications d'autorisation appropriées avant de charger chaque fichier. D'un autre point de vue, un bon crawler / spider "mappera" tous les fichiers qui sont accessibles de toute façon.
S'il est en désordre avec les fichiers de sauvegarde (pensez: secret.bak ou blah.php.old), alors d'autres pourront lire ces fichiers. C'est également le cas pour les fichiers rapides phpinfo () et db_dump.sql .
Il peut inclure des fichiers, et les avoir avec une extension non-php, comme db.inc, en fonction de votre configuration apache, un attaquant peut être en mesure de les lire.
Donc, comme expliqué par les autres - c'est une mauvaise pratique. Il donne plus d'informations qu'il ne le devrait.
Oui .. C'est définitivement un problème.
Si je connais votre structure, je pourrai mieux comprendre votre système, ce qui me permettra d'attaquer plus facilement votre système.
Il est recommandé de désactiver la liste de vos répertoires (voir ce tutoriel si vous êtes sur CPanel)
Moins les pirates informatiques en savent, plus ils ont besoin de réfléchir.
Pour ajouter à la réponse d'Adnan, certains frameworks PHP, comme PyroCMS, résolvent le problème de votre question en utilisant une combinaison de fichiers .htaccess
et en ayant un fichier d'index, nommé quelque chose comme index .php
, dans chaque répertoire.
Un fichier .htaccess
est comme une extension de la configuration de votre serveur dans des fichiers comme php.config
, mais peuvent être inclus directement dans les dossiers du site, bien que dans certains cas, ils ne soient pas autorisés ou ne fonctionnent pas à cause des fichiers du serveur. De plus, vous pouvez les utiliser même si vous n'avez pas accès aux fichiers du serveur, par exemple si vous avez un site dans le cloud quelque part. Ils peuvent être utilisés pour limiter l'accès aux fichiers dans le répertoire dans lequel ils se trouvent ou dans les dossiers enfants. PyroCMS et d'autres frameworks ont souvent un fichier htaccess
dans chaque dossier, dont beaucoup limitent ou refusent l'accès au dossier et à tous ses sous-dossiers.
index.php
est l'une des pages par défaut à afficher lorsque l'URL pointe vers le dossier, bien que vous puissiez configurer ces pages par défaut dans vos fichiers serveur. Par exemple, si l'utilisateur accède à example.com/folder
et qu'il n'y a aucun de ces fichiers par défaut dans ce répertoire, la page affichera ce que votre ami verra probablement, ce qui est probablement la vue qu'Adnan affiche dans sa réponse. Cependant, s'il y a un fichier index.php
dans ce dossier, la page affichera à la place tout ce qui se trouve dans <site folder> / folder / index.php
. Les frameworks PHP ont souvent un index.php
dans chaque ou presque tous les dossiers et sous-dossiers pour vous. Beaucoup de ces fichiers ont quelque chose comme:
<div>Forbidden !!! < / div> <div>Veuillez ne pas aller ici! C'est très sensible! < / div>
Comme ces fichiers .htaccess
et index.php
sont déjà placés dans tous ces dossiers, vous n'avez pas à le faire vous-même, même si vous pouvez les supprimer si vous voulez ou devez adapter votre site. Même si vous n'utilisez pas finalement ces frameworks, en télécharger quelques-uns et voir ce qu'ils font peut être utile dans la conception de votre site. Faites attention si vous faites cela, car beaucoup d'entre eux font des centaines de mégaoctets.
Au fait, oui, c'est une mauvaise pratique d'avoir ces fichiers navigables. Le point avec cette réponse est qu'il existe des outils que vous pouvez utiliser pour vous éviter d'avoir à répéter le code standard des milliers de fois, parfois littéralement, et il se trouve que les sujets de cette question impliquent un code standard avec lequel ces outils peuvent vous aider.
Oui, en ce qui concerne les réponses ci-dessus, je ne souhaite pas partager les mêmes informations, mais un événement réel qui est arrivé à mon organisation.
Nous avions un serveur Web (frontal duquel les clients peuvent voir leur informations de compte Internet, possibilité de recharger, etc.).
Le développeur a téléchargé un BigDump pour sauvegarder les données du serveur triple A, pendant ce temps, un attaquant a examiné le répertoire à l'écoute et a trouvé un fichier de vidage contenant toutes les cartes à gratter et les informations de compte, espérons-le, il m'a signalé et nous avons résolu ce problème.
Comme mentionné également, en s'appuyant sur la sécurité par l'obscurité, il est préférable de désactiver l'écoute d'annuaire, j'ai établi une politique pour mon organisation que cette fonctionnalité doit être désactivé sur tous les serveurs Web.
BTW, il n'y a pas de httpd.conf
dans Ubuntu (actuellement sur 14.04; ne le recherchez pas, vous éditerez le fichier apache2.conf
).
Pour enregistrer votre site Web piloté par PHP à partir des scripts kiddies, vous pouvez lire mon long tutoriel pour durcir WordPress (j'ai fourni un lien pour la protection des droits d'auteur et vous en saurez probablement plus sur des vulnérabilités inconnues points). WordPress n'est qu'un exemple, en fait le contenu est applicable à n'importe quel site Web PHP-MySQL ou même PHP.
Deuxièmement, sans rapport avec la question originale; Le noyau Linux devrait également être renforcé. Vous pouvez voir mon essence - https://gist.github.com/AbhishekGhosh/9407137
Normalement, PHP ne s'ouvre pas dans le navigateur comme un fichier texte, mais en affichant le chemin , nom et donne probablement l'indication que l'administrateur du serveur n'est pas très expérimenté et le rend plus vulnérable.
N'essayez pas de contrôler depuis le niveau .htaccess
, gardez .htaccess
aussi léger que possible. C'est en fait dans le répertoire public ...