Aide-mémoire sqlmap
Carte SQL est un outil gratuit qui vérifie vulnérabilités de la base de données . Si vous exploitez un site Web, vous êtes vulnérable à une série d’attaques de pirates informatiques basées sur SQL qui peuvent compromettre la base de données qui se trouve derrière de nombreuses fonctions du site. Si des pirates informatiques parviennent à s'introduire dans votre réseau et à infecter un point final, ils peuvent également utiliser des techniques d'injection SQL pour compromettre les bases de données qui prennent en charge fonctions de back-office .
Votre base de données est au cœur de votre système d'information d'entreprise. Il pilote le partage de données dans les systèmes ERP et les magasins données sensibles , tels que les dossiers clients et les informations sur le chiffre d'affaires. Pour bien comprendre la vulnérabilité potentielle dans ce domaine, vous devez savoir ce qu’est une attaque par injection SQL.
Attaques par injection SQL
SQL est le Langage de requêtes structurées . C'est le langage que les programmes utilisent pour accéder aux données dans un base de données relationnelle . Le langage comprend également des commandes pour mettre à jour ou supprimer les données contenues dans les tables de la base de données.
Pour les utilisateurs finaux, l'accès à une base de données se fait via un formulaire, qui se trouvera soit dans une page Web, soit dans le frontal d'un logiciel d'entreprise. Le champ dans lequel vous saisissez une requête dans une page Google en est un exemple. Le code Derrière l'écran prend l'entrée que les utilisateurs saisissent dans le champ et l'enveloppe dans une requête SQL. Celui-ci est ensuite soumis à la base de données pour extraire les enregistrements correspondants.
Les pirates ont découvert des moyens de placer une instruction SQL complète ou une clause d'instruction dans un champ de saisie. Cela peut tromper les mécanismes de traitement des requêtes intégrés au formulaire et transmettre un message entier. Instruction SQL sur la base de données plutôt que de soumettre l'entrée en tant que valeur de requête.
Cette triche s'appelle ' Injection SQL ' et il peut donner aux pirates un accès complet à votre base de données, en contournant les contrôles intégrés au codage de l'application ou de la page Web contenant le champ de saisie.
Les attaques par injection SQL peuvent permettre aux pirates informatiques de voler l'intégralité de la base de données ou de mettre à jour les valeurs. La possibilité de modifier les données d'une base de données permet aux pirates de Voler de l'argent . Imaginez si un client pouvait modifier le solde d'un compte d'une somme négative à un montant positif. Dans les systèmes automatisés, cela déclencherait un paiement et les pirates pourraient s’enfuir avec cet argent avant que quiconque dans l’entreprise ne se rende compte de l’erreur.
Voir également: Meilleurs outils de surveillance SQL Server
Classification des attaques par injection SQL
Le Projet de sécurité des applications Web ouvertes (OWASP) crée une liste des 10 principales vulnérabilités du système, considérée comme la liste définitive des faiblesses à rechercher. Les scanners de vulnérabilité promettent de vérifier les Top 10 de l'OWASP . L'injection SQL est la principale menace répertoriée par l'OWASP. L'organisation divise cette catégorie en quatre types.
- Injection SQL classique
- Injection SQL aveugle ou par inférence
- Injection SQL spécifique au SGBD
- Injection SQL composée
Ces catégories sont ventilées davantage par secteur d'activité. Une attaque par injection SQL classique est également connue sous le nom d'attaque Attaque intra-bande . Cette catégorie comprend deux méthodes possibles : SQLI basé sur les erreurs et SQLI basé sur l'Union.
Les attaques composées par injection SQL ajoutent un autre type d’attaque de pirate informatique à l’activité d’injection SQL. Ceux-ci sont:
- Attaques d'authentification
- Attaques DDoS
- Détournement DNS
- Scripts intersites (XSS)
Par souci de brièveté dans ce guide – qui se concentre sur carte SQL – la définition de ces stratégies d’attaque ne sera pas abordée ici.
Vérification des vulnérabilités d'injection SQL
Sqlmap vous permet d'essayer les types d'attaques que les pirates mettent en œuvre sur les bases de données. Cela vous permet de voir si vos systèmes sont ou non protégé contre les attaques .
Les pirates inventent constamment de nouvelles stratégies d’attaque. Cependant, la manière dont fonctionnent les bases de données relationnelles et SQL signifie qu’il n’existe qu’un nombre limité de types d’attaques susceptibles de fonctionner. En d’autres termes, de nouvelles attaques sont toujours variations sur un thème . Si vous disposez d’un outil capable d’assurer une protection contre les catégories génériques d’attaques, vous pouvez être sûr d’avoir découvert toutes les vulnérabilités possibles.
Une vérification sqlmap tente une attaque dans chacune d’un certain nombre de catégories – il y en a six au total. Si l'une de ces attaques réussit , vous savez que vous avez un problème sérieux et qu'une partie de l'interface qui fait face à votre base de données doit être réécrite pour bloquer cette attaque.
Les types d'attaques tentées par sqlmap sont :
- Injection SQL aveugle basée sur des booléens
- Injection SQL aveugle basée sur le temps
- Injection SQL basée sur les erreurs
- Injection SQL basée sur l'Union
- Requêtes empilées
- Attaques hors bande
Les définitions utilisées par les développeurs sqlmap ne correspondent pas exactement aux catégories utilisées par OWASP. La liste comprend les deux types de Injection SQL classique et les deux types de Injection SQL aveugle .
La stratégie d'attaque par requêtes empilées effectuée par sqlmap doit couvrir les termes OWASP Attaques spécifiques aux SGBD . La catégorie d’attaques combinées de l’OWASP n’est pas pertinente pour le système de détection sqlmap axé sur l’injection SQL.
Logiquement, si vous pouvez vous assurer que votre système n’est pas vulnérable à une attaque par injection SQL, il ne sera automatiquement pas vulnérable à une attaque combinée. Cependant, vous devez utiliser d'autres outils de test d'intrusion pour vérifier si votre site est vulnérable aux attaques DDoS, XSS ou au détournement DNS. Tous les systèmes sont en permanence exposés aux attaques d'authentification. Vous devez garantir une stratégie sécurisée de gestion des identités et des accès afin de protéger votre entreprise contre la menace de craquage d'authentification .
Les vérifications du système sqlmap fonctionnent avec les SGBD suivants :
MySQL | Microsoft SQL Server | Microsoft Access | MariaDB |
Oracle | PostgreSQL | IBM DB2 | SQLite |
Oiseau de feu | Sybase | Base de données SAP Max | Informix |
MemSQL | TiDB | CafardDB | HSQLDB |
H2 | MonetDB | Apache Derby | Apache Enflammer |
Amazon Redshift | Verticale | Mccoy | Bientôt |
base haute | MimerSQL | CaisseDB | Prune Verte |
Bruine | Cubride | Cache intersystèmes | IRIS |
extrêmeDB | Base avant | YugaoctetDB | Virtuose |
Gestionnaire de base de données Raima |
Configuration système requise pour sqlmap
Vous pouvez installer sqlmap sur les fenêtres , macOS , et Linux .
Le système sqlmap est écrit en Python, vous devez donc l'installer Python2.6 ou version ultérieure sur votre ordinateur afin d'exécuter sqlmap. La version actuelle en juillet 2021 est la 3.9.
Pour savoir si Python est installé, sous Windows, ouvrez une invite de commande et entrez python –version . Si vous n'avez pas Python, vous verrez un message vous invitant à retaper python sans paramètres. Taper python et cela ouvrira le Microsoft Store avec le package Python configuré pour le téléchargement. Clique sur le Obtenir et suivez les instructions d'installation.
Si vous avez un type macOS python –version . Si vous recevez un message d'erreur, entrez les commandes suivantes :
|_+_|Dans ces lignes, le $ représente l’invite du système – ne la saisissez pas.
Si vous disposez de Linux, Python sera déjà installé.
Installer SQLmap
Pour installer sqlmap :
- Accédez au site Web du projet sqlmap à l'adresse sqlmap.org .
- Si vous avez Windows, cliquez sur le Télécharger .zip bouton fichier. Si vous disposez de macOS ou Linux, cliquez sur le bouton Télécharger .tar.gz bouton fichier.
- Décompressez le fichier compressé.
Votre système nommera automatiquement le répertoire de la même manière que le fichier compressé. Cependant, il s'agit d'un nom très long, alors choisissez que le nouveau répertoire s'appelle simplement sqlmap. Peu importe où sur votre ordinateur vous créez ce répertoire.
Exécution de sqlmap
Le système sqlmap est un utilitaire de ligne de commande. Il n’y a pas d’interface graphique pour cela. Alors, accédez à la ligne de commande sur votre ordinateur pour utiliser sqlmap. Accédez au répertoire sqlmap que vous avez créé pour exécuter l'utilitaire. Vous n’avez pas besoin de compiler de programme.
Le programme que vous exécutez pour utiliser sqlmap s'appelle sqlmap.py. Il ne fonctionnera que si vous ajoutez une option à la fin du nom du programme.
Les options de sqlmap sont :
-uURL | L'URL cible Format:-dans 'http://www.target.com/path/file.htm?variable=1' |
-d DIRECT | Chaîne de connexion pour une connexion directe à la base de données Format:-d SGBD://DATABASE_FILEPATHou -d SGBD://USER:PASSWORD@DBMS_IP:DBMS_PORT/DATABASE_NAME |
-l FICHIER LOG | Analyser les cibles à partir du fichier journal du proxy Burp ou WebScarab |
-m FICHIER EN VRAC | Scanner plusieurs cibles données dans un fichier texte Format:Le fichier doit contenir une URL par ligne |
-r FICHIER DEMANDE | Charger une requête HTTP à partir d'un fichier Format:Le fichier peut contenir une transaction HTTP ou HTTPS |
-g GOOGLEDORK | Traiter les résultats Google Dork en tant qu'URL cibles |
-c FICHIER DE CONFIGURATION | Charger les options à partir d'un fichier INI de configuration |
--magicien | Un service d’exécution guidée |
--mise à jour | Mettre à jour sqlmap vers la dernière version |
--purge | Effacez le dossier de données sqlmap |
--purge-sortie | Comme ci-dessus |
--dépendances | Rechercher les dépendances sqlmap manquantes |
-h | Aide de base |
-hh | Aide avancée |
-- version | Afficher le numéro de version |
Vous ne pouvez pas exécuter sqlmap sans l'une de ces options. Il y a beaucoup d'autres options et il est souvent nécessaire d'enchaîner plusieurs options en séquence sur une ligne de commande.
Une attaque complète nécessite tellement d'options et d'entrées qu'il est plus facile de mettre toutes ces options dans un fichier, puis d'appeler le fichier au lieu de toutes les saisir. Dans ce scénario, c'est une convention de stocker toutes les options dans un fichier texte avec l'extension .INI. Vous incluriez cette liste d'options dans la ligne de commande avec l'option -c suivie du nom du fichier. Cette méthode évite de répéter la saisie de toute la commande longue encore et encore pour tenir compte des fautes d'orthographe ou des erreurs de format.
Plus d'options sqlmap
Il existe de nombreux autres commutateurs que vous pouvez ajouter à un carte SQL commande. Les paramètres d'option basés sur des caractères doivent être placés entre guillemets (« »), les paramètres numériques ne doivent pas être mis entre guillemets.
Par souci de concision dans ce guide, nous avons présenté l’ensemble de ces éléments dans un fichier PDF :
Cliquez sur l'image ci-dessus pour ouvrir l'intégralité Aide-mémoire sqlmap JPG dans une nouvelle fenêtre, ou cliquez ici pour télécharger l'aide-mémoire sqlmapPDF .
Exécution d'une analyse d'attaque par injection SQL avec sqlmap
Le grand nombre d’options disponibles pour sqlmap est intimidant. Il y a trop d’options à parcourir pour déterminer comment former une attaque par injection SQL. La meilleure façon d'acquérir les connaissances nécessaires pour réaliser les différents types d'attaques est de apprendre par l'exemple .
Pour découvrir comment se déroule un système de test sqlmap, essayez le test suivant, en remplaçant le marqueur par l'URL de votre site.
Cette commande déclenchera une exécution de toutes les procédures sqlmap, vous offrant des options sur le test au fur et à mesure de son déroulement.
Le système affichera l'heure de début de l'épreuve. Chaque ligne de rapport inclut l'heure à laquelle chaque test s'est terminé.
Le service sqlmap va tester la connexion au serveur Web, puis analysez divers aspects du site. Ces attributs incluent le jeu de caractères par défaut du site, une vérification de la présence de systèmes de défense , comme un pare-feu d'application Web ou des systèmes de détection d'intrusion.
La phase suivante du test identifie le SGBD utilisé pour le site. Il tentera une série d'attaques pour sonder la vulnérabilité de la base de données du site. Ceux-ci sont:
- Une attaque d'entrée GET – cela identifie la susceptibilité aux attaques Classic SQLI et XSS
- Attaques spécifiques aux SGBD
- SQLI aveugle basé sur des booléens
- Le système demandera un niveau et une valeur de risque. Si ceux-ci sont suffisamment élevés, il exécutera un SQLI aveugle basé sur le temps.
- Une attaque SQLI basée sur des erreurs
- Un SQLI basé sur UNION si les valeurs de niveau et de risque sont suffisamment élevées
- Requêtes empilées
En réponse à l'option de bannière utilisée dans cette exécution, sqlmap termine son exécution en récupérant la bannière de la base de données . Enfin, toutes les données extraites avec des explications sur leur signification sont écrites dans un fichier journal .
Comme vous pouvez le voir, sans beaucoup d'options données sur la commande, le système sqlmap exécutera une série standard d'attaques et vérifiera auprès de l'utilisateur les décisions concernant la profondeur du test au fur et à mesure de la progression du test.
Un petit changement dans la commande exécutera la même batterie de tests mais en utilisant un POSTE comme méthode de test au lieu d'un OBTENIR .
Essayez la commande suivante :
|_+_|Craquage de mot de passe avec sqlmap
Une modification d'un seul mot dans la première commande utilisée pour la section précédente vous donnera une série de tests pour voir si le système de gestion des informations d'identification de votre base de données présente des faiblesses.
Entrez la commande suivante :
|_+_|Encore une fois, vous devez remplacer l'URL de votre site par le
Lorsque vous exécutez cette commande, sqlmap lancera une série de tests et vous proposera un certain nombre d'options en cours de route.
L'exécution de sqlmap tentera un SQLI aveugle basé sur le temps, puis une attaque aveugle basée sur UNION. Il vous donnera ensuite la possibilité de stocker les hachages de mots de passe dans un fichier pour analyse avec un autre outil, puis donnera la possibilité de lancer une attaque basée sur un dictionnaire.
Les services essaieront une série de noms de comptes d'utilisateurs bien connus et parcourront une liste de mots de passe souvent utilisés pour chaque nom d'utilisateur candidat. C’est ce qu’on appelle un « bombe à fragmentation ' attaque. La suite de fichiers de sqlmap inclut un fichier de charges utiles pour cette attaque, mais vous pouvez fournir votre propre fichier à la place.
Chaque fois que sqlmap atteint une combinaison de nom d'utilisateur et de mot de passe, il l'affiche. Toutes les actions de l'exécution sont ensuite écrites dans un fichier journal avant que le programme ne termine son exécution.
Obtenez une liste des bases de données sur votre système et de leurs tables
L'information, c'est le pouvoir et les pirates doivent d'abord savoir quelles instances de base de données vous avez sur votre système afin de les pirater. Vous pouvez savoir si ces informations de base sont facilement accessibles par les intrus avec la commande suivante :
|_+_|Ce test inclura des attaques par injection SQL basées sur le temps, les erreurs et les UNION. Il identifiera ensuite la marque du SGBD puis listera les noms des bases de données. Les informations dérivées lors de l'exécution du test sont ensuite écrites dans un fichier journal à la fin du programme.
Enquêtez un peu plus loin et obtenez une liste des tables de l'une de ces bases de données avec la commande suivante.
|_+_|Entrez le nom de l'une des instances de base de données que vous avez obtenues dans la liste lors de la première requête de cette section.
Ce lot de tests comprend des attaques par injection SQL basées sur le temps, les erreurs et les UNION. Il répertoriera ensuite les noms des tables qui se trouvent dans l'instance de base de données spécifiée. Ces données sont écrites dans un fichier journal à la fin du programme.
Obtenir les contenus d'une de ces tables avec la commande suivante :
|_+_|Remplacez le nom de l'une des tables que vous avez découvertes par le