3. Injection SQL classique : contourner une authentification

Cette unité détaille le cas d’usage le plus emblématique de l’injection SQL : le contournement d’un formulaire d’authentification, sans connaître ni le login ni le mot de passe de la victime.

 

Le scénario cible

Reprenons la requête vulnérable introduite précédemment :

SELECT * FROM utilisateurs WHERE login = '[login]' AND mot_de_passe = '[motdepasse]';

L’application considère la connexion comme réussie dès que cette requête retourne au moins une ligne. L’objectif de l’attaquant est donc de transformer cette requête en une condition toujours vraie, sans connaître les valeurs attendues.

La charge utile classique

En saisissant la valeur suivante dans le champ login, en laissant le mot de passe vide ou quelconque :

admin' --

la requête générée devient :

SELECT * FROM utilisateurs WHERE login = 'admin' -- ' AND mot_de_passe = '...';

Le commentaire — annule la vérification du mot de passe : la requête finale ne vérifie plus que l’existence d’un utilisateur nommé admin, sans aucune contrainte sur le mot de passe.

 

Contourner sans connaître aucun identifiant

Une autre charge utile très répandue, utilisable même sans connaître de login valide, consiste à injecter une condition toujours vraie :

' OR '1'='1

Insérée dans le champ login, elle transforme la requête en :

SELECT * FROM utilisateurs WHERE login = '' OR '1'='1' AND mot_de_passe = '...';

La condition ‘1’=’1′ étant toujours vraie, et l’opérateur OR rendant vraie l’ensemble de la clause dès qu’un seul des deux membres l’est, la requête retourne potentiellement tous les utilisateurs de la table, et l’application considère souvent le premier résultat comme l’utilisateur connecté.

L’importance de la priorité des opérateurs

Dans certains cas, l’opérateur AND est évalué avant le OR selon les règles de priorité SQL, ce qui peut neutraliser la charge utile si elle n’est pas accompagnée d’un commentaire. C’est pourquoi la version la plus fiable combine souvent les deux techniques : ‘ OR ‘1’=’1′ —

 

Pourquoi cette faille reste redoutable

Ce type d’injection ne nécessite aucun outil spécialisé : un simple navigateur et quelques caractères suffisent. C’est précisément cette accessibilité qui explique pourquoi l’injection SQL reste une cible de choix pour les attaquants opportunistes autant que pour les professionnels du pentest.

Une démonstration volontairement limitée

Ce cours présente ces techniques dans un cadre strictement pédagogique et sur des environnements de test maîtrisés. Leur usage sur une application tierce sans autorisation constitue une infraction, rappelée dans l’introduction du cours.

Points clés :

  • Le commentaire SQL permet de neutraliser la vérification du mot de passe
  • La condition toujours vraie ‘ OR ‘1’=’1′ permet de contourner l’authentification sans identifiant connu
  • La priorité des opérateurs AND/OR influence la fiabilité de la charge utile
  • Ce type d’injection ne nécessite aucun outil spécialisé
SEE ALL Add a note
YOU
Add your Comment