Qu¡¯est-ce que l¡¯injection SQL??
D¨¦couvrez comment fonctionnent les attaques par injection SQL, les types, les exemples et comment les pr¨¦venir.
Le langage de requ¨ºte structur¨¦ (SQL) est le langage standard utilis¨¦ pour interroger une base de donn¨¦es. (Notez qu¡¯une requ¨ºte effectu¨¦e dans un moteur de recherche tel que Google ou Bing est diff¨¦rente.)?
Une injection SQL (SQLi) est un type d¡¯attaque dans laquelle les cybercriminels tentent d¡¯exploiter les vuln¨¦rabilit¨¦s du code d¡¯une application en ins¨¦rant une requ¨ºte SQL dans des champs de saisie ou de formulaire r¨¦guliers, tels qu¡¯un nom d¡¯utilisateur ou un mot de passe. L¡¯instruction SQL est ensuite transmise ¨¤ la base de donn¨¦es SQL sous-jacente de l¡¯application.
Les attaques par injection SQL?r¨¦ussissent lorsque le formulaire?d¡¯entr¨¦e Web permet aux instructions SQL g¨¦n¨¦r¨¦es par l¡¯utilisateur d¡¯interroger directement la base de donn¨¦es.?Ces attaques ont ¨¦galement prolif¨¦r¨¦ avec l¡¯utilisation de bases de code partag¨¦es, telles que les plug-ins WordPress, qui?contiennent une vuln¨¦rabilit¨¦ dans le mod¨¨le de code sous-jacent. Cette vuln¨¦rabilit¨¦ est transmise ¨¤ l¡¯ensemble de l¡¯application et peut affecter des?centaines de milliers de sites Web qui utilisent tous ce code partag¨¦.
Les dommages peuvent ¨ºtre consid¨¦rables. Un attaquant ayant une bonne connaissance de SQL saisit des requ¨ºtes sur une application Web sans param¨¨tres de validation d¡¯entr¨¦e en place, puis acc¨¨de facilement aux fichiers clients d¡¯une entreprise ou aux informations financi¨¨res sensibles.
Les requ¨ºtes sont utilis¨¦es pour trouver des donn¨¦es sp¨¦cifiques bas¨¦es sur des crit¨¨res fournis par l¡¯utilisateur. SQL est l¡¯une des nombreuses langues qui ex¨¦cutent les bases de donn¨¦es pour les applications, qui peuvent ¨ºtre con?ues pour un usage interne par une organisation ou publi¨¦es sur Internet et accessibles au public. Outre la recherche de donn¨¦es, les requ¨ºtes SLQ peuvent effectuer des calculs, r¨¦sumer les donn¨¦es et automatiser les t?ches.
Les SQLi en bande sont un type d¡¯attaque courant et sont connus pour leur simplicit¨¦ et leur efficacit¨¦. Cette m¨¦thode pr¨¦sente deux variantes?: bas¨¦e sur les erreurs et bas¨¦e sur les syndicats.?
Les attaquants injectent des requ¨ºtes SQL dans l¡¯espoir que la base de donn¨¦es renverra des messages d¡¯erreur, qui peuvent donner aux attaquants des informations sur la base de donn¨¦es et sa structure.?
Dans ce sc¨¦nario, les attaquants utilisent l¡¯op¨¦rateur SQL UNION pour la base de donn¨¦es afin de renvoyer une seule r¨¦ponse HTTP (Hypertext Transfer Protocol). Les attaquants peuvent ensuite ¨¦valuer la r¨¦ponse ¨¤ la recherche d¡¯indices sur le contenu d¡¯une base de donn¨¦es.?
Dans les attaques SQLi inf¨¦rentielles ou aveugles, les fraudeurs interrogent la base de donn¨¦es et observent le comportement du serveur pour recueillir des informations sur la structure de la base de donn¨¦es. Ces types d¡¯attaques sont plus lents, mais ils peuvent ¨ºtre tout aussi nuisibles que d¡¯autres types d¡¯iSQL. Il en existe deux types?: bool¨¦en et bas¨¦ sur le temps.?
L¡¯assaillant interroge la base de donn¨¦es, et en ¨¦tudiant si la r¨¦ponse HTTP a ¨¦t¨¦ modifi¨¦e ou est rest¨¦e la m¨ºme, il peut d¨¦terminer si le r¨¦sultat ¨¦tait vrai ou faux.?
Comme son nom l¡¯indique, l¡¯assaillant ¨¦tudie le temps de r¨¦ponse, en secondes, d¡¯un r¨¦sultat de requ¨ºte. Comme pour le type bool¨¦en, l¡¯attaquant examine de pr¨¨s la r¨¦ponse HTTP pour d¨¦terminer si la requ¨ºte ¨¦tait vraie ou fausse.
Il s¡¯agit d¡¯un cas SQLi sp¨¦cial qui ne peut fonctionner que si certaines fonctionnalit¨¦s du serveur de base de donn¨¦es utilis¨¦es par l¡¯application sont activ¨¦es. Les SQLi hors bande sont consid¨¦r¨¦es comme une alternative aux techniques in-band et inf¨¦rentielles. SQLi hors bande ne s¡¯appuie pas sur l¡¯attaquant qui interroge la base de donn¨¦es pour examiner les messages d¡¯erreur ou les r¨¦ponses HTTP. Au contraire, il attend du serveur qu¡¯il g¨¦n¨¨re des demandes DNS (Domain Name System) ou HTTP afin que l¡¯attaquant puisse obtenir des donn¨¦es telles que des noms d¡¯utilisateur et des mots de passe.?
Une injection SQL manipule une requ¨ºte SQL standard pour exploiter les vuln¨¦rabilit¨¦s dans la base de donn¨¦es sous-jacente de l¡¯application. Examinons quelques exemples de code pour voir comment cela fonctionne.?
Une requ¨ºte typique de base de donn¨¦es SQL pour une application de commerce ¨¦lectronique peut ressembler ¨¤ ce qui suit?:
S?LECTIONNER le nom du produit, la description du produit
DEPUIS les produits
O? Num¨¦ro de produit = Num¨¦ro de produit
Si un attaquant souhaite acc¨¦der ¨¤ tous les noms et descriptions de produits dans la base de donn¨¦es, m¨ºme ceux auxquels il n¡¯est pas autoris¨¦ ¨¤ acc¨¦der, il saisira un URL (Uniform Resource Locator) similaire ¨¤ celui-ci dans le formulaire Web ¨¤ l¡¯¨¦cran?: http://www.ecommercesite.com/products/products.asp?productid=999 or 1=1. The?la requ¨ºte SQL correspondante sera la suivante?:?
S?LECTIONNER le nom du produit, la description du produit
DEPUIS les produits
O? Num¨¦ro de produit = 999 OU 1 = 1
Si un attaquant souhaite supprimer une base de donn¨¦es enti¨¨re, il peut tirer parti de caract¨¨res mal filtr¨¦s, en saisissant http://www.ecommercesite.com/products/products.asp?productid=999; DROP TABLE?pour g¨¦n¨¦rer la requ¨ºte SQL suivante?:
S?LECTIONNER le nom du produit, la description du produit
DEPUIS les produits
O? Num¨¦ro de produit = 999?; UTILISATEURS DE LA TABLE DE D?P?T
Par cons¨¦quent, l¡¯ensemble de la base de donn¨¦es des utilisateurs peut ¨ºtre abandonn¨¦e ou supprim¨¦e.
Si les attaquants peuvent saisir une requ¨ºte inattendue que l¡¯application accepte, il est logique de limiter la fonctionnalit¨¦ d¡¯entr¨¦e pour prot¨¦ger les donn¨¦es. Les d¨¦veloppeurs peuvent utiliser la validation des entr¨¦es ou la d¨¦sinfection, de sorte que l¡¯application n¡¯accepte que certaines entr¨¦es dans les champs de formulaire et rejette celles qui ne sont pas conformes. Les utilisateurs Web connaissent cette pratique. Par exemple, lorsqu¡¯ils sont invit¨¦s ¨¤ cr¨¦er un mot de passe qui doit comporter un certain nombre de caract¨¨res et inclure au moins un caract¨¨re sp¨¦cial.
Cependant, ce n¡¯est pas une solution id¨¦ale, car il est difficile de planifier toutes les combinaisons d¡¯entr¨¦e autoris¨¦es. Un nombre important d¡¯erreurs r¨¦sultera d¡¯utilisateurs, qui peuvent ¨ºtre des employ¨¦s ou des clients. Cela peut affecter consid¨¦rablement les op¨¦rations commerciales.?
Pour filtrer les SQLi et bloquer les menaces potentielles, les entreprises peuvent installer un pare-feu applicatif?Web (WAF). Un WAF fait correspondre les entr¨¦es d¡¯une application ¨¤ une grande liste de signatures connues pour contrecarrer les requ¨ºtes SQL malveillantes. La liste est mise ¨¤ jour et corrig¨¦e r¨¦guli¨¨rement afin qu¡¯une organisation puisse suivre l¡¯¨¦volution du paysage des menaces.
Bien que le filtrage pour?SQLi?soit n¨¦cessaire, le blocage de 100?% des requ¨ºtes SQL n¡¯est pas possible. Les employ¨¦s, les partenaires ou les experts du secteur de la s¨¦curit¨¦ peuvent devoir tester l¡¯application et auront besoin d¡¯une autorisation pour le faire. Le WAF peut v¨¦rifier l¡¯entr¨¦e avec des donn¨¦es IP (Internet Protocol) avant de bloquer la demande.?
Si un site Web n¡¯utilise pas Hypertext Transfer Protocol Secure (HTTPS), qui tire parti de la s¨¦curit¨¦ SSL/TLS (Secure Sockets Layer/Transport Layer) pour le cryptage, un attaquant peut manipuler le cookie de session avec SQLi pour acc¨¦der ¨¤ la base de donn¨¦es. Les organisations doivent s¨¦curiser leurs URL de sites Web et d¡¯applications Web pour ¨¦viter cela.
Veuillez remplir le formulaire ci-dessous. Un de nos collaborateurs vous contactera dans les plus brefs d¨¦lais.