Ubrain 30 Posté(e) le 5 août 2018 Partager Posté(e) le 5 août 2018 Bonjour chère communauté inshare, Un tutoriel que j'ai voulu faire depuis des mois mais qui n'a jamais abouti (la raison en est elle même inconnue !), mais nous y voici, je vais vous apprendre comment régler les failles XSS de manière sécurisée sur n'importe quel site, que ce soit rétro habbo ou sur vos sites personnels ! Voici ci-dessous quatre catégories traitant les sujets sur les failles XSS. Les failles XSS, kezako ? Révélation Premièrement, que signifie XSS ? Cela veut dire tout bêtement le Cross Site Scripting Citation Moi je lis CSS pas XSS Je ne vous apprends rien si je vous dit que le CSS existe dèjà (et pour ceux qui ne suivent pas le CSS est un langage informatique permettant d'attribuer des éléments graphiques à un code, les couleurs, les polices, les tailles sont principalement attribués avec le CSS) et bien comme on ne pouvait pas appeler cela encore "CSS" le créateur à simplement remplacé le C du début par un X. Le principe d'une faille XSS est simple, il s'agit d'injecter du code non autorisé la ou le site n'est pas sensé en recevoir. Par exemple, si lors de mon inscription je m'appelle <bold>UBrain</bold> Sur le site, mon pseudonyme ne sera pas "UBrain" mais "UBrain", j'usqu'à maintenant, rien de bien méchant, j'ai aussi d'autres exemples sur les noms, Voici une liste : Révélation Si je m'appelle : <h1>UBrain</h1> Mon nom sera affiché UBrain au lieu de UBrain Voyons avec un autre, changeons la couleur cette fois-ci : <p style="color:orange">UBrain</p> Je vous laisse deviner le résultat : UBrain (cela n'est pas la couleur exacte) Ceci marche aussi avec toutes les couleurs par exemple : <p style="color:orange">U</p><p style="color:tomato">B</p><p style="color:blue">r</p><p style="color:pink">a</p><p style="color:green">i</p><p style="color:yellow">n</p> Le résultat ressemblera à ceci : UBrain En soi c'est plutot joli, mais on peut aussi modifier la syntaxe : U<br>B<br>r<br>a<br>i<br>n Cela fera : Révélation U B r a i n Aller, encore un dernier exemple, <ul> <li>UBrain</li> <li>Burain</li> <li>niarBU</li> <li>iBnAUr</li> </ul> Voici le résultat : Révélation UBrain Burain niarBU iBnAUr Révélation iBnAUr, cela pourrait presque faire office de pseudonyme Et il faut savoir que de nombreux sites sont touchés par ces failles, Pour faire simple, cette faille nous permet de modifier le code sans y avoir accès ! Mais, modifier son nom, c'est embêtant, en effet... mais quel est le danger ? Le danger pour les sites Révélation Nous avons vu la modification des noms, mais si l'on peut insérer du code... l'on peut forcément aller plus loin ? Effectivement, ces failles sont destructrices, elles peuvent pratiquement tout faire sur le site, cela va des redirection au vol de données Ces failles permettes non seulement d'injecter du HTML mais par extension, elles permettent aussi d'injecter du PHP, du CSS, du JS et encore d'autres. Imaginez les possibilités destructrices ! Essayons de parcourir le chemin du code que nous entrons, et voyons comment cela abouti : Premièrement, je vais me nommer à l'inscription ces trois lignes de code qui sont du JavaScript. Si j'exécute ce code par exemple sur mon site (je sors du contexte de l'inscription pour vous montrer ce que cela fait de façon "normale") il va y avoir un popup avec écrit dedans "Ton site s'est fait hacké" <script> alert('Ton site s\'est fait hacké'); // le "\" permet de dire au script que le ' qui suit ne sert pas à fermer la zone de texte, lors de l'exécution du script l'antislash ne sera pas pris en compte </script> Une fois l'enregistrement validé, le pseudonyme sera envoyé vers la base de données du site, dans la colonne "pseudonyme". Le danger est à partir du moment ou le site affiche ce nom, pour mettre dans le contexte, voici par exemple le code pour afficher un message dans une southbox (c'est un exemple, n'utilisez pas ce code pour vos southbox ) <?php //récupération des données $sql = "SELECT * FROM southbox ORDER BY date DESC LIMIT 0,60"; foreach ($bd->query($sql) as $message) { $auteur = $message['auteur']; //récupère tous les données sur l'auteur du message (grade, nombre de messages...) $sql = "SELECT * FROM membres WHERE pseudo=\"$auteur\""; foreach ($bd->query($sql) as $a) { } //code CSS pour que le message ressemble à un message echo '<div style="background-image:linear-gradient(to right,#FF7200,#FFAE00);margin:2px;padding:1px;border-radius:20px;color:#901000;font-family:arial;">'; //permet d'afficher l'auteur et le contenu du message echo '<b class="srf"> <i class="fas fa-user-cog"></i> '.$auteur.' : </b> '.$message['contenu'].''; ?> (Ce code est un extrait d'un vrai code d'une de mes southbox j'ai pas mis le code complet pour que vous compreniez et que vous ne vous perdiez pas parmis les lignes de code ) Voici par exemple si j'envoie un message avec un pseudo sans originalité mais normal (sans utiliser de failles XSS) Pour avoir accès à cette image, merci de vous connecter. Si par exemple je modifie "admintest1" par <script> alert('Ton site s\'est fait hacké'); </script> Et bien chaque utilisateur qui serait amené a aller voir la southbox obtiendra un popup avec écrit dedans : Ton site s'est fait hacké Pourquoi ? Car le navigateur va simplement exécuter le code qu'il va lire et pas simplement le donner. La résolution de cette faille avec XSS Révélation Venons-en au concret, maintenant que l'on sait ce qu'est une faille XSS et quel est le danger de la présence de ses dèrnière, voyons donc maintenant comment les résoudre, Cela n'est pas très compliqué en soi, il existe de nombreuses manières de supprimer les commandes d'une entrée. Mais je vais vous présenter celle qui pour moi reste la plus sécurisée et la plus "utile" : le strip_tags(); C'est une commande PHP qui va supprimer toutes les commandes HTML, XML ET PHP. Par exemple si le nom entré est le suivant : <bold>UBrain</bold> Au lieu d'afficher UBrain le résultat sera UBrain Et cela marche avec JS, PHP, XML, CSS.... Et sa syntaxe ? Il n'y a rien de plus simple à retenir, Voici un exemple : <?php // Récupération du contenu du message (ici j'utilise post) $message = filter_input(INPUT_POST, "message"); // Une fois les données récupérés, je vais utiliser le srip_tags() $message = strip_tags($message) ?> Voici son fonctionnement avec une variable Si vous souhaitez savoir comment faire pour filtrer sans variable (juste une chaîne de caractères, c'est expliqué dans le dépliant) Révélation Le fonctionnement n'est pas si différent, il faut juste transformer la variable en une chaîne de caractères avec des " ou ', comme par exemple : <?php // Utilisation du strip_tags sans $variables $message = strip_tags("<bold>Chaine à transformer</bold>") // Marche aussi comme cela : $message = strip_tags('<bold>Chaine à transformer</bold>') ?> Attention : le strip tag ne permet pas d'enlever les " ou les ', pour ce faire, je vous recommande d'utiliser htmlspecialchars et ses paramètres. Savoir si son site à des failles Révélation Pour savoir si son site comporte ses failles, il n'y a rien de plus simple que d'essayer ces failles, en essayant d'insérer du code dans les champs qui s'enregistrent dans une DB par exemple, Le champ de pseudonyme Les champs personnels (website, discord, mail...) Les images si vous utilisez des url pour l'affichage d'images Le champ d'envoi de message (privé, forum, southbox) Et tous les autres champs qui passent par la base de données ! Et vérifiez votre code, le XSS reste l'une des raison général des hacks. Autant sur Habbo qu'autre part ! N'oubliez pas, vérifiez vos sites ceci est toujours très important Ce petit tutoriel a mis du temps à etre fait donc n'oublies pas pour me supporter de faire un simple clic sur j'aime ! Très bonne journée à vous tous ! Et très bonne continuation ! 4 Lien à poster Partager sur d’autres sites Plus d'options de partage...
Pancani 168 Posté(e) le 5 août 2018 Partager Posté(e) le 5 août 2018 Salut, merci à toi d'avoir pris le temps de rédiger ce tutoriel détaillé Il servira à beaucoup de gens même hors catégorie Habbo Lien à poster Partager sur d’autres sites Plus d'options de partage...
Yumi 85 Posté(e) le 5 août 2018 Partager Posté(e) le 5 août 2018 Salut, Un très bon tutoriel qui va en aider plus d'un ! - Rick Lien à poster Partager sur d’autres sites Plus d'options de partage...
Ubrain 30 Posté(e) le 5 août 2018 Auteur Partager Posté(e) le 5 août 2018 il y a 5 minutes, Pancani a dit : Salut, merci à toi d'avoir pris le temps de rédiger ce tutoriel détaillé Il servira à beaucoup de gens même hors catégorie Habbo à l’instant, Rick a dit : Salut, Un très bon tutoriel qui va en aider plus d'un ! - Rick Merci Lien à poster Partager sur d’autres sites Plus d'options de partage...
Invité Remi Posté(e) le 5 août 2018 Partager Posté(e) le 5 août 2018 Salut, Le tutoriel est top! Merci Lien à poster Partager sur d’autres sites Plus d'options de partage...
Win4Dz 24 Posté(e) le 5 août 2018 Partager Posté(e) le 5 août 2018 Bon tuto merci Discord : ωιи4∂z</>#3675 Lien à poster Partager sur d’autres sites Plus d'options de partage...
Nagamasa 27 Posté(e) le 5 août 2018 Partager Posté(e) le 5 août 2018 Quand je vois faille XSS (dans le domaine habbo) ça me fait penser directement à SystemCMS Mais comme tu le précise, il suffit de mettre un htmlspecialchars (); Merci pour ce bon tuto qui mérite un bon Souvent la moitié de la réponse se trouve dans une question bien posée. Lien à poster Partager sur d’autres sites Plus d'options de partage...
Ubrain 30 Posté(e) le 5 août 2018 Auteur Partager Posté(e) le 5 août 2018 il y a une heure, MonsieurBanane a dit : Salut, Le tutoriel est top! Merci il y a 11 minutes, Scorpio a dit : Quand je vois faille XSS (dans le domaine habbo) ça me fait penser directement à SystemCMS Mais comme tu le précise, il suffit de mettre un htmlspecialchars (); Merci pour ce bon tuto qui mérite un bon il y a une heure, DEvPuxZz a dit : Bon tuto merci Encore 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