Professional Documents
Culture Documents
<h1>Bonjour !</h1>
Pour accder la page, nous accdons l'URL http://127.0.0.1/~trance/vuln/ avec un navigateur Web. La requte envoye est grossirement la suivante :
La rponse reue comporte alors le code HTML de la page Web. Jusqu'ici, tout est normal : Apache n'a fait qu'interprter la requte GET qu'on lui a envoy. Maintenant, imaginez que nous envoyons une requte mal forme qui n'est pas de type GET, comme :
n1Mp0rTeKwa http://127.0.0.1/~trance/vuln/ HTTP/1.1 Host: 127.0.0.1 Et l, nous constatons qu'Apache ne fait absolument aucune diffrence entre cette et la requte prcdente ! Il n'y a aucune erreur ; il renvoie la mme chose. A premire vue, cela ne choque pas forcment, mais on s'aperoit assez vite que l'on peut tirer profit de cette faille pour contourner certaines protections .htaccess.
<Files fichierAProteger.php> AuthUserFile /chemin/vers/.htpasswd AuthName "Zone accs restreint" AuthType Basic <Limit GET POST> require valid-user </Limit> </Files>
Ce fichier permet d'indiquer Apache de refuser toute requte POST ou GET si l'utilisateur n'est pas identifi avec un login et un mot de passe apparaissant dans le fichier .htpasswd correspondant. En fait, peu importe qu'il y ait de .htpasswd ; la faille ne se situe pas ce niveau. Souvenez-vous de ce que nous avons vu plus haut. Nous avons vu qu'Apache interprtait toutes les requtes qu'il ne comprenait pas comme des requtes GET. Ainsi, nous pouvons utiliser cela notre avantage pour accder la page protge sans s'authentifier ! Exemple : imaginons que nous avons un .htaccess rudimentaire de ce type dans le mme dossier :
<h1>Bonjour !</h1>
Voila donc comment contourner la protection... Simple, n'est-ce pas ? Le pire, dans tout cela, c'est que la majorit des webmasters protgent leurs sites de cette faon. Et j'en faisais partie, jusqu' ce qu'on me le signale ;)
3. Correction
La correction est ultra-simple : n'utilisez pas l'instruction "limit" quand vous voulez restreindre l'accs un fichier ou dossier ! Bannissez les lignes "" et "" de vos fichiers .htaccess et vous viterez ce genre de problmes. D'ailleurs, la documentation d'Apache prcise bien qu'en gnral, il ne faut pas utiliser lorsque l'on cherche restreindre l'accs. Je cite : "In the general case, access control directives should not be placed within a section."
4. Limites
Un petit bmol cependant : pour le moment, nous n'avons pas trouv le moyen de fausser les requtes POST en injectant des donnes. Ainsi, si vous avez des formulaires POST protgs par des .htaccess, ils sont priori srs. Mais je vous conseille quand mme de patcher vos .htaccess en retirant les lignes "<Limit>" un peu trop dangereuses...
.