L'injection SQL est une faille de sécurité présente dans de nombreux systèmes. Par exemple si vous saisissez comme login a' or 't'='t dans un système qui va valider le login par une requête SQL élaborée ainsi :
statement := "SELECT * FROM users WHERE name = '" + login + "';"
conduit à exécuter la requête SQL suivante :
SELECT * FROM users WHERE name = 'a' or 't'='t';
La clause where étant toujours vraie, la requête retourne tous les utilisateurs de la table...
Encore plus dangereux, si le login saisi est a';DROP TABLE users; SELECT * FROM data WHERE name LIKE '%, ce qui exécute :
SELECT * FROM users WHERE name = 'a';DROP TABLE users; SELECT * FROM data WHERE name LIKE '%';
qui supprime la table des users ! Heureusement, ce fonctionnement ne serait possible que sous Microsoft SQL Server.
Outils de détection
Security Hacks a élaboré une liste des 15 meilleurs scanners pour ce type de vulnérabilité ; voici les 3 premiers :
SQLIer - SQLIer takes a vulnerable URL and attempts to determine all the necessary information to exploit the SQL Injection vulnerability by itself, requiring no user interaction at all. Get SQLIer.
SQLbftools - SQLbftools is a collection of tools to retrieve MySQL information available using a blind SQL Injection attack. Get SQLbftools.
SQL Injection Brute-forcer - SQLibf is a tool for automatizing the work of detecting and exploiting SQL Injection vulnerabilities. SQLibf can work in Visible and Blind SQL Injection. It works by doing simple logic SQL operations to determine the exposure level of the vulnerable application. Get SQLLibf.