Contribuez à SecuObs en envoyant des bitcoins ou des dogecoins.
Nouveaux articles (fr): 1pwnthhW21zdnQ5WucjmnF3pk9puT5fDF
Amélioration du site: 1hckU85orcGCm8A9hk67391LCy4ECGJca

Contribute to SecuObs by sending bitcoins or dogecoins.



[Sécurité et PHP - Partie 4] Remote PHP Vulnerabilty Scanner

Par Rédaction, secuobs.com
Le 10/05/2008


Résumé : Remote PHP Vulnerabily Scanner est un outil (parmi d'autres) qui permet de tester la sécurité d'un site web basé sur des scripts PHP. RPVS s’utilise via l'invite de commandes sous Windows.



RPVS ( lien ) est en fait un scanner de vulnérabilités PHP a distance de type multithread. Il détecte les failles PHP basiques qui sont les plus recensées sur le web :

- le XSS : Cross Site Scripting (injection de code HTML dans le navigateur de la victime),

- les Erreur SQL (19 erreurs différentes), afin de détecter les injections SQL qui sont réalisables,

- les vulnérabilités d'inclusion de fichier avec include() par exemple,

- les erreurs de la fonction fopen() ,afin de détecter les fonctions de ce type qui sont mal protégées.

- les erreurs de la fonction include() et les insécurités en résultant.


L'outil RPVS s'exécute en deux étapes distinctes.

Durant la première étape , il va aspirer les pages du site tout en restant dans le domaine et le répertoire de l'adresse passée en argument.

Il collecte de multiples informations sur les pages Web dynamiques dont les noms des variables associées aux pages et les valeurs données à chaque variable.

Les formulaires et variables associées à ces formulaires sont également récupérés, il arrive que cette première étape soit "sans fin" du fait d’une aspiration dite en boucle. Dans ce cas le bouton "Attack Now" permet d'arrêter la prise d'informations et de passer a l'étape suivante.

La seconde étape consiste quant à elle à tester les pages PHP ciblées sur les failles XSS, include(), fopen() et injections SQL avec une même et unique variable.

A ce niveau il existe trois mode de scan qui sont représentés par les options -bf ,-f , la troisième et dernière étant celle par défaut.

Le scan par défaut va reprendre l'ensemble des URL trouvées directement sur le site ou reconstruites via les formulaires.

Pour chaque URL, RPVS teste une a une chaque variable, par exemple "/123456/telechargement.php?outil=nmap.zip&rep=./" va générer deux URL : "/123456/telechargement.php?outil=www.google.fr/webhp%3f<balisexss>%22%27 &rep=./" et "/123456/telechargement.php?outil=nmap.zip&rep=www.google.fr/webhp%3f<balisexss>%22%27".

L’option -f pour "fast mode», va tester en une seule fois toutes les variables d'une page, un exemple avec '/123456/telechargement.php?outil=www.google.fr/webhp%3f<balisexss>%22%27 &rep=www.google.fr/webhp%3f<balisexss>%22%27&list=www.google.fr/webhp%3f<balisexss>%22%27 ". Ce mode est très rapide mais c'est aussi celui qui donne le moins de résultat.

L'option -bf permet quant à elle d’essayer toutes les combinaisons possibles d’entrées. Ce scan est très lent mais permet de découvrir des failles que les autres modes ne détectent pas. Il est préférable de l’utiliser en local et avec le mode verbose activé.

Exemple :

/123456/index.php3?search=www.google.fr/webhp%3f<balisexss>%22%27
/123456/index.php3?pages=www.google.fr/webhp%3f<balisexss>%22%27
/123456/index.php3?img=www.google.fr/webhp%3f<balisexss>%22%27&page=
/123456/index.php3?img=www.google.fr/webhp%3f<balisexss>%22%27&page=membres
/123456/index.php3?img=www.google.fr/webhp%3f<balisexss>%22%27&page=forum
/123456/index.php3?img=www.google.fr/webhp%3f<balisexss>%22%27&page=gall
.


L’option -v pour le mode verbose, affiche les adresses web des requêtes HTTP effectuées.

L’option -aff pour anti-forum filter, est tout simplement un filtre très utile qui permet d'éviter d'aspirer tous les post d'un forum ou d'un système de news.

Elle s'accompagne de l'option -sessid=PHPSESSID pour définir le nom de la variable équivalente à l'identifiant de session, cela permet de ne pas tomber dans une aspiration sans fin.

L’option -rapport permet de crée un rapport dans le fichier rapport.txt sous l'arborescence actuelle.

Lorsqu'on lance le programme, une fenêtre transparente apparaît avec les information suivantes :

- les indicateurs "nb:" représente le nombre de requêtes HTTP effectuées,

- "err fopen" le nombre d'erreurs sur fopen() détecté ,

- "vuln inc" le nombre de failles d'include ,

- "err inc" le nombre d'erreurs d'include,

- "vuln xss" le nombre de failles de Cross Site Scripting,

- "err SQL" le nombre d'erreur SQL,

- "url:" la dernière requête en train d'être traitée.


A noter que le bouton "Attack Now" passe en "Wait" dès la deuxième étape .


Autres ressources dans ce dossier :

[Sécurité et PHP - Partie 1] Les injections SQL – lien

[Sécurité et PHP - Partie 2] La gestion des sessions – lien

[Sécurité et PHP - Partie 3] Les failles PHP – lien

[Sécurité et PHP - Partie 5] Astuces – lien