Summer BlackHat rant ;)

Publié le 03 août 2012 par Sid

S

ecurityVibes vient de publier un billet à propos d'un outil présenté à BlackHat la semaine dernière. Répondant au doux nom de HTExploit, il permet, je cite, "d'exploiter une faille dans la manière dont les fichiers .htaccess peuvent être configurés pour protéger l'accès à un répertoire web au moyen d'une authentification". Et donc permettre le contournement de l'authentification. De quoi éveiller la curiosité !

Quand on y regarde de plus près, on s'aperçoit que le fonctionnement de l'outil, et a fortiori la faille qu'il exploite, ne sont expliqués nulle part, ni dans les slides, ni dans la documentation en ligne. Et pour cause...

Pour comprendre de quoi il retourne, vous avez le choix des armes. Vous pouvez vous plonger dans le code. C'est du Python, ce n'est pas très long, et vous devriez rapidement vous étonner de ce que les requêtes HTTP soient réalisées avec une méthode POTATO. Sic.
Vous pouvez également vous intéresser aux liens fournis en référence, donc le plus pertinent pointe sur les problèmes liés à l'usage de la directive <Limit> qui semble donc être la fameuse faiblesse dans l'écriture de .htaccess.
Enfin, vous pouvez lancer l'outil sur un serveur web et regarder les logs pour y voir des choses de ce genre :

192.168.5.11 - - [03/Aug/2012:15:32:53 +0200] "POTATO /path/wp-settings.php HTTP/1.1" 404 226 "-" "Python-urllib/2.7"
192.168.5.11 - - [03/Aug/2012:15:32:53 +0200] "POTATO /path/wp-signup.php HTTP/1.1" 404 224 "-" "Python-urllib/2.7"
192.168.5.11 - - [03/Aug/2012:15:32:53 +0200] "POTATO /path/wp-trackback.php HTTP/1.1" 404 227 "-" "Python-urllib/2.7"
192.168.5.11 - - [03/Aug/2012:15:32:53 +0200] "POTATO /path/write.php HTTP/1.1" 404 220 "-" "Python-urllib/2.7"

Et là, si vous avez un tant soit peu de bouteille, vous voyez directement où l'outil veut en venir : exploiter la faille de configuration Apache sus-citée, vieille comme le monde[1] et passablement connue. Une simple recherche vous fournira pléthore de liens expliquant le problème, et comment y remédier.
Pour y parvenir, l'outil lance donc une série de requêtes avec une méthode qui ne soit pas GET ou POST[2] à destination d'une URL de base en la complétant avec une liste de nom de fichiers couramment utilisés dans les applications web populaires. Ce qui ne manquera pas de rappeler le fonctionnement de certains outils, typiquement Nikto, qui aurait tout aussi bien pu être patché à l'occasion.

Tout ça pour dire quoi ? Et bien autant je comprends que les auteurs aient pu avoir envie d'écrire un tel outil[3], comme pleins de gens l'ont fait avant eux, et de le publier. Par contre, que ça justifie un talk de vingt minutes à BlackHat en 2012, là par contre, j'ai plus de mal...

Notes

[1] Le document sur <Limit> date de 1997...

[2] POTATO en l'occurence.

[3] Quand bien même des outils existants implémentent la détection de ce problème.