Qu’est-ce que l’injection SQL intrabande ?

L’ injection SQL intrabande est un type d’ injection SQL où l’attaquant reçoit le résultat sous forme de réponse directe en utilisant le même canal de communication. Par exemple, si l’attaquant effectue l’attaque manuellement à l’aide d’un navigateur Web, le résultat de l’attaque sera affiché dans le même navigateur Web. L’injection SQL intrabande est également appelée injection SQL classique .

Exemple d’injection SQL intrabande

Le type le plus simple d’injection SQL intrabande est lorsque l’attaquant est capable de modifier la requête d’origine et de recevoir les résultats directs de la requête modifiée. Par exemple, supposons que la requête suivante est destinée à renvoyer les données personnelles de l’utilisateur actuel et à les afficher à l’écran.

SELECT * FROM users WHERE user_id LIKE 'current_user'
 

Si cette requête est exécutée dans l’application à l’aide d’une simple concaténation de chaînes, un pirate malveillant peut fournir le current_user suivant :

%'--

En conséquence, la chaîne de requête envoyée à la base de données deviendra :

SELECT * FROM users WHERE user_id LIKE '%'--'
 

Le guillemet simple complète l’instruction SQL et le double tiret (–) signifie que le reste de la ligne est traité comme un commentaire. Par conséquent, l’application exécute la requête suivante :

SELECT * FROM users WHERE user_id LIKE '%'
 

Le signe de pourcentage dans SQL est un caractère générique, donc à la suite de l’attaque, l’application affichera le contenu de l’ensemble de la table des utilisateurs (données personnelles), et pas seulement un seul enregistrement d’utilisateur.

Qu’est-ce que l’injection SQL basée sur les erreurs ?

L’injection SQL basée sur les erreurs est un sous-type d’injection SQL intrabande où le résultat renvoyé à l’attaquant est une chaîne d’erreur de base de données.

Conséquences de l’injection SQL basée sur les erreurs

Retourner une chaîne d’erreur à un attaquant peut sembler inoffensif. Cependant, selon la structure de l’application et le type de la base de données, l’attaquant peut utiliser la chaîne d’erreur reçue pour :

  • Obtenez des informations sur le type et la version de la base de données pour utiliser différentes techniques d’attaque pour un type/version de base de données spécifique.
  • Obtenez des informations sur la structure de la base de données pour essayer des injections SQL plus spécifiques une fois la structure connue.
  • Extraire les données de la base de données. Bien que le processus soit beaucoup plus long et plus complexe que l’affichage direct du résultat d’une requête, un attaquant peut être en mesure de manipuler les erreurs pour exfiltrer des données de la base de données.

Exemple d’injection SQL basée sur les erreurs

Disons que nous avons la même requête que dans l’exemple ci-dessus :

SELECT * FROM users WHERE user_id = 'current_user'
 

Un pirate malveillant peut fournir la valeur current_user suivante :

1'

En conséquence, la requête devient :

SELECT * FROM users WHERE user_id = '1''
 

Le guillemet simple doublé à la fin de la requête provoque le signalement d’une erreur par la base de données. Si le serveur Web est configuré pour afficher des erreurs à l’écran, l’attaquant peut voir un message tel que le suivant :

You have an error in your SQL syntax; check the manual that corresponds to 
your MySQL server version for the right syntax to use near "' at line 1
Warning: mysql_fetch_array() expects parameter 1 to be resource, boolean
given in /hj/var/www/query.php on line 37
 

Par conséquent, l’attaquant voit immédiatement que l’application utilise une base de données MySQL et peut se concentrer sur des attaques spécifiques à MySQL.

Qu’est-ce que l’injection SQL basée sur l’union ?

L’ injection SQL basée sur l’union est un sous-type d’injection SQL intrabande où l’attaquant utilise la clause UNION SQL pour recevoir un résultat qui combine des informations légitimes avec des données sensibles.

Conséquences de l’injection SQL basée sur l’union

L’injection SQL basée sur l’union est le type d’injection SQL le plus dangereux car elle permet à l’attaquant d’obtenir directement presque toutes les informations de la base de données.

Exemple d’injection SQL basée sur l’union

Disons que nous avons la même requête que dans l’exemple ci-dessus :

SELECT * FROM users WHERE user_id = 'current_user'
 

Un pirate malveillant peut fournir le current_user suivant :

