Protection par .htaccess dangereuse - It's not a bug, it's a feature

Rédigé le 2010-10-07 12:55:00 par Blusky (Sécurité)
Dernière modification le 2010-10-07 23:16:00

(La découverte de ce qui suit date d'il y a quelques années, mais l'ayant découverte récemment, je me propose quand même de la présenter)

Vous connaissez sans doute le fichier .htaccess qu'on utilise avec Apache pour réécrire des règles dans un hébergement web ? On utilise souvent ce fichier pour protéger des ressources. Un usage fréquent est d'écrire ce genre de ligne :

<Files monFichier.txt>
  AuthUserFile /{...}/.htpasswd
  AuthName "Auth required"
  AuthType Basic
  <Limit GET POST>
    require valid-user
  </Limit>
</Files>

Avec vos identifiants dans un fichier .htpasswd. Seulement ce genre de protection ne limite que les appels GET et POST.

Malheuresement, cela ne bloque que les requêtes GET et POST, prenez par exemple un petit netcat pour vous connecter, on va s'amuser: (testé dans un terminal GNU/Linux)

netcat http://www.monsite.com 80
VOIR http://www.monsite.com/monFichier.txt

Et la "ooooooh" on voit le contenu du fichier en clair !

Vous allez me dire, "ouai, mais la méthode 'VOIR' elle est bidon, on ne peut que voir les pages statiques", et ben oui... MAIS ! si vous savez ou ce trouve le fichier .htpasswd, il y  a de fortes chances que vous puissiez le voir avec cette méthode, et ainsi pouvoir retrouver un full access à la zone restreinte.

Comment se protéger alors ? Et ben simple, on ne peut pas! Il ne s'agit pas ici d'un bug / faille de sécurité, mais d'une fonctionnalité Apache, la balise <Limit> sert en effet à restreindre des requêtes, mais pas toutes. La solution est donc de trouver une autre méthode de protection des données. De toute façon, ce genre de protection est de moins en moins répandu du fait de méthode d'authentification plus "classe" en PHP par exemple.

Voir les commentaires (2)

 
1