Tutoriel Comment combler les failles de sécurité web les plus courantes ? (2.0)

Rivals

Ancien staff
Inscription
27 Août 2016
Messages
1 705
Réactions
895
Points
13 104
header2.png

Salut à tous , vous avez peut-être lu la première version de ce tutoriel (Comment combler les failles de sécurité web les plus courantes ?) et bien sachez que vous lisez aujourd'hui la deuxième. :smile:

header-cookies.png

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.
Capture d’e*cran 2017-02-11 a* 11.24.10.png

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 userInfos.
COOKIE
Code:
nom%22%3A%RG%22%2C%22prenom%22%3A%22Rivals%22%2C%22F45a1875142e511b4Z26S6d3c9e1c0daa.jpg%22%7D

Nous pouvons voir clairement que dans celui-ci y figure notre nom d'utilisateur, imaginons qu'un utilisateur malveillant souhaite passer de l'HTML dans celui-ci en modifiant le cookie.
COOKIE MODIFIE
Code:
nom%22%3A%RG%22%2C%22prenom%22%3A%22<marquee>Rivals</marquee>%22%2C%22F45a1875142e511b4Z26S6d3c9e1c0daa.jpg%22%7D

f180d01dc641c153c673eb555b7daee5.gif


Comme vous pouvez le voir, le code a été interprété ainsi l'HTML est fonctionnel. 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é is_admin est que la valeur est à 0 vous auriez moins le sourire si l'un de vos utilisateurs modifie cette valeur par 1.

header-cookies-cmbler.png

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 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.

Privilégiez plutôt la SESSION pour stocker l'identifiant du membre par exemple.
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'];



headerlfirfi.png

Parlons d'une faille très dangereuse qui se nomme LFI pour Local File Inclusion, 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 :

Capture d’e*cran 2017-02-13 a* 18.08.41.png

Simple non ? ::):

Peut-être simple mais faillible, en effet si je suis un utilisateur un peu curieux je vais chercher à remonter jusqu'à certains dossiers sensibles ce qui est dangereux pour vous.
Capture d’e*cran 2017-02-13 a* 18.08.49.png

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.

header-lfi-rfi.png

Pour combler ces deux failles, je recommande de faire un tableau des fichiers accessibles et de vérifier si la valeur du paramètre page vaut l'une des valeurs du tableau que vous avez crée précédemment.
PHP:
<?php
    $pages = ['contact.php'];

    if(in_array($_GET['page'], $pages) && isset($_GET['page']))
    {
      include($_GET['page']);
    }
    else
    {
      die('Erreur.');
    }
?>
Capture d’e*cran 2017-02-13 a* 18.51.04.png

Capture d’e*cran 2017-02-13 a* 18.51.13.png

La faille est comblée
Bonne journée,
Rivals

 
Dernière édition:
D

deleted577633

C'est toujours cool d'en connaître un peu plus sur la sécurité web, j'espère qu'il y aura la version 3.0 :$
Avec le petit clin d'oeil à ceux qui veulent détruire Evil Corp :trollface:

Super topic Rivals, cependant les headers sont un peu volumineux et par rapport au texte ( notamment au début ) ça cache un peu le texte c'est dommage :D
 

Rivals

Ancien staff
Inscription
27 Août 2016
Messages
1 705
Réactions
895
Points
13 104
C'est toujours cool d'en connaître un peu plus sur la sécurité web, j'espère qu'il y aura la version 3.0 :$
Avec le petit clin d'oeil à ceux qui veulent détruire Evil Corp :trollface:

Super topic Rivals, cependant les headers sont un peu volumineux et par rapport au texte ( notamment au début ) ça cache un peu le texte c'est dommage :D
Merci pour ton commentaire, c'est peut-être dû à la quantité de texte plutôt faible au début ? Là par exemple : https://reality-gaming.fr/threads/c...urs-personnalises-sur-overwatch-1-8-0.590550/ c'est mieux ou pas du tout ? :p
 
D

deleted577633

Merci pour ton commentaire, c'est peut-être dû à la quantité de texte plutôt faible au début ? Là par exemple : https://reality-gaming.fr/threads/c...urs-personnalises-sur-overwatch-1-8-0.590550/ c'est mieux ou pas du tout ? :p
Ouaip c'est mieux car le contenu est plus important mais bon les headers sont trop gros, agrandi la largeur et baisse légèrement la hauteur et ça serais parfait ! ::):
 

WhiiTe'

Administateur
Ancien staff
Inscription
22 Octobre 2011
Messages
14 706
Réactions
8 492
Points
32 425
Il y a root-me.org qui propose pas mal d'articles sur l'exploitation et la correction de ces failles :oui:
 
Haut