💉Injection SQL
Qu'est-ce qu'une injection SQL?
Une injection SQL est une faille de sécurité qui permet aux attaquants d'interférer avec les requêtes de base de données d'une application. Cette vulnérabilité peut permettre aux attaquants de visualiser, modifier ou supprimer des données auxquelles ils ne devraient pas accéder, y compris les informations d'autres utilisateurs ou toutes les données auxquelles l'application peut accéder. De telles actions peuvent entraîner des modifications permanentes de la fonctionnalité ou du contenu de l'application, voire compromettre le serveur ou provoquer un déni de service.
L'injection SQL consiste à prendre le contrôle d'une requête SQL à travers un paramètre de l'application dont la valeur est concaténée ladite requête SQL.
Plusieurs types d'injections SQL existent :
UNION based : L'injection UNION permet à l'attaquant de combiner les résultats d'une requête SQL légitime avec des résultats issus de requêtes malveillantes. En utilisant l'opérateur
'UNION', l'attaquant peut récupérer des données de tables différentes de la base de données.
ERROR based : L'injection basée sur les erreurs exploite les messages d'erreur retournés par le serveur de base de données pour obtenir des informations sensibles. Les erreurs fournissent des détails précieux sur la structure de la base de données, facilitant ainsi les injections plus ciblées.
Boolean blind based : L'injection boolean blind based ne retourne pas de données directement, mais elle permet de déduire des informations basées sur des réponses vraies ou fausses. L'attaquant envoie des requêtes qui changent le comportement de la page web en fonction de la véracité des conditions injectées.
Time based : L'injection basée sur le temps utilise des fonctions de temporisation pour déterminer des réponses. L'attaquant envoie des requêtes qui introduisent des délais (comme
SLEEP()en MySQL) et mesure le temps de réponse pour inférer des informations.
Out of Band : L'injection Out of Band utilise des canaux de communication alternatifs pour exfiltrer des données, tels que des requêtes DNS ou HTTP. Ce type d'injection est utile lorsque la réponse directe de l'application web est limitée ou non disponible.
Méthodologie :
Identification du point d'entrée / d'injection
Identification d'un moyen de commenter le reste de la requête
Identification du type d'injection SQL
Récupération du nom des bases de données
Récupération du nom des tables de chaque base
Récupération du nom des colonnes de chaque table.
Récupération des informations dans chaque table.
Outils d'injection SQL automatisé :
🩸SQLMapMis à jour