dimanche 24 novembre 2019

DETECTION ET EXPLOITATION D'UNE FAILLE SQL (Porte du couvent 2)

ÉNONCÉ DE L’ÉPREUVE:

Porte du couvent 2

Point: 400 
Type: Web 
  
DETECTION
           La faille SQLi, abréviation de SQL Injection, soit injection SQL en français, est un groupe de méthodes d'exploitation de faille de sécurité d'une application interagissant avec une base de données. Elle permet d'injecter dans la requête SQL en cours un morceau de requête non prévu par le système et pouvant en compromettre la sécurité. (source: https://fr.wikipedia.org/wiki/Injection_SQL).
 

1-) Première méthode

           Pour détecter un site qui a une faille SQL, il suffit simplement d'envoyer des requêtes contenant des caractères spéciaux du SQL, comme « ' », « " », etc. En général, si le site est sensible à l'injection SQL, un message d'erreur va être affiché. Très souvent, ce message contient la requête qui a été exécutée, ce qui facilite le travail de l'attaquant en lui donnant des indices sur le schéma de la base.

 Essayons: Insérons un apostrophe dans le champ nom





Et voila ! Suite à la saisie d'une simple quote dans ce formulaire, la requête devient invalide et provoque l'affichage d'un message d'erreur:
 Warning: mysqli_fetch_array() expects parameter 1 to be mysqli_result, boolean given in /var/www/html/porte_couvent/index.php on line 64
code de confirmation=

 Ce site est donc vulnérable et nous apprenons que le serveur SQL est MySQL et l'url vulnerable est: http://qualif.hackerlab.bj/porte_couvent/index.php?nom=dd&submit=

          En toute honnêteté, les erreurs de programmation SQL de ce genre sont de plus en plus rares et les chances de détecter une faille SQL par cette technique est de plus en plus mince (le serveur où le script s'exécute peut être configuré pour ne pas afficher de message d'erreur (Mettre display_errors = Off dans php.ini par exemple) ou bien utiliser des try/catch (C#, Java, PHP5 ...) pour gérer les exceptions, les anomalies de fonctionnement et donner l'impression d'un fonctionnement normal de l'application.).
          

2-) Deuxième méthode:

          En réalité nous avions utiliser le scanner de vulnérabilité présent dans les frameworks d'exploitation. Un framework nous apporte une approche standardisée et structurée pour l’attaque des cibles. Il existe plusieurs frameworks pour le hacking des applications web, notamment w3af, Burp Suite, Zed Attack Proxy (ZAP) d’OWASP, Websecurify et Paros. Quelque soit l’outil retenu, hormis de subtiles différences (tout au moins du point de vue des bases), ils offrent tous une fonctionnalité comparable et constituent un excellent véhicule pour les attaques sur le Web. Nous avions choisis Zed Attack Proxy (ZAP) d’OWASP et le résultat du scan de vulnérabilité nous indique la présence d'une vulnérabilité d'injection SQL.
  


Nous apprenons  ici les choses suivantes en plus: 
Méthode vulnérable: GET
Paramètre vulnérable: nom
Technique d'attaque:  Boolean-based blind

 II- EXPLOITATION DE LA FAILLE SQLi

             Les informations obtenir dans la première méthode de détection sont largement suffisante pour notre exploitation.

Invoquons sqlmap avec la commande suivante: 

 sqlmap -u 'http://qualif.hackerlab.bj/porte_couvent/index.php?nom=dd&submit=' --dbs


  -u permet de spécifier l'url cible et --dbs permet de lister toutes les bases de données disponibles.

 Nous avons comme resultats:
 





 Maintenant essayons de recupéré les données de la base de donnée "qualif" avec cette commande:

sqlmap -u 'http://qualif.hackerlab.bj/porte_couvent/index.php?nom=dd&submit=' -D qualif --dump

  -D permet d'entré dans la base de donnée "qualif" et --dump recupère les données.
 
  Nous avons comme resultats:





 Et voila enfin notre CTF:  CTF_SQL_DANGEROUS_INJECTOR_


         Mais le manque d’ordre et de structure déclenche souvent de frustration et d'échec. C'est pourquoi nous conseillons de se servir des résultats de la deuxième méthode comme point de départ de l'exploitation. Autrement dit, la sortie du scan sera utilisée pour façonner, focaliser et diriger votre attaque. Une explication détailler des fonctionnalités de l'outil sqlmap est disponible ici. 
         Avec cette méthode vous gagner beaucoup de temps et vous êtes plus sur de ce que vous faite.
   




sqlmap est un outil très puissant et hautement personnalisable, je le recommande vivement si vous ne l'utilisez pas déjà.

2 commentaires: