Geekflare est soutenu par son public. Nous pouvons percevoir des commissions d'affiliation sur les liens d'achat présents sur ce site.
En Sécurité Dernière mise à jour : 25 septembre 2023
Partager sur :
Invicti Web Application Security Scanner - la seule solution qui offre une vérification automatique des vulnérabilités avec Proof-Based Scanning™.

Le problème des applications web est qu'elles sont ouvertement exposées à des milliards d'internautes, dont beaucoup voudront enfreindre les mesures de sécurité, quelles qu'en soient les raisons

Dans les premiers temps de l'internet, l'une des méthodes d'attaque les plus courantes était la simple force brute. Ces attaques étaient généralement effectuées par des robots - ou par des personnes ayant beaucoup de temps libre - qui essayaient des zillions de combinaisons de noms d'utilisateur et de mots de passe jusqu'à ce qu'ils en trouvent une qui leur permette d'accéder à l'application ciblée

Les attaques par force brute ne sont plus une menace, grâce aux politiques de mots de passe, aux tentatives de connexion limitées et aux captchas. Mais les cybercriminels adorent découvrir de nouveaux exploits et les utiliser pour réaliser de nouveaux types d'attaques. Il y a longtemps, ils ont découvert que les champs de texte des applications ou des pages web pouvaient être exploités en y entrant - ou en y injectant - un texte inattendu qui forcerait l'application à faire quelque chose qu'elle n'est pas censée faire. C'est ainsi que sont apparues les attaques par injection

Les attaques par injection peuvent être utilisées non seulement pour se connecter à une application sans connaître le nom d'utilisateur et le mot de passe, mais aussi pour exposer des informations privées, confidentielles ou sensibles, voire pour détourner un serveur entier. C'est pourquoi ces attaques ne constituent pas seulement une menace pour les applications web, mais aussi pour les utilisateurs dont les données résident sur ces applications et, dans le pire des cas, pour d'autres applications et services connectés

Injection de code

L'injection de code est l'un des types d'attaques par injection les plus courants. Si les attaquants connaissent le langage de programmation, le cadre, la base de données ou le système d'exploitation utilisés par une application web, ils peuvent injecter du code via des champs de saisie de texte pour forcer le serveur web à faire ce qu'ils veulent

Ces types d'attaques par injection sont possibles sur les applications qui ne disposent pas d'une validation des données d'entrée. Si un champ de saisie de texte permet aux utilisateurs d'entrer ce qu'ils veulent, l'application est potentiellement exploitable. Pour prévenir ces attaques, l'application doit restreindre autant que possible les données que les utilisateurs sont autorisés à saisir

Par exemple, elle doit limiter la quantité de données attendues, vérifier le format des données avant de les accepter et restreindre l'ensemble des caractères autorisés

Les vulnérabilités liées à l'injection de code peuvent être faciles à trouver, simplement en testant l'entrée de texte d'une application web avec différents types de contenu. Une fois trouvées, les vulnérabilités sont modérément difficiles à exploiter. Mais lorsqu'un attaquant parvient à exploiter l'une de ces vulnérabilités, l'impact peut être une perte de confidentialité, d'intégrité, de disponibilité ou de fonctionnalité de l'application

Injection SQL

De manière similaire à l'injection de code, cette attaque insère un script SQL - le langage utilisé par la plupart des bases de données pour effectuer des opérations de requête - dans un champ de saisie de texte. Le script est envoyé à l'application, qui l'exécute directement sur sa base de données. Par conséquent, l'attaquant peut passer par un écran de connexion ou faire des choses plus dangereuses, comme lire des données sensibles directement à partir de la base de données, modifier ou détruire des données de la base de données, ou exécuter des opérations d'administration sur la base de données

Les applications PHP et ASP sont sujettes aux attaques par injection SQL en raison de leurs interfaces fonctionnelles plus anciennes. Les applications J2EE et ASP.Net sont généralement mieux protégées contre ces attaques. Lorsqu'une vulnérabilité d'injection SQL est trouvée - et elles peuvent être facilement trouvées - l'ampleur des attaques potentielles ne sera limitée que par l'habileté et l'imagination de l'attaquant. L'impact d'une attaque par injection SQL est donc indubitablement élevé

Injection de commandes

Ces attaques sont également possibles, principalement en raison d'une validation insuffisante des entrées. Elles diffèrent des attaques par injection de code dans la mesure où l'attaquant insère des commandes système au lieu de morceaux de code de programmation ou de scripts. Par conséquent, le pirate n'a pas besoin de connaître le langage de programmation sur lequel l'application est basée ou le langage utilisé par la base de données. En revanche, il doit connaître le système d'exploitation utilisé par le serveur d'hébergement

