Day #21 of
#100DaysOfCyber |: C'est quoi une SQL Injection (SQLi) ?
Après avoir vu comment attaquer le terminal du serveur, aujourd'hui on parle de l'SQL Injection (SQLi). Cette fois, la cible c'est directement la base de données.
Le concept est super simple : cette faille arrive quand le backend prend ce que tape l'utilisateur et le colle directement dans une requête SQL sans rien nettoyer. L'attaquant peut alors modifier la logique de la requête pour forcer la base de données à afficher des données cachées.
#Imaginez un site e-commerce qui filtre les produits par catégorie. Quand vous cliquez sur "Cadeaux", l'URL ressemble à ça :
site.com/products?category=C…
En arrière-plan, le serveur exécute cette requête SQL : SELECT * FROM products WHERE category = 'Cadeaux' AND released = 1 (Ici, released = 1 permet de masquer les articles pas encore sortis).
Ce que le dev attend : L'utilisateur voit juste les cadeaux disponibles.
Ce que fait le pentester : Il va rajouter une simple quote ' pour casser la requête, et deux tirets -- (qui suppriment la suite de la ligne en SQL). Il tape ça dans l'URL : Cadeaux'--
La requête finale reçue par la base de données devient : SELECT * FROM products WHERE category = 'Cadeaux'--' AND released = 1
Le résultat ?
Les deux tirets -- transforment tout le reste de la requête en simple commentaire.
Du coup, la condition AND released = 1 est complètement effacée ! La base de données va obéir et afficher tous les produits de la catégorie, même ceux qui sont encore secrets et pas encore sortis.
Comment on la détecte ?
Pour savoir si un champ est vulnérable, on teste souvent 3 trucs :
- La quote (') : Si le site bug ou renvoie une erreur, c'est que la syntaxe SQL a planté.
- Le test logique : Envoyer une condition vraie (OR 1=1) puis une fausse (OR 1=2) et voir si le site réagit différemment.
- Le temps (Time-based) : Forcer la base de données à faire une pause (ex: attendre 5 secondes) pour voir si le site met du temps à répondre.
#Un dev qui comprend la sécurité.
#Un pentester qui comprend le code.
@_makh0u
#Cybersecurity #WebSecurity #DevSecOps #Backend #SQLi #SQLInjection #PortSwigger #FullStack