Outils pour utilisateurs

Outils du site


web:faille_comparaison_php

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

web:faille_comparaison_php [2016/03/14 11:01]
arkinar créée
web:faille_comparaison_php [2016/07/04 08:38]
Ligne 1: Ligne 1:
-**PHP : Faille de comparaisons ** 
- 
-**1.Présentation** 
- 
-Php est un langage qui utilise le typage ( int pour un entier , string pour une chaine de caractère ...). 
- 
-Quand il compare deux variables il peut le faire de plusieurs manières différentes : 
- 
-La comparaison large ( == ) :  
- 
-- Il compare la valeur en utilisant le transtypage : convertit une des deux valeurs (ce qui donne de nombreux faux positif) 
- 
-La comparaison stricte ( === ) : 
- 
-- Il compare le type et la valeur ​ 
- 
-Les fonctions php : 
- 
-- Elles ont été développés pour comparer les variables. ex :strcmp 
- 
-Exemple de code vulnérable : 
-<​code>​ 
-<?php 
-if($_POST['​login'​]== "​admin"​ && $_POST['​password'​] == "​Super_p@ssword_3v3r!"​)){ 
- echo "​Accès ok"; 
- }  
-?> 
-</​code>​ 
- 
-Ou encore : 
- 
-<​code>​ 
-<?php 
-if(!strcmp($_POST['​login'​],​ "​admin"​) && !strcmp($_POST['​password'​],​ "​Super_p@ssword_3v3r!"​)){ 
- echo "​Accès ok"; 
- } 
-?> 
-</​code>​ 
- 
-**2.Exploitation** 
- 
-Le but est d'​exploiter les faux positif pour bypasser une authentification. 
- 
-__2.1 Méthode 1 : Comparaison large ( == )__ 
- 
-Pour bypasser la comparaison large il faut regarder le tableau des comparaisons (cf source). 
- 
-Une des lignes indiques que "​php"​ == 0 => renvoie true. 
- 
-Nous allons envoyer en donnée dans le formulaire :  
- 
-<​code>​login=0&​password=0</​code>​ 
- 
-Le php va l'​interpreter de la manière suivante : 
- 
-<​code>​if (0==0 && 0==0)</​code>​ 
- 
-Ce qui est toujours vrai. 
- 
-__2.2 Méthode 2 : fonction Strcmp__ 
- 
-Pour bypasser la fonction strcmp il faut utiliser un tableau. 
- 
-Nous allons envoyer en donnée dans le formulaire :  
- 
-<​code>​login[]=abc&​password[]=abc</​code>​ 
- 
-Le php va générer une erreur mais il va renvoyer true. 
- 
- 
-**3.Comment se protéger** 
- 
-Pour se protéger il faut utiliser des comparaisons stricte ( === ). 
- 
-Il faut aussi toujours filtrer les valeurs envoyer par l'​utilisateur avant de les utiliser. 
- 
-Source : 
- 
-[[http://​php.net/​manual/​fr/​types.comparisons.php]] 
- 
-[[http://​danuxx.blogspot.fr/​2013/​03/​unauthorized-access-bypassing-php-strcmp.html]] 
- 
  
web/faille_comparaison_php.txt · Dernière modification: 2016/07/04 08:38 (modification externe)