Dans MISC n°52 (« 4 Outils indispensables pour tester votre sécurité ! »), j'avais écrit un article sur les injections SQL dans les clauses « order by » dont la dernière partie traitait des optimisations possibles de ce type d'attaques. En effet, en utilisant le mot-clé CASE, il était possible de récupérer plus d'informations en une seule requête. Cet article propose un développement autour du sujet et s’intéresse à toutes les méthodes d'optimisations possibles. Il est basé sur les recherches réalisées par Luke Jahnke et moi-même ; que nous avons présentées lors de Ruxcon 2011. Les techniques détaillées ont été testées et développées pour MySQL.
1. Introduction
1.1 Pourquoi s’intéresser à l'optimisation d'injections SQL ?
Tout d'abord, pourquoi optimiser des injections SQL ? Première réponse évidente : limiter le nombre de requêtes et donc àla fois le temps d'exploitation, mais aussi le bruit dans les journaux applicatifs. Il arrive souvent, lors d'un test d'intrusion, de devoir laisser tourner un script sur plusieurs heures pour pouvoir exploiter une injection aveugle et récupérer une base de données clientes. En particulier dans le cas d'injections pour lesquelles l'exploitation est réalisée en utilisant la différence de temps entre les réponses (Time-based SQL injections).
Il est cependant à noter qu'utiliser un outil standard rend aussi l'attaque plus discrète car monsieur tout le monde (c'est-à-dire n'importe qui armé de SQLMap) peut générer la même attaque, et donc le niveau de sophistication paraît moins élevé et l'attaque passe pour un simple outil scannant tout et n'importe...
- Accédez à tous les contenus de Connect en illimité
- Découvrez des listes de lecture et des contenus Premium
- Consultez les nouveaux articles en avant-première