Connexion
S'inscrire
Actualités
Quoi de neuf
Activités générales
Auteurs
Forums
Nouveaux messages
Rechercher un forum
Quoi de neuf
Nouveaux messages
Nouveaux messages de profil
Activités générales
Membres
Membres inscrits
Visiteurs actuels
Nouveaux messages de profil
Rechercher dans les messages des profils
Teams
Créé ton équipe
Quoi de neuf ?
Nouveaux messages
Rechercher un forum
Menu
Connexion
S'inscrire
Install the app
Install
Forums
Forums généraux
Informatique
Comment combler les failles de sécurité web les plus courantes ? (2.0)
JavaScript is disabled. For a better experience, please enable JavaScript in your browser before proceeding.
Vous utilisez un navigateur non à jour ou ancien. Il ne peut pas afficher ce site ou d'autres sites correctement.
Vous devez le mettre à jour ou utiliser un
navigateur alternatif
.
Répondre à la discussion
Message
<blockquote data-quote="Rivals" data-source="post: 7057527" data-attributes="member: 694298"><p style="text-align: center"><span style="font-family: 'Ubuntu'">[ATTACH=full]105013[/ATTACH]</span></p> <p style="text-align: center"><span style="font-family: 'Ubuntu'">Salut à tous [FA]fa-smile-o[/FA], vous avez peut-être lu la première version de ce tutoriel (<a href="https://reality-gaming.fr/threads/comment-combler-les-failles-de-securite-web-les-plus-courantes.563243/" target="_blank">Comment combler les failles de sécurité web les plus courantes ?</a>) et bien sachez que vous lisez aujourd'hui la deuxième. <img src="data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7" class="smilie smilie--sprite smilie--sprite363" alt=":smile:" title="Smile :smile:" loading="lazy" data-shortname=":smile:" /></span></p><p></p><p style="text-align: center"><span style="font-family: 'Ubuntu'">[ATTACH=full]105022[/ATTACH]</span></p> <p style="text-align: center"><span style="font-family: 'Ubuntu'">Commençons si vous le voulez bien par une faille qui se situe au niveau des cookies de vos utilisateurs, il n'est pas rare de voir des informations stockées dans ceux-ci et c'est principalement leur but.</span></p> <p style="text-align: center"><span style="font-family: 'Ubuntu'"></span></p> <p style="text-align: center"><span style="font-family: 'Ubuntu'">Mais cela peut-être également une mauvaise pratique, comme je vais le démontrer dans le cas suivant.</span></p> <p style="text-align: center"><span style="font-family: 'Ubuntu'">[ATTACH=full]104953[/ATTACH]</span></p> <p style="text-align: center"><span style="font-family: 'Ubuntu'">Prenons l'exemple de ce site web, nous pouvons voir qu'il y a pas mal de cookies d'enregistrés mais si vous regardez bien le dernier est très intéressant puisqu'il se nomme <em>userInfos</em>.</span></p> <p style="text-align: center"><span style="font-family: 'Ubuntu'"></span></p><p><span style="font-family: 'Ubuntu'">[FA]fa-border fa-gg[/FA] COOKIE</span></p><p><span style="font-family: 'Ubuntu'">[CODE]nom%22%3A%RG%22%2C%22prenom%22%3A%22Rivals%22%2C%22F45a1875142e511b4Z26S6d3c9e1c0daa.jpg%22%7D [/CODE]</span></p><p><span style="font-family: 'Ubuntu'"></span></p><p style="text-align: center"><span style="font-family: 'Ubuntu'">Nous pouvons voir clairement que dans celui-ci y figure notre nom d'utilisateur, imaginons qu'un utilisateur malveillant souhaite passer de l'HTML [FA]fa-html5[/FA] dans celui-ci en modifiant le cookie.</span></p> <p style="text-align: center"><span style="font-family: 'Ubuntu'"></span></p><p><span style="font-family: 'Ubuntu'">[FA]fa-border fa-gg[/FA] COOKIE MODIFIE</span></p><p><span style="font-family: 'Ubuntu'">[CODE]nom%22%3A%RG%22%2C%22prenom%22%3A%22<marquee>Rivals</marquee>%22%2C%22F45a1875142e511b4Z26S6d3c9e1c0daa.jpg%22%7D [/CODE]</span></p><p style="text-align: center"><span style="font-family: 'Ubuntu'"></span></p> <p style="text-align: center"><span style="font-family: 'Ubuntu'"><img src="https://i.gyazo.com/f180d01dc641c153c673eb555b7daee5.gif" alt="" class="fr-fic fr-dii fr-draggable " style="" /></span></p> <p style="text-align: center"><span style="font-family: 'Ubuntu'"></span></p> <p style="text-align: center"><span style="font-family: 'Ubuntu'">Comme vous pouvez le voir, <span style="color: #ff0000">le code a été interprété [FA]fa-thumbs-o-down[/FA] ainsi l'HTML est fonctionnel</span>. Vous pourrez vous le douter si je présente ceci c'est que dans l'état actuel des choses ce n'est pas dangereux pour le site mais imaginons un système plus proche d'une authentification dans lequel vous auriez un cookie nommé <em>is_admin</em> est que la valeur est à 0 vous auriez moins le sourire si l'un de vos utilisateurs modifie cette valeur par 1.</span></p> <p style="text-align: center"><span style="font-family: 'Ubuntu'"></span></p> <p style="text-align: center"><span style="font-family: 'Ubuntu'">[ATTACH=full]105026[/ATTACH]</span></p> <p style="text-align: center"><span style="font-family: 'Ubuntu'">Pour combler cette faille vous pouvez utiliser la méthode permettant de combler la faille XSS ainsi vous pouvez utiliser la fonction PHP appelée <em><a href="http://php.net/manual/fr/function.htmlspecialchars.php" target="_blank">htmlspecialchars</a></em> mais ceci dit je vous conseille très clairement de ne pas stocker des informations tel que l'identifiant de la personne, son pseudo ou autre donnée sensible.</span></p> <p style="text-align: center"><span style="font-family: 'Ubuntu'"></span></p> <p style="text-align: center"><span style="font-family: 'Ubuntu'"><u>Privilégiez plutôt la SESSION pour stocker l'identifiant du membre par exemple.</u></span></p> <p style="text-align: center"><span style="font-family: 'Ubuntu'"></span></p><p><span style="font-family: 'Ubuntu'">[FA]fa-border fa-gg[/FA] EXEMPLE AVEC LA SESSION</span></p><p><span style="font-family: 'Ubuntu'">[PHP]<?php</span></p><p><span style="font-family: 'Ubuntu'"></span></p><p><span style="font-family: 'Ubuntu'">// on démarre l'utilisation de la session</span></p><p><span style="font-family: 'Ubuntu'">session_start();</span></p><p><span style="font-family: 'Ubuntu'"></span></p><p><span style="font-family: 'Ubuntu'">// on stock l'userId de la personne</span></p><p><span style="font-family: 'Ubuntu'">$_SESSION['userId'] = 1;</span></p><p><span style="font-family: 'Ubuntu'"></span></p><p><span style="font-family: 'Ubuntu'">echo $_SESSION['userId'];</span></p><p><span style="font-family: 'Ubuntu'">[/PHP]</span></p><p><span style="font-family: 'Ubuntu'"></span></p><p><span style="font-family: 'Ubuntu'">[FA]fa-border fa-link[/FA] <a href="http://php.net/manual/fr/book.session.php" target="_blank">http://php.net/manual/fr/book.session.php</a></span></p><p><span style="font-family: 'Ubuntu'"></span></p><p style="text-align: center"><span style="font-family: 'Ubuntu'">[ATTACH=full]105027[/ATTACH]</span></p> <p style="text-align: center"><span style="font-family: 'Ubuntu'">Parlons d'une faille très dangereuse qui se nomme LFI pour<em> Local File Inclusion</em>, son principe réside dans le fait de remonter la hiérarchie de vos dossiers afin d'atteindre le coeur même de la machine sur laquelle est hébergée votre site dans le but de récupérer des mots de passe et tout ceci par le biais d'un code permettant l'inclusion de fichier. </span></p> <p style="text-align: center"><span style="font-family: 'Ubuntu'"></span></p> <p style="text-align: center"><span style="font-family: 'Ubuntu'">Imaginons que je possède une machine, un VPS sur lequel j'héberge mon site personnel et un dossier dans lequel je met un fichier contenant des mots de passe. Sur ce site, j'ai souhaité optimiser mon code afin d'afficher des pages PHP très simplement.</span></p> <p style="text-align: center"><span style="font-family: 'Ubuntu'"></span></p> <p style="text-align: center"><span style="font-family: 'Ubuntu'">Ainsi j'ai un paramètre page qui va contenir le nom du fichier que je veux afficher, ainsi il me suffira de créer des liens de ce type : <a href="https://monsite.fr/index.php?page=contact.php" target="_blank">https://monsite.fr/index.php?page=contact.php</a></span></p> <p style="text-align: center"><span style="font-family: 'Ubuntu'"></span></p> <p style="text-align: center"><span style="font-family: 'Ubuntu'">[ATTACH=full]105021[/ATTACH]</span></p> <p style="text-align: center"><span style="font-family: 'Ubuntu'">Simple non ? <img src="data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7" class="smilie smilie--sprite smilie--sprite400" alt="::):" title="Smile ::):" loading="lazy" data-shortname="::):" /></span></p> <p style="text-align: center"><span style="font-family: 'Ubuntu'"></span></p> <p style="text-align: center"><span style="font-family: 'Ubuntu'">Peut-être simple mais faillible, en effet si je suis un utilisateur un peu curieux<span style="color: #ff0000"> je vais chercher à remonter jusqu'à certains dossiers sensibles</span> ce qui est dangereux pour vous.</span></p> <p style="text-align: center"><span style="font-family: 'Ubuntu'">[ATTACH=full]105020[/ATTACH]</span></p> <p style="text-align: center"><span style="font-family: 'Ubuntu'">Ainsi en remontant intelligemment il est facile d'accéder à des données sensibles, c'est du moins l'idée que j'essaye de vous inculquer car le mot de passe que j'ai montré est chiffré normalement.</span></p> <p style="text-align: center"><span style="font-family: 'Ubuntu'"></span></p> <p style="text-align: center"><span style="font-family: 'Ubuntu'">Parlons maintenant de la faille RFI, celle-ci a pour principe celui de la LFI simplement cette fois-ci la personne malveillante ne cherchera pas à rechercher un mot de passe (ce n'est pas son seul but) mais plutôt à exécuter du code malveillant grâce à un fichier PHP par exemple qui serait hébergé sur un site extérieur afin de détourner votre site. </span></p> <p style="text-align: center"><span style="font-family: 'Ubuntu'"></span></p> <p style="text-align: center"><span style="font-family: 'Ubuntu'">[ATTACH=full]105025[/ATTACH]</span></p> <p style="text-align: center"><span style="font-family: 'Ubuntu'">Pour combler ces deux failles, je recommande de faire un tableau des fichiers accessibles et de vérifier si la valeur du paramètre <em>page </em>vaut l'une des valeurs du tableau que vous avez crée précédemment. </span></p> <p style="text-align: center"><span style="font-family: 'Ubuntu'"></span></p><p><span style="font-family: 'Ubuntu'">[PHP]<?php</span></p><p><span style="font-family: 'Ubuntu'"> $pages = ['contact.php'];</span></p><p><span style="font-family: 'Ubuntu'"></span></p><p><span style="font-family: 'Ubuntu'"> if(in_array($_GET['page'], $pages) && isset($_GET['page']))</span></p><p><span style="font-family: 'Ubuntu'"> {</span></p><p><span style="font-family: 'Ubuntu'"> include($_GET['page']);</span></p><p><span style="font-family: 'Ubuntu'"> }</span></p><p><span style="font-family: 'Ubuntu'"> else</span></p><p><span style="font-family: 'Ubuntu'"> {</span></p><p><span style="font-family: 'Ubuntu'"> die('Erreur.');</span></p><p><span style="font-family: 'Ubuntu'"> }</span></p><p><span style="font-family: 'Ubuntu'">?></span></p><p><span style="font-family: 'Ubuntu'">[/PHP]</span></p><p style="text-align: center"><span style="font-family: 'Ubuntu'">[ATTACH=full]105029[/ATTACH]</span></p> <p style="text-align: center"><span style="font-family: 'Ubuntu'">[ATTACH=full]105028[/ATTACH]</span></p> <p style="text-align: center"><span style="font-family: 'Ubuntu'"><span style="color: #00b359">La faille est comblée [FA]fa-check-circle-o[/FA]</span></span></p> <p style="text-align: center"><span style="font-family: 'Ubuntu'"></span></p><p><span style="font-family: 'Ubuntu'">Bonne journée,</span></p><p><span style="font-family: 'Ubuntu'">[FA]fa-user[/FA] Rivals</span></p><p style="text-align: center"></p></blockquote><p></p>
[QUOTE="Rivals, post: 7057527, member: 694298"] [CENTER][FONT=Ubuntu][ATTACH=full]105013[/ATTACH] Salut à tous [FA]fa-smile-o[/FA], vous avez peut-être lu la première version de ce tutoriel ([URL='https://reality-gaming.fr/threads/comment-combler-les-failles-de-securite-web-les-plus-courantes.563243/']Comment combler les failles de sécurité web les plus courantes ?[/URL]) et bien sachez que vous lisez aujourd'hui la deuxième. :smile:[/FONT][/CENTER] [FONT=Ubuntu][/FONT] [CENTER][FONT=Ubuntu][ATTACH=full]105022[/ATTACH] Commençons si vous le voulez bien par une faille qui se situe au niveau des cookies de vos utilisateurs, il n'est pas rare de voir des informations stockées dans ceux-ci et c'est principalement leur but. Mais cela peut-être également une mauvaise pratique, comme je vais le démontrer dans le cas suivant. [ATTACH=full]104953[/ATTACH] Prenons l'exemple de ce site web, nous pouvons voir qu'il y a pas mal de cookies d'enregistrés mais si vous regardez bien le dernier est très intéressant puisqu'il se nomme [I]userInfos[/I]. [/FONT][/CENTER] [FONT=Ubuntu][FA]fa-border fa-gg[/FA] COOKIE [CODE]nom%22%3A%RG%22%2C%22prenom%22%3A%22Rivals%22%2C%22F45a1875142e511b4Z26S6d3c9e1c0daa.jpg%22%7D [/CODE] [/FONT] [CENTER][FONT=Ubuntu]Nous pouvons voir clairement que dans celui-ci y figure notre nom d'utilisateur, imaginons qu'un utilisateur malveillant souhaite passer de l'HTML [FA]fa-html5[/FA] dans celui-ci en modifiant le cookie. [/FONT][/CENTER] [FONT=Ubuntu][FA]fa-border fa-gg[/FA] COOKIE MODIFIE [CODE]nom%22%3A%RG%22%2C%22prenom%22%3A%22<marquee>Rivals</marquee>%22%2C%22F45a1875142e511b4Z26S6d3c9e1c0daa.jpg%22%7D [/CODE][/FONT] [CENTER][FONT=Ubuntu] [IMG]https://i.gyazo.com/f180d01dc641c153c673eb555b7daee5.gif[/IMG] Comme vous pouvez le voir, [COLOR='#ff0000']le code a été interprété [FA]fa-thumbs-o-down[/FA] ainsi l'HTML est fonctionnel[/COLOR]. Vous pourrez vous le douter si je présente ceci c'est que dans l'état actuel des choses ce n'est pas dangereux pour le site mais imaginons un système plus proche d'une authentification dans lequel vous auriez un cookie nommé [I]is_admin[/I] est que la valeur est à 0 vous auriez moins le sourire si l'un de vos utilisateurs modifie cette valeur par 1. [ATTACH=full]105026[/ATTACH] Pour combler cette faille vous pouvez utiliser la méthode permettant de combler la faille XSS ainsi vous pouvez utiliser la fonction PHP appelée [I][URL='http://php.net/manual/fr/function.htmlspecialchars.php']htmlspecialchars[/URL][/I] mais ceci dit je vous conseille très clairement de ne pas stocker des informations tel que l'identifiant de la personne, son pseudo ou autre donnée sensible. [U]Privilégiez plutôt la SESSION pour stocker l'identifiant du membre par exemple.[/U] [/FONT][/CENTER] [FONT=Ubuntu][FA]fa-border fa-gg[/FA] EXEMPLE AVEC LA SESSION [PHP]<?php // on démarre l'utilisation de la session session_start(); // on stock l'userId de la personne $_SESSION['userId'] = 1; echo $_SESSION['userId']; [/PHP] [FA]fa-border fa-link[/FA] [URL]http://php.net/manual/fr/book.session.php[/URL] [/FONT] [CENTER][FONT=Ubuntu][ATTACH=full]105027[/ATTACH] Parlons d'une faille très dangereuse qui se nomme LFI pour[I] Local File Inclusion[/I], son principe réside dans le fait de remonter la hiérarchie de vos dossiers afin d'atteindre le coeur même de la machine sur laquelle est hébergée votre site dans le but de récupérer des mots de passe et tout ceci par le biais d'un code permettant l'inclusion de fichier. Imaginons que je possède une machine, un VPS sur lequel j'héberge mon site personnel et un dossier dans lequel je met un fichier contenant des mots de passe. Sur ce site, j'ai souhaité optimiser mon code afin d'afficher des pages PHP très simplement. Ainsi j'ai un paramètre page qui va contenir le nom du fichier que je veux afficher, ainsi il me suffira de créer des liens de ce type : [URL]https://monsite.fr/index.php?page=contact.php[/URL] [ATTACH=full]105021[/ATTACH] Simple non ? ::): Peut-être simple mais faillible, en effet si je suis un utilisateur un peu curieux[COLOR='#ff0000'] je vais chercher à remonter jusqu'à certains dossiers sensibles[/COLOR] ce qui est dangereux pour vous. [ATTACH=full]105020[/ATTACH] Ainsi en remontant intelligemment il est facile d'accéder à des données sensibles, c'est du moins l'idée que j'essaye de vous inculquer car le mot de passe que j'ai montré est chiffré normalement. Parlons maintenant de la faille RFI, celle-ci a pour principe celui de la LFI simplement cette fois-ci la personne malveillante ne cherchera pas à rechercher un mot de passe (ce n'est pas son seul but) mais plutôt à exécuter du code malveillant grâce à un fichier PHP par exemple qui serait hébergé sur un site extérieur afin de détourner votre site. [ATTACH=full]105025[/ATTACH] Pour combler ces deux failles, je recommande de faire un tableau des fichiers accessibles et de vérifier si la valeur du paramètre [I]page [/I]vaut l'une des valeurs du tableau que vous avez crée précédemment. [/FONT][/CENTER] [FONT=Ubuntu][PHP]<?php $pages = ['contact.php']; if(in_array($_GET['page'], $pages) && isset($_GET['page'])) { include($_GET['page']); } else { die('Erreur.'); } ?> [/PHP][/FONT] [CENTER][FONT=Ubuntu][ATTACH=full]105029[/ATTACH] [ATTACH=full]105028[/ATTACH] [COLOR='#00b359']La faille est comblée [FA]fa-check-circle-o[/FA][/COLOR] [/FONT][/CENTER] [FONT=Ubuntu]Bonne journée, [FA]fa-user[/FA] Rivals[/FONT] [CENTER][/CENTER] [/QUOTE]
Insérer les citations…
Vérification
Publier la réponse
Forums
Forums généraux
Informatique
Comment combler les failles de sécurité web les plus courantes ? (2.0)
Ce site utilise des cookies. En continuant à utiliser ce site, vous acceptez l'utilisation des cookies.
Acceptez
En savoir plus.…
Haut