SCRT – MiniMysqlat0r

publicité
Mini MySqlat0r
Recherche et exploitation automatisée de failles d'injection SQL
SCRT
Information Security
Switzerland
http://www.scrt.ch
Contenu
●
●
●
Introduction
–
Structured Query Language
–
Injections SQL
–
Attaque « classique »
Mini MySqlat0r
–
Recherche de failles
–
Exploitation
–
Démonstration
Conclusion
-2-
Introduction
Structured Query Language
●
●
●
Langage utilisé pour communiquer avec une
base de données
Sites Web utilisent SQL pour récupérer le
contenu à afficher pour une requête
Exemple type :
–
●
SELECT * FROM news WHERE id = 1
Implémentations légèrement différentes en
fonction de la base de données
–
Ciblé sur MySQL
-4-
Injections SQL
●
Faille permettant à un attaquant de modifier la
requête envoyée à la base de données
–
●
mauvaise validation des requêtes
Exemples :
–
SELECT * FROM news WHERE id = -1
–
SELECT * FROM news WHERE id = 1 or 1=1
–
SELECT * FROM news WHERE id = 1 union select ....
-5-
Types de failles
●
3 types de failles principales:
–
Failles basées sur des erreurs
●
–
Failles « union »
●
–
Message d'erreur de la base de données révèle
le contenu à l'attaquant
Attaquant peut concaténer les résultats de
plusieurs requêtes qui sont affichées sur la
page
Failles « blind »
●
Résultat de la requête n'est pas affiché sur la
page
-6-
Déroulement d'une attaque
●
Recherche d'une faille
–
Chercher différence de comportement avec 2
entrées différentes
●
Exemple :
–
–
●
id=1 and 1=1
id=1 and 1=2 (toujours FAUX)
Si les pages générées ne sont pas identiques,
grande probabilité de faille
-7-
Déroulement d'une attaque
●
Exploitation de la faille
–
Découvrir nombre de colonnes dans la requête
initiale
●
●
–
id = 1 ORDER BY 1,2,3,...,X
permet de créer une union correcte
Explorer le contenu de la base de données
●
●
●
Table information_schema (si accessible...)
à la main
long et pénible, surtout si un seul résultat affiché
à la fois
-8-
Mini MySqlat0r
Fonctionnement
●
Automatisation des tâches répétitives et
ennuyantes
–
●
Reste le plaisir de découvrir le contenu de la
base de données
3 modules distincts mais liés
–
Crawler
–
Searcher
–
Exploiter
- 10 -
Recherche automatisée
●
●
Crawler récupère liste de paramètres
Module de recherche parcourt cette liste pour
découvrir quels paramètres sont vulnérables
–
2 types de paramètres
●
●
–
numériques
alphabétiques
chaque type peut être « fermé » par un
commentaire
●
4 types d'injection possibles
- 11 -
Détection de paramètre
vulnérable
●
●
Comparaison de la page avec des paramètres
« par défaut » (requête 0) avec
–
param=default AND 1=1 (requête 1)
–
param=default AND 1=2 (requête 2)
Si la différence entre les pages générées par
les requêtes 1 et 2 est plus grande qu'entre les
requête 0 et 1, la page est considérée comme
vulnérable
–
if(diff(r0,r1) < diff(r1,r2)) then vulnerable
- 12 -
Exploitation de la faille
●
●
Automatisation de la recherche du nombre de
colonnes
Récupération du schéma de la base via la table
information_schema
–
OU recherche par dictionnaire des noms de
tables/colonnes
●
Vision du contenu des tables
●
Extraction de fichiers contenus sur la machine
–
si les droits le permettent
- 13 -
Démonstration
Conclusion
Améliorations futures
●
Authentification (Cookie / NTLM)
●
Autres bases de données (MS SQL, Oracle, ...)
●
Optimisations crawler
●
Multi-threading
- 16 -
Téléchargement