Les attaques par injections SQL de ces derniers mois
Date : 04 Juin 2008
Elles ont fait
l'objet de deux dangers potentiels (CERT-IST/DG-2008.003 et CERT-IST/DG-2008.005), d'un "VulnCoord" (VulnCoord-2008.010) et du hub de gestion de crise [Infections web].
https://site-web/dossier?user=nom&password=xxxxx
SELECT * FROM users WHERE user =
'$user' AND motdepasse = '$password'
Martin'; //'
La requête
générée est alors la suivante :
SELECT * FROM users WHERE user= 'Martin';
//'' AND motdepasse = '$password'
L'attaquant est
alors authentifié en tant qu'utilisateur "Martin" sans avoir eu à
connaître le mot de passe de ce dernier.
Nota : la
séquence de caractères "//" est un marqueur de commentaire. Dans
notre exemple, elle est utilisée pour contourner le contrôle du mot de passe en
mettant la fin de
Spécificité
des attaques menées ces derniers mois
- ils sont construits autour d'une base
de données dans laquelle est stocké un contenu éditorial que le serveur
web utilise pour générer dynamiquement des pages web.
- ils sont développés en environnement
Windows (pages ASP, base de données MS-SQL)
- ils présentent des vulnérabilités de
type SQL injection.
L'injection SQL
est alors utilisée dans la première phase de l'attaque pour injecter des tags HTML
"<script>" (exécution de script JavaScript) ou
"<iframe>" (inclusion de pages web tierces) malveillants dans les
contenus éditoriaux stockés en base de données.
Une fois la base de données ainsi altérée, les pages web générées dynamiquement
contiennent les données <script> ou <iframe> choisies par le
pirate. Elles sont donc capables d'exploiter une vulnérabilité quelconque (de
Windows, Internet Explorer, …) sur les postes des victimes qui tentent de les
visualiser.
C'est la deuxième phase de l'attaque. Elle vise les postes des internautes qui
viennent consulter les sites web infectés.
Les sites web vulnérables ne sont donc pas visés directement, mais ils sont
utilisés comme vecteurs d'attaque contre les victimes qui viennent les
consulter.
Nota : L'injection SQL utilisée dans la première phase de l'attaque exploite
des vulnérabilités dans les applications web et non des vulnérabilités dans les
logiciels utilisés par ces applications (IIS, SQL server, …).
Ces attaques ont
surpris par leur ampleur (des dizaines, voire des centaines, de milliers de
sites web infectés). Leur caractère massif s'explique par deux raisons :
- L'existence d'outils permettant de
les automatiser.
Le SANS a pu récupérer un de ces outils et en faire une analyse.
Cet outil contient un moteur de recherche (paramétrable) utilisant Google et permettant d'identifier des sites web potentiellement vulnérables. Une fois les sites web identifiés, cet outil conduit les attaques par injection SQL permettant d'injecter des tags malveillants (également paramétrables) dans les pages web.
- Un outil de ce type a été inséré dans
le botnet "Asprox".
Cela lui permet d'infecter des sites web vulnérables afin de se propager dans un second temps sur les postes des victimes qui visitent ces sites.
Pour plus d'information :
- Microsoft (attaques récentes) : http://blogs.technet.com/swi/archive/2008/05/29/sql-injection-attack.aspx
- Microsoft (injections SQL) : http://msdn.microsoft.com/en-us/library/ms161953.aspx
- SANS : http://isc.sans.org/diary.html?storyid=4294
- Asprox : http://www.secureworks.com/research/threats/danmecasprox/