Spécifier les techniques d'injection dans sqlmap

MySQLBeginner
Pratiquer maintenant

Introduction

L'injection SQL est une vulnérabilité de sécurité web qui permet à un attaquant d'interférer avec les requêtes qu'une application effectue à sa base de données. Elle permet généralement à un attaquant de visualiser des données qu'il ne peut normalement pas récupérer. Cela peut inclure des données appartenant à d'autres utilisateurs, ou toute autre donnée à laquelle l'application elle-même peut accéder. Dans de nombreux cas, un attaquant peut modifier ou supprimer ces données, entraînant des changements persistants dans le contenu ou le comportement de l'application.

sqlmap est un outil de test d'intrusion open-source qui automatise le processus de détection et d'exploitation des failles d'injection SQL et de prise de contrôle des serveurs de bases de données. Il est doté d'un puissant moteur de détection, de nombreuses fonctionnalités spécifiques pour le testeur d'intrusion ultime, et d'une large gamme d'options allant de l'empreinte digitale de la base de données à la récupération de données depuis la base de données, en passant par l'accès au système de fichiers sous-jacent et l'exécution de commandes sur le système d'exploitation via des connexions hors bande.

Dans ce laboratoire, vous apprendrez comment spécifier différentes techniques d'injection SQL dans sqlmap en utilisant l'option --technique. Cela vous permet de contrôler les méthodes que sqlmap tente d'utiliser pour l'injection, ce qui peut être utile pour cibler des vulnérabilités spécifiques ou optimiser les temps de scan.

Comprendre les six codes de techniques SQLi (B, E, U, S, T, Q)

Dans cette étape, vous apprendrez les différents codes de techniques d'injection SQL utilisés par sqlmap. sqlmap prend en charge diverses techniques d'injection SQL, et vous pouvez spécifier celles à utiliser avec l'option --technique. Chaque technique est représentée par un seul caractère.

Les six codes de techniques d'injection SQL principaux sont :

  • B : Injection SQL aveugle basée sur les booléens (Boolean-based blind SQL injection). Cette technique consiste à envoyer des requêtes SQL qui renvoient un résultat VRAI ou FAUX, puis à observer la réponse de l'application (par exemple, des changements dans le contenu de la page) pour déduire des informations.
  • E : Injection SQL basée sur les erreurs (Error-based SQL injection). Cette technique force la base de données à générer un message d'erreur contenant des informations sur la structure ou les données de la base de données.
  • U : Injection SQL basée sur les requêtes UNION (UNION query-based SQL injection). Cette technique utilise l'opérateur SQL UNION pour combiner les résultats de deux ou plusieurs instructions SELECT en un seul jeu de résultats, permettant à un attaquant de récupérer des données d'autres tables.
  • S : Injection SQL par requêtes empilées (Stacked queries SQL injection). Cette technique permet à un attaquant d'exécuter plusieurs instructions SQL dans une seule requête, souvent utilisée pour exécuter des commandes arbitraires sur le serveur de base de données.
  • T : Injection SQL aveugle basée sur le temps (Time-based blind SQL injection). Cette technique consiste à faire en sorte que la base de données attende un délai spécifié en fonction d'une condition VRAI ou FAUX, permettant à un attaquant de déduire des informations en observant les temps de réponse.
  • Q : Injection SQL par requêtes en ligne (Inline queries SQL injection). Cette technique implique l'injection de sous-requêtes directement dans la requête d'origine.

Comprendre ces techniques est crucial pour utiliser efficacement sqlmap et pour appréhender les principes sous-jacents de l'injection SQL.

Forcer un test aveugle basé sur les booléens avec --technique=B

Dans cette étape, vous apprendrez comment forcer sqlmap à n'utiliser que la technique d'injection SQL aveugle basée sur les booléens. Cela peut être utile lorsque vous suspectez qu'une cible est vulnérable à ce type spécifique d'injection, ou lorsque vous souhaitez réduire le temps de scan en vous concentrant sur une seule technique.

L'option --technique=B indique à sqlmap d'utiliser exclusivement l'injection aveugle basée sur les booléens.

Simulons l'exécution de sqlmap avec cette option. Dans un scénario réel, vous remplaceriez http://testphp.vulnweb.com/artists.php?id=1 par l'URL de votre cible. Pour ce laboratoire, nous allons simplement démontrer la commande.

Ouvrez votre terminal et exécutez la commande suivante :

sqlmap -u "http://testphp.vulnweb.com/artists.php?id=1" --technique=B --batch --eta --skip-waf
  • -u "http://testphp.vulnweb.com/artists.php?id=1" : Spécifie l'URL cible. Il s'agit d'un site de test connu pour être vulnérable.
  • --technique=B : Force sqlmap à n'utiliser que l'injection aveugle basée sur les booléens.
  • --batch : Exécute sqlmap en mode non interactif, en acceptant les choix par défaut.
  • --eta : Affiche le temps d'arrivée estimé pour chaque sortie.
  • --skip-waf : Ignore la détection du pare-feu d'applications web (WAF).