-1' UNION SELECT version(),current_user()--'

En conséquence, la requête devient :

SELECT * FROM users WHERE user_id = '-1' UNION SELECT version(),current_user()--'
 

Les fonctions version et current_user de MySQL renvoient la version de la base de données et le nom de l’utilisateur actuel du système d’exploitation. En conséquence, l’attaquant reçoit les informations suivantes :

5.1.73-0ubuntu0.10.04.1
mysql@localhost
 

L’attaquant voit immédiatement que l’application utilise une base de données MySQL 5.1.73 sur le système d’exploitation Ubuntu 10.04.1 et que la base de données est accessible à l’aide du compte d’utilisateur du système d’exploitation mysql .

Comment prévenir les vulnérabilités d’injection SQL intrabande ?

Le seul moyen totalement efficace de prévenir tous les types de vulnérabilités SQLi dans les applications Web, y compris SQLi intrabande, consiste à utiliser des requêtes paramétrées (également appelées instructions préparées) pour accéder aux bases de données SQL. Si votre langage de programmation ne prend pas en charge les requêtes paramétrées mais que votre moteur de base de données prend en charge les procédures stockées, vous pouvez utiliser à la place des procédures stockées avec des instructions préparées.

Il n’est pas recommandé de se fier uniquement à d’autres méthodes de prévention, telles que les listes blanches, les listes noires ou le filtrage/l’échappement des entrées. Les pirates malveillants peuvent trouver un moyen de contourner une telle désinfection.

De plus, vous devez configurer votre environnement pour qu’il n’affiche pas les erreurs de base de données, ce qui permet d’atténuer même les vulnérabilités d’injection SQL basées sur des erreurs non découvertes. Cependant, cela n’a aucun effet sur les autres types d’injections SQL et vous ne devez donc pas le considérer comme une méthode de prévention.

Dans une attaque par injection SQL intrabande, l’attaquant reçoit le résultat sous forme de réponse directe en utilisant le même canal de communication. Par exemple, si l’attaquant effectue l’attaque manuellement à l’aide d’un navigateur Web, le résultat de l’attaque sera affiché dans le même navigateur Web.

L’injection SQL basée sur les erreurs est un sous-type d’injection SQL intrabande où le résultat renvoyé à l’attaquant est une chaîne d’erreur de base de données. De telles chaînes d’erreur peuvent permettre à l’attaquant, par exemple, de connaître le type et la version de la base de données, de cartographier la structure de la table ou même d’extraire des données de la base de données.

L’injection SQL basée sur l’union est un sous-type d’injection SQL intrabande où l’attaquant utilise une clause UNION SQL pour recevoir un résultat qui combine des informations légitimes avec des données sensibles. En termes de violation de données, il s’agit du type d’injection SQL le plus dangereux car il permet à l’attaquant d’obtenir directement presque toutes les informations de la base de données.

{"cpt":"service","style":"9","columns":"3","show":"6","order":"DESC","orderby":"DESC"}

Nos Services en Cybersécurité

Protégez-vous maintenant !

Forfait Évaluation de la surface d’attaque

La cible de cette évaluation de la surface d’attaque est les ressources réseau, les systèmes et les terminaux. Il n’y a pas de ciblage des membres ou des employés des organisations à des fins d’ingénierie sociale.

Forfait Évaluation de la vulnérabilité

Nous sommes en mesure de fournir des évaluations de vulnérabilité des applications web , des serveurs connectés à Internet et des gammes de réseaux connectés à Internet .

Analyse de vulnérabilité

Cycuri propose des analyses de vulnérabilité ponctuelles ou régulières de votre périmètre externe, de vos applications Web ou de votre réseau interne.

Forfait Évaluation WordPress

Nos services d’évaluation WordPress professionnelle sont populaires auprès de tous ceux qui souhaitent un examen par un tiers indépendant de leur posture de sécurité.

Test d’intrusion d’application Web

Que votre application Web soit destinée aux employés, B2B ou B2C, il existe un niveau de confiance inhérent qui est supposé lorsque les utilisateurs sont autorisés à entrer, naviguer et utiliser des applications et/ou des portails d’applications.

Test d’intrusion Black-Box externe

Un test d’intrusion externe Black-Box imite les actions d’un adversaire réel en tentant d’exploiter les faiblesses de la sécurité du réseau sans les dangers d’une menace réelle.

Injection SQL intrabande