Les attaques par injections SQL de ces derniers mois

Date : 04 Juin 2008

Plusieurs attaques par injection SQL ont été menées sur Internet depuis le début de l'année 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].

Il nous a semblé intéressant de faire également un point sur ces attaques à travers un article.

Principe d'une attaque par injection SQL

Elles sont conduites par un utilisateur malveillant contre un site web, qui génère dynamiquement des requêtes SQL depuis des données saisies par les utilisateurs.

Pour rappeler le principe de ces attaques, nous prendrons l'exemple très classique d'une page web d'authentification contenant un formulaire de saisie d'un nom d'utilisateur et de son mot de passe.

 Lorsque l'utilisateur valide sa saisie, une URL de la forme suivante est envoyée vers le site web:

https://site-web/dossier?user=nom&password=xxxxx

 Le site web génère alors une requête SQL de la forme suivante pour rechercher l'utilisateur dans sa base de données:

SELECT * FROM users WHERE user = '$user' AND motdepasse = '$password'

 
Maintenant si une personne malveillante qui connaît un utilisateur 'Martin' saisit la chaîne suivante comme nom d'utilisateur:

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 la requête SQL en commentaire.

 En déclinant cette attaque sous différentes formes, il est possible de lire et de modifier illégalement les informations stockées en base de données.

 
Spécificité des attaques menées ces derniers mois

 L'idée générale de ces attaques est d'infecter dans un premier temps des sites web pour pouvoir attaquer ensuite les victimes qui viennent s’y connecter.

 Les sites web attaqués ont les caractéristiques suivantes :

  • 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 :

  1. 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.
  2. 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 :

Précedent Précedent Suivant Suivant Imprimer Imprimer