Ce blog va revenir sur deux points qui peuvent intéresser l'amateur de sécurité. Le premier explique comment sniffer efficacement des requêtes SQL, le second comment explorer une base uniquement avec des requêtes SELECT.
1/ Lorsque le réseau est utilisé pour interroger mysql, une requête tshark permet d'afficher toute les requêtes passées. C'est très utile lorsqu'une attaque échoue dans un environnement de test pour connaître la syntaxe précise de l'injection transmise à la base de données par le formulaire php:
tshark -i lo -R mysql.query -Tfields -e mysql.query
tshark va alors filtrer via -R uniquement les queries mysql, et n'afficher en sortie que ces queries. C'est très pratique pour comprendre pourquoi une requête forgée/encodée dans l'URL ne fonctionne pas.
2/ mysql permet d'explorer les bases à l'aide des commandes:
- SHOW DATABASES
- USE base puis
- SHOW TABLES
- DESCRIBE nom_de_la_table
Lorsque un attaquant dispose d'une injection SQL, il peut souvent réaliser des requêtes SELECT, mais pas de commandes SHOW. mysql fournit une base information_schema permettant de retrouver les résultats ci-dessus:
- SELECT DISTINCT table_schema FROM information_schema.tables; va afficher les bases.
- SELECT table_name FROM information_schema.tables WHERE table_schema = 'base'; va lister les tables de la base
- SELECT column_name,column_type FROM information_schema.columns WHERE table_name = 'table'; va décrire les colonnes de la table.
Conclusion/
L'article complet couvre d'autres aspects, je vous invite à le lire dans le magazine.
Aucun commentaire:
Enregistrer un commentaire