doigts sur clavier

Comment pirater une base de données ?

Pirater une base de données est interdit et ce site n’encourage pas au piratage. Néanmoins, la sécurité informatique impose de connaître les principales techniques utilisées par les attaquants et les bases de données sont une cible privilégiées. En tant que propriétaire ou concepteur d’une base de données, il est donc important de savoir comment les bases de données peuvent être visées comme cible d’une attaque informatique.

Sécurité d’une base de données

Une base de données bien protégées en amont évite pas mal de soucis. Voici les principaux points de vigilance :

  • Avoir une base de données qui repose sur une suite logicielle à jour ;
  • Mettre en place des droits adaptées à chaque profil d’utilisateur. Cloisonner ;
  • Auditer et logger les actions sur la base de données. Superviser la base de données ;
  • Supprimer les bases de données exemple, les comptes et mots de passe par défaut ;
  • Chiffrer les informations et stocker les données en lieu sûr ;
  • Mettre en place des sauvegardes.

Le risque principal : l’injection SQL

Derrière ce terme particulier se cache une technique redoutable. L’idée est tout simplement d’utiliser les champs de saisie mis à la disposition de l’utilisateur et d’y envoyer des requêtes SQL directement. Si le contenu de ce champ est exécuté sans contrôle, l’attaquant peut réaliser des opérations interdites sur la base. Le concepteur de la base de données attend des informations bien précises lorsqu’il met à disposition de l’internaute un champ. Si l’attaquant insère à cet endroit autre chose, que va-t-il se passer ?

Si le concepteur vérifie les données saisies et les nettoie, il ne se passera rien. Si au contraire aucun contrôle n’est réalisé, il existe une faille.

Pour se prémunir de cette faille, il suffit simplement de toujours vérifier le contenu saisi par l’utilisateur.

Exemple d’injection SQL

Imaginons un formulaire pour se connecter à un espace privé. La page de connexion contient 2 champs : l’identifiant et le mot de passe. Derrière cette page, la base de données va vérifier si l’identifiant et le mot de passe correspondent à un couple de données connues et si oui, va ouvrir l’accès. La requête SQL qui correspond à cette action est quelque chose de ce type :

SELECT u_id FROM utilisateur WHERE u_nom = 'nom saisi' AND u_motdepasse = 'mot de passe saisi';

Si l’utilisateur met « Paul » dans le champ pour le nom et « toto » dans le champ mot de passe, on obtient la requête suivante :

SELECT u_id FROM utilisateur WHERE u_nom = 'Paul' AND u_motdepasse = 'toto';

Rien à signaler. Par contre que se passe t’il si un utilisateur malveillant insère « Paul’;– » ? Les caracètes « ; » (fin d’instruction) et « — » (commentaire) reviennent à exécuter la requête suivante :

SELECT u_id FROM utilisateur WHERE u_nom = 'Paul';--' AND u_motdepasse = 'toto'; 

Ce qui est équivalent à

SELECT u_id FROM utilisateur WHERE u_nom = 'Paul';

Bingo, le mot de passe n’est plus nécessaire.

Photo : Ivan Arce