Ubrain 30 Posté(e) le 10 août 2018 Partager Posté(e) le 10 août 2018 (modifié) Bonjour HabboDev, Je viens faire un tutoriel sur une faille très courante sur les CMS, pour ma part je n'ai vu aucun CMS n'ayant d'anti brut-force au niveau de la connexion. Voici une tutoriel complet pour éviter le brut-force, ce qui change des brut-force web que j'ai pu vous montrer il y a quelques mois, c'est que celui-ci enregistre les données sur le serveur et non pas les cookies qui peuvent s'éffacer très facilement, voir être bloqués pour passer cette sécurité.Prérequis : Base de données / Hébergement payant (l'hébergement gratuit peut provoquer des erreurs de stockage) 1. Un Brut Force, c'est quoi ? Le brut Force est une faille permettant d'usurper l'identité d’autrui en entrant dans le formulaire des entrées aléatoires jusqu’à trouver les bons mots-de passe, ceci est fait par des robots. Ces robots vont par exemple commencer par envoyer comme mot de passe "a", puis si le mot de passe n'est pas "a" il va essayer "b", puis "c".... jusqu’à arriver à "z" ou il va essayer les caractères spéciaux (#*$=°) puis les chiffres. Citation Et quand tous les caractères ont étés épuisés, que ce passe t-il ? Je ne vous apprend rien si je vous dit que 99% des mots de passe font plus d'un caractère, si , si, je vous assure ! Donc par extension, un brut-force qui ne va pas au dessus d'un mot de passe d'un seul caractère ne sert pas à grand chose... Donc quand le robot atteint le dernier caractère (par exemple 9) il va reprendre le premier caractère (a) puis reprendre le même procédé avec une seconde lettre (aa) puis (ab) puis (ac) et j'en passe, Puis quand le second caractère arrive au dernier caractère, le premier caractère va changer (a -> b) donnant (ba) puis (bb) puis (bc) Jusqu’à ce que les deux arrivent au dernier caractère utilisable, et bien un nouveau caractère va être ajouté et ce jusqu’à trouver le mot de passe ! Citation Oui mais pour arriver à un mot de passe de 6 caractère il faudrait faire plus de 120984 entrées (oui j'ai calculé) et pour faire cela il faudrait prendre plusieurs jours, voir heures non ? Ce sont des robots qui le font et vous savez la différence de rapidité entre un robot et un humain, le différence est telle que pour craquer ce mot de passe &é"'(- il ne faudra que deux minutes pour que ce mot de passe soit brut force, choquant, non ? Avant de paniquer et de vous dire que vos données bancaires vont être compromis ou autre, sachez que de nombreux sites ont d'anti brut-force ! Heureusement, trouver un brut-force de nos jours n'est pas un jeu d'enfant, je veux dire que par la il faut avoir de la chance pour tomber sur un anti brut-force sans virus... 2. Régler l'erreur avec les cookies, quel est le problème ? J'avais il y a de cela quelques mois (en mai) fait un petit tutoriel pour régler les failles brut force sauf que j'ai utilisé la méthode des cookies. Le nombre d'essais étaient stockés dans une variable $_COOKIE pour éviter un nombre trop important de connexion. Pour avoir accès à cette image, merci de vous connecter. Par exemple, ici, nous avons l'option de bloquer certains cookies, évitant que le site puisse stocker des variables dedans. Il est simple de vérifier si le cookie à été bloqué mais cette manière ne reste quand même pas sécurisée. Je pense que si une personne est capable d'utiliser un brut force, elle est aussi capable de supprimer un cookie. 3. Anti Brut-Force stocké dans le serveur Pour ceci, nous allons relever l'IP et collecter le nombre d'essaies avant de bloquer au bout d'i=un certain nombre de tentatives. J'ai même ajouté la colonne "Autorisation" si vous voulez autoriser un membre à passer le brut force. Citation Mais si on change l'IP, on pourra se reconnecter à nouveau. C'est le risque, mais déjà cette sécurité bloque déjà une bonne partie des brut-force. Et puis, rien ne vaut plus de sécurité ! Citation Télécharger le fichier SQL : Vous pouvez le télécharger ici,antibrutforce_ubrain.sql Une fois le fichier mis sur votre base de données, passons à l'ajout de code sur votre site : Pour commencer, vous devez trouver votre fichier permettant la connexion, pour vous aider, allez dans le fichier ou se trouve la barre de connexion (header, index) et trouvez la balise <form>, Voici à quoi devrait ressembler approximativement la partie de code : <form action="fichier.php" method="post"> <input type="text" placeholder="Identifiant"> <input type="password" placeholder="Mot de passe"> <input type="submit" value="Envoyer"> </form> Vous devez récupérer le contenu du paramètre "action" dans la balise <form> (ici, fichier.php) Ouvrez votre fichier nommé selon le paramètre "action", Et ajoutez en début du body,Si il n'y a pas de Body, ajoutez ce code après la connexion PDO <?php // Récupération de l'IP du client $ip = $_SERVER['REMOTE_ADDR']; // Récupération des données de la table antibrutforce_ubrain $sql = "SELECT * FROM antibrutforce_ubrain WHERE IP=\"$ip\""; // Modifier $bdd par la variable de stockage de la base de données (voir pdo.php) foreach ($bdd->query($sql) as $antibrutforce) { } // Vérification si le membre est autorisé ou non à avoir un nombre de tentatives élevé if ($antibrutforce['Autorisation'] == 0) { // Vérification du nombre de tentatives, modifier 30 par le nombre de tentatives max autorisées if($antibrutforce['Essaies'] >= 30) { // Arret de l'exécution du script, vous pouvez insérer une redirection pour indiquer que le nombre maximum de tentatives à été atteint. exit; } } ?> Maintenant nous allons ajouter le code pour compter le nombre de tentatives maximum. Pour cette partie, vous aurez besoin de petites compétences techniques, si vous n'y arrivez pas, envoyez-moi un pv, je vous guiderais. Vous allez devoir trouver l'endroit dans la page où se situe la redirection en cas d'erreur lors de la connexion. Une fois cette partie de code trouvée, veuillez insérer ce code au dessus de la redirection sinon cela perd toute son utilité <?php // Comme les données ont déjàs étés récupérés plus haut, aucun besoin de les récupérer à nouveau try { // Calcul du nombre d'essais $essai = $antibrutforce['Essaies'] + 1; $sql = "UPDATE antibrutforce_ubrain SET Essaies=\"$essai\" WHERE IP=\"$ip\""; // Modifier $bdd par la varible de récupération des données PDO (voir pdo.php) $stmt = $bdd->prepare($sql); $stmt->execute(); } catch(PDOException $e) { // En cas d'erreur echo 'Une erreur inconnue à empeché l\'envoie au serveur, ERREUR : '.$e.''; // Arret de l'execution du script par sécurité. exit; } ?> Maintenant, en cas de réussite, il faut vider le nombre d'essais et remettre les compteurs à zéro. Cette fois-ci, vous allez devoir trouver l'endroit dans la page où se situe la redirection en cas de réussite lors de la connexion. Une fois cette partie de code trouvée, veuillez insérer ce code au dessus de la redirection sinon cela perd toute son utilité <?php try { // Remise à zéro des tentatives de connexion $sql = "UPDATE antibrutforce_ubrain SET Essaies=0 WHERE IP=\"$ip\""; $stmt = $bd->prepare($sql); $stmt->execute(); } catch(PDOException $e) { } ?> Merci d'avoir lu mon tutoriel, si vous avez besoin d'aide, n'hésitez pas ! N'oubliez pas le +1 si vous avez trouvé mon article intéressant car il à mis du temps à être réalisé et écrit Citation Si vous voulez autoriser un membre à passer outre la sécurité, vous devez mettre Autorisation sur la valeur 1 dans l'entrée de son IP Bonne journée à vous tous Modifié le 10 août 2018 par Ubrain Lien à poster Partager sur d’autres sites Plus d'options de partage...
Invité Posté(e) le 10 août 2018 Partager Posté(e) le 10 août 2018 Merci à toi, bon tutoriel :). Lien à poster Partager sur d’autres sites Plus d'options de partage...
Jill 24 Posté(e) le 10 août 2018 Partager Posté(e) le 10 août 2018 Merci c'est super sympas de ta part de nous partager ça :) Lien à poster Partager sur d’autres sites Plus d'options de partage...
Pancani 168 Posté(e) le 10 août 2018 Partager Posté(e) le 10 août 2018 Très bon tutoriel très utile à la communauté Ça servira à beaucoup Merci d'avoir pris le temps de rédiger ça Lien à poster Partager sur d’autres sites Plus d'options de partage...
Ubrain 30 Posté(e) le 10 août 2018 Auteur Partager Posté(e) le 10 août 2018 Il y a 1 heure, Bloon a dit : Merci à toi, bon tutoriel :). il y a 37 minutes, Pancani a dit : Très bon tutoriel très utile à la communauté Ça servira à beaucoup Merci d'avoir pris le temps de rédiger ça il y a une heure, TheJill a dit : Merci c'est super sympas de ta part de nous partager ça Merci Lien à poster Partager sur d’autres sites Plus d'options de partage...
ßRÂИÐØИ 47 Posté(e) le 10 août 2018 Partager Posté(e) le 10 août 2018 J'aurais pas procéder par 30 enregistrements des tentatives dans la bdd personnellement mais merci pour le partage Lien à poster Partager sur d’autres sites Plus d'options de partage...
Ubrain 30 Posté(e) le 10 août 2018 Auteur Partager Posté(e) le 10 août 2018 il y a 2 minutes, Kurumi Tokisaki a dit : J'aime bien, sauf que calculer comme sa, c'est pas très rentable. pour ma part, j'ai un anti brute-force mais il fait aussi l'anti robot, au passage. pourquoi tu récupère pas les tentatives directement depuis les logs et compte le nombre de logs non réussie ? et ainsi si par exemple dépasse: 5 fois le mauvais mot de passe sa te met un captcha. et ainsi, mettre un time, en gros toute les 5 minutes exemple, sa enlève automatiquement le captcha. donc le brute force inutile et aussi les robots (pub) avec. et l'utilisateur pourras toujours se connecter. et le brute force / anti robot se enlève auto merci quand même autrement = ) Hey, oui c'est une bonne idée et je n'y avais pas directement pensé. Merci pour la remarque Bonne fin de journée ! Lien à poster Partager sur d’autres sites Plus d'options de partage...
BaDSoooD 0 Posté(e) le 15 octobre 2018 Partager Posté(e) le 15 octobre 2018 Très bon sujet, n'hésite pas à refaire des sujets à propos d'autres types d'attaques ça pourrait en aider beaucoup (moi inclus) Lien à poster Partager sur d’autres sites Plus d'options de partage...
Xzzz 0 Posté(e) le 16 octobre 2018 Partager Posté(e) le 16 octobre 2018 merci Lien à poster Partager sur d’autres sites Plus d'options de partage...
Osifou 0 Posté(e) le 17 octobre 2018 Partager Posté(e) le 17 octobre 2018 Merci ! Lien à poster Partager sur d’autres sites Plus d'options de partage...
Messages recommandés
Créer un compte ou se connecter pour commenter
Vous devez être membre afin de pouvoir déposer un commentaire
Créer un compte
Créez un compte sur notre communauté. C’est facile !
Créer un nouveau compteSe connecter
Vous avez déjà un compte ? Connectez-vous ici.
Connectez-vous maintenant