Les commandes système insérées sont exécutées par le système d'exploitation hôte avec les privilèges de l'application, ce qui pourrait permettre d'exposer le contenu de fichiers arbitraires résidant sur le serveur, de montrer la structure des répertoires d'un serveur, de modifier les mots de passe des utilisateurs, entre autres choses

Ces attaques peuvent être évitées par un administrateur système, en limitant le niveau d'accès au système des applications web fonctionnant sur un serveur

Scripts intersites

Chaque fois qu'une application insère l'entrée d'un utilisateur dans la sortie qu'elle génère, sans la valider ou l'encoder, elle donne la possibilité à un attaquant d'envoyer un code malveillant à un autre utilisateur final. Les attaques de type Cross-Site Scripting (XSS) profitent de ces opportunités pour injecter des scripts malveillants dans des sites web de confiance, qui sont finalement envoyés à d'autres utilisateurs de l'application, qui deviennent les victimes de l'attaquant

Le navigateur de la victime exécutera le script malveillant sans savoir qu'il n'est pas digne de confiance. Par conséquent, le navigateur le laissera accéder aux jetons de session, aux cookies ou aux informations sensibles stockées par le navigateur. S'ils sont correctement programmés, les scripts peuvent même réécrire le contenu d'un fichier HTML

Les attaques XSS peuvent généralement être divisées en deux catégories différentes : stockées et réfléchies

Dans les attaques XSS stockées, le script malveillant réside en permanence sur le serveur cible, dans un forum de discussion, dans une base de données, dans le journal des visiteurs, etc. La victime l'obtient lorsque son navigateur demande les informations stockées. Dans les attaques XSS par réflexion, le script malveillant est reflété dans une réponse qui comprend l'entrée envoyée au serveur. Il peut s'agir d'un message d'erreur ou d'un résultat de recherche, par exemple

Injection XPath

Ce type d'attaque est possible lorsqu'une application web utilise les informations fournies par un utilisateur pour construire une requête XPath pour des données XML. Le fonctionnement de cette attaque est similaire à celui de l'injection SQL: les attaquants envoient des informations mal formées à l'application afin de découvrir comment les données XML sont structurées, puis ils attaquent à nouveau pour accéder à ces données

XPath est un langage standard avec lequel, comme SQL, vous pouvez spécifier les attributs que vous voulez trouver. Pour effectuer une requête sur des données XML, les applications web utilisent les données de l'utilisateur pour définir un modèle auquel les données doivent correspondre. En envoyant des données mal formées, le modèle peut se transformer en une opération que l'attaquant souhaite appliquer aux données

Contrairement à ce qui se passe avec SQL, dans XPath, il n'y a pas de versions différentes. Cela signifie que l'injection XPath peut être effectuée sur n'importe quelle application web qui utilise des données XML, quelle que soit l'implémentation. Cela signifie également que l'attaque peut être automatisée ; par conséquent, contrairement à l'injection SQL, elle peut être lancée contre un nombre arbitraire d'objectifs

Injection de commandes de courrier électronique

Cette méthode d'attaque peut être utilisée pour exploiter des serveurs de messagerie et des applications qui créent des instructions IMAP ou SMTP avec des entrées utilisateur mal validées. Parfois, les serveurs IMAP et SMTP ne disposent pas d'une protection solide contre les attaques, comme c'est le cas pour la plupart des serveurs web, et peuvent donc être plus facilement exploités. En entrant par un serveur de messagerie, les attaquants peuvent contourner des restrictions telles que les captchas, un nombre limité de requêtes, etc

Pour exploiter un serveur SMTP, les attaquants ont besoin d'un compte de courrier électronique valide pour envoyer des messages contenant des commandes injectées. Si le serveur est vulnérable, il répondra aux demandes des attaquants, ce qui leur permettra, par exemple, de contourner les restrictions du serveur et d'utiliser ses services pour envoyer du spam

L'injection IMAP pourrait être réalisée principalement sur des applications de webmail, en exploitant la fonctionnalité de lecture des messages. Dans ce cas, l'attaque peut être réalisée en entrant simplement, dans la barre d'adresse d'un navigateur web, une URL contenant les commandes injectées

Injection de CRLF

L'insertion de caractères de retour de chariot et de saut de ligne (combinaison connue sous le nom de CRLF) dans les champs de saisie des formulaires web constitue une méthode d'attaque appelée injection de CRLF. Ces caractères invisibles indiquent la fin d'une ligne ou d'une commande dans de nombreux protocoles internet traditionnels, tels que HTTP, MIME ou NNTP

Par exemple, l'insertion d'un CRLF dans une requête HTTP, suivie d'un certain code HTML, pourrait envoyer des pages web personnalisées aux visiteurs d'un site web

Cette attaque peut être réalisée sur des applications web vulnérables qui n'appliquent pas le filtrage approprié à l'entrée de l'utilisateur. Cette vulnérabilité ouvre la porte à d'autres types d'attaques par injection, telles que les XSS et l'injection de code, et pourrait également entraîner le détournement d'un site web

Injection d'en-tête d'hôte

Dans les serveurs qui hébergent de nombreux sites ou applications web, l'en-tête hôte devient nécessaire pour déterminer lequel des sites ou applications web résidents - chacun d'entre eux étant connu sous le nom d'hôte virtuel - doit traiter une requête entrante. La valeur de l'en-tête indique au serveur à quel hôte virtuel envoyer la requête. Lorsque le serveur reçoit un en-tête d'hôte non valide, il le transmet généralement au premier hôte virtuel de la liste. Cela constitue une vulnérabilité que les attaquants peuvent utiliser pour envoyer des en-têtes arbitraires au premier hôte virtuel d'un serveur

La manipulation de l'en-tête d'hôte est généralement liée aux applications PHP, bien qu'elle puisse également être réalisée avec d'autres technologies de développement web. Les attaques par en-tête d'hôte servent de catalyseur à d'autres types d'attaques, telles que l'empoisonnement du cache web. Les conséquences peuvent être l'exécution d'opérations sensibles par les attaquants, par exemple la réinitialisation de mots de passe

Injection LDAP

LDAP est un protocole conçu pour faciliter la recherche de ressources (appareils, fichiers, autres utilisateurs) dans un réseau. Il est très utile pour les intranets et, lorsqu'il est utilisé dans le cadre d'un système d'authentification unique, il peut servir à stocker les noms d'utilisateur et les mots de passe. Les requêtes LDAP impliquent l'utilisation de caractères de contrôle spéciaux qui affectent son contrôle. Les attaquants peuvent potentiellement modifier le comportement prévu d'une requête LDAP s'ils peuvent y insérer des caractères de contrôle

Là encore, le problème fondamental qui permet les attaques par injection LDAP est l'entrée utilisateur mal validée. Si le texte qu'un utilisateur envoie à une application est utilisé dans le cadre d'une requête LDAP sans être nettoyé, la requête peut finir par récupérer une liste de tous les utilisateurs et la montrer à un attaquant, simplement en utilisant un astérisque (*) au bon endroit dans une chaîne d'entrée

Prévention des attaques par injection

Comme nous l'avons vu dans cet article, toutes les attaques par injection sont dirigées vers des serveurs et des applications dont l'accès est ouvert à n'importe quel internaute. La responsabilité de la prévention de ces attaques est répartie entre les développeurs d'applications et les administrateurs de serveurs

Les développeurs d'applications doivent connaître les risques liés à une validation incorrecte des entrées utilisateur et apprendre les meilleures pratiques pour assainir les entrées utilisateur à des fins de prévention des risques. Les administrateurs de serveurs doivent auditer périodiquement leurs systèmes afin de détecter les vulnérabilités et de les corriger dès que possible. Il existe de nombreuses options pour réaliser ces audits, soit à la demande, soit automatiquement.

  • Geekflare Editorial
    Auteur
    L'équipe éditoriale de Geekflare est un groupe de rédacteurs et d'éditeurs expérimentés qui se consacrent à fournir un contenu de haute qualité à nos lecteurs. Nous nous engageons à fournir un contenu utile qui aide les individus et les entreprises à se développer.
Merci à nos sponsors
Autres lectures sur la sécurité
Alimentez votre entreprise
Quelques outils et services pour aider votre entreprise à se développer.
  • Invicti utilise le Proof-Based Scanning™ pour vérifier automatiquement les vulnérabilités identifiées et générer des résultats exploitables en quelques heures seulement.
    Essayez Invicti
  • Web scraping, proxy résidentiel, proxy manager, web unlocker, search engine crawler, et tout ce dont vous avez besoin pour collecter des données web.
    Essayez Brightdata
  • Monday.com est un système d'exploitation tout-en-un qui vous aide à gérer vos projets, vos tâches, votre travail, vos ventes, votre CRM, vos opérations, vos flux de travail et bien plus encore.
    Essayez le lundi
  • Intruder est un scanner de vulnérabilité en ligne qui détecte les faiblesses de votre infrastructure en matière de cybersécurité, afin d'éviter des violations de données coûteuses.
    Essayer l'intrus