Vous observerez la sortie de sqlmap, qui indiquera qu'il teste principalement les vulnérabilités d'injection aveugle basée sur les booléens. La sortie montrera sqlmap essayant différents payloads et analysant les réponses.

        _
       ___ ___ ___ ___
      |_ -| . | . | . |
      |___|_  |_  |_  |
        |_|   |_|   |_|   3.7-dev (r12345)

[!] legal disclaimer: Usage of sqlmap for attacking targets without prior mutual consent is illegal. It is the end user's responsibility to obey all applicable local, state and federal laws. sqlmap developers assume no liability and are not responsible for any misuse or damage caused by this program.

[*] starting @ 12:00:00 /2023-01-01/

[12:00:00] [INFO] starting sqlmap 3.7-dev (r12345)
[12:00:00] [INFO] testing connection to the target URL
[12:00:01] [INFO] checking if the target is stable
[12:00:01] [INFO] target URL is stable
[12:00:01] [INFO] testing for SQL injection on URL 'http://testphp.vulnweb.com/artists.php?id=1'
[12:00:01] [INFO] testing 'Boolean-based blind - Parameter: id'
...

La sortie confirme que sqlmap se concentre sur la technique d'injection aveugle basée sur les booléens.

Forcer un test aveugle basé sur le temps avec --technique=T

Dans cette étape, vous apprendrez comment forcer sqlmap à n'utiliser que la technique d'injection SQL aveugle basée sur le temps. Cette technique est souvent utilisée lorsque d'autres méthodes, comme celles basées sur les erreurs ou les booléens, ne donnent pas de résultats, en particulier dans les scénarios où la réponse de l'application est cohérente quelle que soit l'injection.

L'option --technique=T indique à sqlmap d'utiliser exclusivement l'injection aveugle basée sur le temps.

Ouvrez votre terminal et exécutez la commande suivante :

sqlmap -u "http://testphp.vulnweb.com/artists.php?id=1" --technique=T --batch --eta --skip-waf
  • -u "http://testphp.vulnweb.com/artists.php?id=1" : Spécifie l'URL cible.
  • --technique=T : Force sqlmap à n'utiliser que l'injection aveugle basée sur le temps.
  • --batch : Exécute sqlmap en mode non interactif.
  • --eta : Affiche le temps d'arrivée estimé.
  • --skip-waf : Ignore la détection du WAF.

Vous observerez la sortie de sqlmap, qui montrera l'injection de payloads provoquant des délais dans la réponse du serveur. Cette méthode peut être plus lente que d'autres en raison de la nécessité d'attendre les délais temporels.

        _
       ___ ___ ___ ___
      |_ -| . | . | . |
      |___|_  |_  |_  |
        |_|   |_|   |_|   3.7-dev (r12345)

[!] legal disclaimer: Usage of sqlmap for attacking targets without prior mutual consent is illegal. It is the end user's responsibility to obey all applicable local, state and federal laws. sqlmap developers assume no liability and are not responsible for any misuse or damage caused by this program.

[*] starting @ 12:00:00 /2023-01-01/

[12:00:00] [INFO] starting sqlmap 3.7-dev (r12345)
[12:00:00] [INFO] testing connection to the target URL
[12:00:01] [INFO] checking if the target is stable
[12:00:01] [INFO] target URL is stable
[12:00:01] [INFO] testing for SQL injection on URL 'http://testphp.vulnweb.com/artists.php?id=1'
[12:00:01] [INFO] testing 'Time-based blind - Parameter: id'
...

La sortie confirme que sqlmap se concentre désormais sur la technique d'injection aveugle basée sur le temps.

Forcer un test basé sur les requêtes UNION avec --technique=U

Dans cette étape, vous apprendrez comment forcer sqlmap à n'utiliser que la technique d'injection SQL basée sur les requêtes UNION. Cette technique est très efficace lorsque l'application affiche directement les résultats de la requête SQL sur la page, car elle permet à un attaquant de récupérer des données d'autres tables de la base de données.

L'option --technique=U indique à sqlmap d'utiliser exclusivement l'injection basée sur les requêtes UNION.

Ouvrez votre terminal et exécutez la commande suivante :

sqlmap -u "http://testphp.vulnweb.com/artists.php?id=1" --technique=U --batch --eta --skip-waf
  • -u "http://testphp.vulnweb.com/artists.php?id=1" : Spécifie l'URL cible.
  • --technique=U : Force sqlmap à n'utiliser que l'injection basée sur les requêtes UNION.
  • --batch : Exécute sqlmap en mode non interactif.
  • --eta : Affiche le temps d'arrivée estimé.
  • --skip-waf : Ignore la détection du WAF.

