Dimanche le 5 juillet 2009 à 15:24
Comment contourner un .htaccess?
L’objectif de ce tutorial est d’expliquer une faille qui a été découverte dans les .htaccess, cette faille qui affecte un nombre importants de sites qui utilisent les fichiers .htaccess comme solution afin de restreindre l’accès à certains fichiers sensibles!
Apache c’est quoi?
Apache HTTP Server, souvent appelé Apache, est un logiciel de serveur HTTP produit par l’Apache Software Foundation. il permet tout simplement d’héberger un site web, il peut évidement tourner sur plusieurs plateformes, sur un total de 182 millions de sites, Apache est utilisé pour 91,5 millions, contre 62,8 millions pour Microsoft IIS.
Un .htaccess à quoi ça sert?
un .htacces est un fichier interprété par le serveur apache qui agit sur le répertoire dans-lequel il se trouve, il est généralement utilisé pour protéger l’accès à un répertoire ou un fichier par un mot de passe, définir les pages d’erreurs personnalisées, gérer la réécriture d’url, définir les mime-type et encore plus…, mais ce qui nous intéresse le plus dans ce tutoriel, c’est restriction d’accès à un répertoire ou un fichier.
Problème :
Parmi les utilités d’un .htaccess, il existe la directive LIMIT qui permet de restreindre l’accès à certains parties sur un site web, en effet cette protection peut facilement être contournée si elle n’est pas correctement mise en place
Exemple :
On considère que nous avons un serveur web local et qu’on veut restreindre l’accès au répertoire /sercret/ , on y met un .htaccess contenant le code suivant :
AuthUserFile /repertoire/de/votre/fichier/.htpasswd AuthName "Accès protégé" Require valid-user AuthType Basic
Ce fichier permet d’indiquer à Apache de refuser toute requête GET ou POST si l’utilisateur n’est pas identifié avec un login et un mot de passe apparaissant dans le fichier .htpasswd
Pour accéder à ce dossier, nous appelons l’url http://localhost/secret/ via un navigateur web .
La requête envoyée ressemblera à :
GET /secret HTTP/1.1 Host: localhost Connection: close
on aura le prompt qui nous demandera les identifiant pour accéder au dossier, jusque là tout est normale, le serveur apache ne fait qu’interpréter la requête qu’on lui demande.
maintenant imaginons qu’on envoie une requête différente de GET et POST
Exemple :
AuthUserFile /repertoire/de/votre/fichier/.htpasswd AuthName "Accès protégé" Require valid-user AuthType Basic Deny from all
Dans ce cas Apache interprétera la requête et n’affichera aucune erreur, bien qu’on a pas utilisé GET ou POST qui sont restreint grâce à la directive LIMIT, apache agira gentiment et nous affichera le contenu du répertoire /secret/ ;)
Logiquement apache est censé interdire l’accès à tout ficher dans le répertoire concerné, le soucis c’est que cette protection est appliqué seulement si le navigateur appelle la page via GET ou POST, par defaut nos navigateurs appellent implicitement les page avec des recettes GET, pour contourner cette protection, il suffit de se servir d’un outil comme NetCat ou bien LiveHttpHeaders (Extension Firefox) on modifiant le GET par n’importe koi et vous hop vous aurez le contenu de la page qui s’affichera :)
Comment se protéger ?
c’est assez simple, n’utilisez pas la directive LIMIT dans vos .htaccess pour restreindre l’accès à vos fichiers sensibles, virez les lignes <Limit> … </Limit> de tous vos fichiers .htaccess, ça vous évitera ce genre de problèmes
Tags :.htacces, bypass htaccess, contourner htaccess, hacking htaccess, htaccess limit flaw- Categorie: Hacking, Tutoriaux
- (2) Commentaires













Canyo****N
octobre 25th, 2009 at 14 h 42 min
Très bon. Merci
Xavier
octobre 28th, 2009 at 10 h 21 min
A noter que free semble filtrer les méthodes pour ses pages perso.