Le Hollandais Volant

Contre le brute-force


pirate

Le site du Petit Marocain a été piraté : tout a été effacé…

Selon Scout123, la version de Pluxml utilisé sur le site possédait une faille de sécurité. Couplée à une attaque brute-force sur la page d'admin (selon LPM) les articles ont été supprimés.

L'usage du brute-force : comment est-ce encore possible si facilement ?

Cette technique consiste simplement à tester toutes les combinaisons de mots de passe possibles. C'est comme si pour un cadenas à code vous testiez les combinaisons en partant de 000 pour aller à 999. Vous serez sûr tôt ou tard de trouver le mot de passe, mais il faut y passer du temps.
Évidement plus le mot de passe est long, plus il est dur à trouver : pour un caractère, il y a disons 50 possibilités (minuscules, majuscules, chiffres…), c'est trouvable même à la main. Pour 15 caractères il faudrait une durée 60 fois l'age de la Terre à raison de 1'000'000 de tentatives par secondes pour être sûr de trouver le mot de passe).

D'autre part, un mot de passe doit être stocké avec un salt, c'est à dire un code ajouté au mot de passe avant d'en calculer le hash. Par exemple, "pass" donnera un hash1, mais "hash(pass.salt)" donnera un hash2.
Ceci permet d'éviter l'usage des rainbow-tables : des tableaux de plusieurs centaines de giga-octets qui font la correspondance entre un hash et un mot de passe. Ici, les rainbow tables ne serviront à rien, vu que le hash2 ne correspond pas du tout à "pass", mais à "pass+salt", et vu que "salt" est choisis arbitrairement…

Autre chose : pour qu'un pirate arrive à se connecter, il lui faut le mot de passe. Mais il lui faut également la page de connexion : à quoi bon avoir une clé si le coffre est caché ?
C'est là que ce situe une autre faiblesse énorme dans presque tous les CMS que je connais : les pages de login sont toujours à la même place (wp-admin pour Wordpress par exemple). Il n'y a pas vraiment de possibilité de changer ça.
Je ne sais pas si c'est possible ailleurs (ça ne marche pas sous GSimple, ça march sous Pluxml à condition de modifier quelques fichier), mais je rappelle que si vous utilisez Blogotext, vous pouvez (et devriez) renommer le dossier Admin (une fois Blogotext configuré et installé) en ce que vous voulez : toto54, margherite ou kikou par exemple. Si vous choisissez quelque chose d'original, alors votre page de connexion sera aussi secrète que votre mot de passe.
Évidement, ça laisse entendre que vous ne placiez pas de lien vers le panel Admin sur votre page (Question sécurité, je trouve cette pratique du plus mauvais)…

Enfin, le brute force consiste à bombarder la page de connexion de requêtes : des centaines, voir des milliers de demandes par secondes. Limitons cela : une seule ligne de code PHP permet à n'importe quel script de limiter drastiquement le bruteforce : il suffit de faire un usleep(200000); à la connexion : la page ne sera exécutée qu'après 0,2 seconde. Autrement dit : il n'y aura qu'au maximum 5 requête par seconde. Le brute force devient impossible à faire depuis un ordinateur (il faudrait un botnet), tout en étant complètement transparent pour l'utilisateur : 0,2 secondes d'attente à la connexion, c'est rien. J'en avais déjà parlé en fait, mais c'est pas mal de se F5 la mémoire.

image de Pasuraku76