Vous observerez la sortie de sqlmap, qui montrera ses tentatives d'injection d'instructions UNION SELECT. En cas de succès, cette technique peut rapidement révéler la structure et les données de la base de données.

        _
       ___ ___ ___ ___
      |_ -| . | . | . |
      |___|_  |_  |_  |
        |_|   |_|   |_|   3.7-dev (r12345)

[!] legal disclaimer: Usage of sqlmap for attacking targets without prior mutual consent is illegal. It is the end user's responsibility to obey all applicable local, state and federal laws. sqlmap developers assume no liability and are not responsible for any misuse or damage caused by this program.

[*] starting @ 12:00:00 /2023-01-01/

[12:00:00] [INFO] starting sqlmap 3.7-dev (r12345)
[12:00:00] [INFO] testing connection to the target URL
[12:00:01] [INFO] checking if the target is stable
[12:00:01] [INFO] target URL is stable
[12:00:01] [INFO] testing for SQL injection on URL 'http://testphp.vulnweb.com/artists.php?id=1'
[12:00:01] [INFO] testing 'UNION query - Parameter: id'
...

La sortie confirme que sqlmap se concentre désormais sur la technique basée sur les requêtes UNION.

Exécuter un scan avec plusieurs techniques en utilisant --technique=BEUST

Dans cette étape, vous apprendrez comment combiner plusieurs techniques d'injection SQL dans un seul scan sqlmap. C'est souvent l'approche la plus pratique, car elle permet à sqlmap d'essayer diverses méthodes pour trouver des vulnérabilités, augmentant ainsi les chances de succès.

Vous pouvez spécifier plusieurs techniques en concaténant leurs codes respectifs après --technique=. Par exemple, --technique=BEUST indiquera à sqlmap d'essayer les injections basées sur les booléens, sur les erreurs, sur les requêtes UNION, les requêtes empilées (stacked queries) et les injections aveugles basées sur le temps.

Ouvrez votre terminal et exécutez la commande suivante :

sqlmap -u "http://testphp.vulnweb.com/artists.php?id=1" --technique=BEUST --batch --eta --skip-waf
  • -u "http://testphp.vulnweb.com/artists.php?id=1" : Spécifie l'URL cible.
  • --technique=BEUST : Force sqlmap à utiliser les injections basées sur les booléens, sur les erreurs, sur les requêtes UNION, les requêtes empilées et les injections aveugles basées sur le temps.
  • --batch : Exécute sqlmap en mode non interactif.
  • --eta : Affiche le temps d'arrivée estimé.
  • --skip-waf : Ignore la détection du WAF.

Vous observerez la sortie de sqlmap, qui montrera qu'il teste systématiquement chacune des techniques spécifiées. Cette approche complète est généralement recommandée pour les scans initiaux.

        _
       ___ ___ ___ ___
      |_ -| . | . | . |
      |___|_  |_  |_  |
        |_|   |_|   |_|   3.7-dev (r12345)

[!] legal disclaimer: Usage of sqlmap for attacking targets without prior mutual consent is illegal. It is the end user's responsibility to obey all applicable local, state and federal laws. sqlmap developers assume no liability and are not responsible for any misuse or damage caused by this program.

[*] starting @ 12:00:00 /2023-01-01/

[12:00:00] [INFO] starting sqlmap 3.7-dev (r12345)
[12:00:00] [INFO] testing connection to the target URL
[12:00:01] [INFO] checking if the target is stable
[12:00:01] [INFO] target URL is stable
[12:00:01] [INFO] testing for SQL injection on URL 'http://testphp.vulnweb.com/artists.php?id=1'
[12:00:01] [INFO] testing 'Boolean-based blind - Parameter: id'
[12:00:02] [INFO] testing 'Error-based - Parameter: id'
[12:00:03] [INFO] testing 'UNION query - Parameter: id'
[12:00:04] [INFO] testing 'Stacked queries - Parameter: id'
[12:00:05] [INFO] testing 'Time-based blind - Parameter: id'
...

La sortie confirme que sqlmap teste maintenant plusieurs techniques comme spécifié.

Résumé

Dans ce laboratoire, vous avez appris avec succès comment spécifier et contrôler les techniques d'injection SQL utilisées par sqlmap. Vous avez exploré les codes de techniques individuels (B, E, U, S, T, Q) et vous vous êtes entraînés à forcer sqlmap à utiliser des méthodes spécifiques comme les injections aveugles basées sur les booléens, les injections aveugles basées sur le temps et les injections basées sur les requêtes UNION. Enfin, vous avez appris à combiner plusieurs techniques pour un scan plus complet.

Comprendre et utiliser l'option --technique dans sqlmap vous permet d'affiner vos évaluations de vulnérabilités, d'optimiser les temps de scan et de cibler plus efficacement des types spécifiques de vulnérabilités d'injection SQL. Cette compétence est cruciale pour des tests d'intrusion efficaces et précis.