De nombreuses entreprises utilisent des solutions basées sur le web pour interagir avec leurs clients. Cependant, cette exposition au web peut être exploitée par des attaquants pour infiltrer les réseaux et acquérir des informations sensibles. Pour éviter cela, la sécurité des applications web doit être une préoccupation majeure, et l'un des meilleurs moyens d'y parvenir est de procéder à des tests d’intrusion (pentests).

 

Les pentests visent à simuler des scénarios réels d'attaques en évaluant la sécurité des applications web et en attaquant toutes les vulnérabilités connues avant que de véritables attaquants ne puissent les exploiter.


Vous trouverez ci-dessous le top 10 des vulnérabilités web découvertes lors de nos pentests, accompagnées d'une brève explication sur la manière dont ces vulnérabilités peuvent être exploitées et sur la manière de les atténuer.

 

 

1) Cross-Site Scripting (XSS) – stockée et réfléchie

Les vulnérabilités XSS permettent aux attaquants d'injecter des scripts malveillants dans les pages web, ce qui peut affecter tous les utilisateurs qui consultent ces pages ou interagissent avec elles. Les failles XSS les plus courantes sont les suivantes:

  • XSS réfléchi : lorsqu'un utilisateur clique sur une URL malveillante créée par un attaquant, le code JavaScript contenu dans l'URL est exécuté. Comme le code n'est pas stocké sur le serveur, l'attaquant doit encourager les gens à cliquer sur un lien, en utilisant, par exemple, l'ingénierie sociale.
  • XSS stocké : le code malveillant est stocké dans la base de données et exécuté chaque fois qu'un utilisateur accède à une page qui l'utilise.

 

Exploitation : Dans le cas d'une attaque XSS stockée, une personne malveillante peut insérer un code malveillant dans un commentaire ou un champ de formulaire, qui sera exécuté lorsqu'un autre utilisateur consultera le contenu. Une XSS réfléchie se produit lorsqu'un attaquant crée une URL contenant un code malveillant et trompe un utilisateur en l'incitant à cliquer dessus.

 

Recommandation : Mettez en œuvre une validation des valeurs entrées par les utilisateurs dans les formulaires et un encodage de sortie stricts pour prévenir les XSS.En outre, utilisez des politiques de sécurité du contenu (CSP) pour réduire le risque d'exécution de scripts non autorisés.

 

 

2) Falsification des Requêtes Intersites (CSRF)

L'attaque CSRF (Cross-Site Request Forgery) peut être utilisée pour inciter des utilisateurs connectés à effectuer des actions non désirées sur une application web, telles que la réalisation de transactions ou la modification d'informations de leur compte. Cette attaque exploite l'incapacité de l'application web à vérifier l'origine de la requête et la session de l'utilisateur.

 

Exploitation : Un attaquant crée un formulaire ou un lien malveillant. Lorsque la victime utilise le lien ou le formulaire, il envoie une requête à l'application web vulnérable en utilisant les cookies de la victime. Cette requête peut effectuer toutes les actions que l'utilisateur peut faire sur l'application, ce qui peut compromettre son compte.

 

Recommandation : Il existe plusieurs méthodes pour atténuer le risque de CSRF, et nous recommandons d'en utiliser autant que possible. Les méthodes les plus populaires sont les jetons anti-CSRF, l'utilisation d'en-têtes personnalisés et l'utilisation de cookies de session avec l'attribut SameSite=Strict.

 

 

3) Mauvaise configuration CORS

Par défaut, les applications ne peuvent pas communiquer en JavaScript avec des applications provenant d'autres domaines. Le partage de ressource cross-origin (CORS - Cross-Origin Resource Sharing) peut être utilisé pour modifier ce comportement. Une mauvaise configuration peut rendre l'application vulnérable à un accès non autorisé depuis d'autres domaines.

 

Exploitation : Les erreurs de configuration les plus fréquentes sont la mauvaise configuration de « Access-Control-Allow-Origin », qui, si elle est trop permissive, utilise un joker (*) ou la valeur null, permet d'effectuer des requêtes à partir de domaines non contrôlés. Si, en plus, l'application utilise « Access-Control-Allow-Credentials : True », un attaquant pourrait effectuer des requêtes à partir des sessions des utilisateurs, et ainsi voler leurs comptes, car contrairement aux attaques CSRF, l'attaquant peut lire les résultats de ces requêtes.

 

Recommandation : Évitez d'utiliser des joker ou la valeur null dans l'en-tête Access-Control-Allow-Origin. Limitez l’entête CORS aux domaines de confiance.

 

 

4) Références Directes d'Objets non Sécurisées (IDOR)

L'IDOR (Insecure Direct Object References) se produit lorsqu'une application expose des références internes à des objets tels que des clés de base de données ou des chemins d'accès à des fichiers. Les attaquants peuvent manipuler ces références pour accéder à des données non autorisées.

 

Exploitation : Si un utilisateur a accès au document 123, il peut essayer de modifier l'URL ou le corps de la requête pour accéder aux documents d'autres utilisateurs. Par exemple, il peut chercher le document 122.

 

Recommandation : Mettre en œuvre des contrôles d'accès côté serveur pour s'assurer que les utilisateurs ne peuvent accéder qu'aux données autorisées. Évitez d'exposer des identifiants sensibles dans les URL et utilisez des références indirectes ou des jetons d'accès.

 

 

5) Vulnérabilités sur le téléchargement de fichiers

Permettre aux utilisateurs de téléverser des fichiers peut présenter des risques pour la sécurité si ce n’est pas correctement géré. De nombreuses applications reposent sur la validation côté client, qui est facilement contournée.

 

Exploitation : Les attaquants peuvent téléverser des fichiers malveillants tels qu'un fichier HTML contenant du JavaScript ou un script côté serveur comme PHP, ce qui peut leur permettre de prendre le contrôle du serveur. Ils peuvent également téléverser de très gros fichiers pour saturer le stockage du serveur, ou des fichiers qui, une fois téléchargés, sont dangereux, tels que des fichiers DOCM ou EXE.

 

Recommandation : Effectuer une validation stricte, côté serveur, des fichiers téléchargés, en vérifiant le type, la taille et le contenu du fichier. Stockez les fichiers dans un répertoire non exécutable et utilisez des noms de fichiers aléatoires.

 

 

6) Redirection ouverte

Une vulnérabilité de redirection ouverte se produit lorsqu'une application permet aux utilisateurs d'être redirigés vers des URL externes sans validation appropriée, souvent en fonction de la saisie de l'utilisateur.

 

Exploitation : Un attaquant peut créer une URL d'apparence légitime qui redirige les utilisateurs vers un site web malveillant, les incitant potentiellement à visiter des sites nuisibles tels que des pages d'hameçonnage. Sur certaines redirections, il est également possible d'ajouter du code JavaScript à la place de l'URL.

 

Recommandation : Évitez les redirections ouvertes dans la mesure du possible. Si nécessaire, validez et mettez sur liste blanche les domaines autorisés ou limitez les redirections à un ensemble prédéfini d'URL de confiance.

 

 

7) Vulnérabilités des JWT

Les Jetons Web JSON (JWT – JSON Web Tokens) sont largement utilisés pour l'authentification dans les applications Web, mais une mauvaise implémentation peut entraîner des risques de sécurité.

 

Exploitation : Si une application ne parvient pas à vérifier la signature d'un JWT, les attaquants peuvent manipuler le jeton pour modifier ses informations, telles que l'identité ou le rôle de l'utilisateur. Ainsi, même sans compte sur l'application, un attaquant peut obtenir un jeton d'administration qui n'expire jamais.

 

Recommandation : Vérifiez toujours les signatures JWT à l'aide d'algorithmes sécurisés (par exemple, HS256, RS256) et assurez-vous que les jetons sont signés à l'aide d'une clé secrète forte. Appliquer des délais d'expiration stricts.

 

 

8) Composants présentant des vulnérabilités connues

Les applications web s'appuient souvent sur des bibliothèques externes qui peuvent présenter des failles de sécurité. Si certains composants ne sont pas mis à jour, l'application peut devenir vulnérable.

 

Exploitation : Les attaquants peuvent exploiter les vulnérabilités connues des composants obsolètes pour compromettre le système.

 

Recommandation : Mettez régulièrement à jour les bibliothèques et frameworks. Appliquez rapidement les correctifs de sécurité et supprimez les dépendances inutilisées.

 

 

9) Stockage non sécurisé des jetons de session

Le stockage des jetons de session dans des emplacements non sécurisés, tels que le stockage local ou de session, les expose à un vol potentiel par des acteurs malveillants. Ces jetons sont essentiels pour maintenir les sessions des utilisateurs et, s'ils sont compromis, un attaquant peut détourner la session, usurper l'identité de l'utilisateur et accéder à des informations sensibles.

 

Exploitation : Les attaquants peuvent exploiter des vulnérabilités XSS pour voler les jetons de session stockés dans la mémoire du navigateur. En outre, les jetons stockés dans ces emplacements sont vulnérables aux attaques basées sur le navigateur, telles que les logiciels malveillants côté client ou les extensions de navigateur.

 

Recommandation : Préférer les cookies avec les attributs Secure, HttpOnly et SameSite aux autres mécanismes de stockage pour les rendre inaccessibles au JavaScript et les protéger ainsi contre les attaques XSS.

 

 

10) Injection SQL (SQLi)

Les vulnérabilités de type injection SQL permettent aux attaquants d'exécuter des requêtes malveillantes en injectant du code SQL dans les champs d'entrée.

 

Exploitation : Les attaquants peuvent insérer des commandes SQL malveillantes pour accéder, modifier ou supprimer des données, contourner l'authentification ou exécuter des commandes sur le serveur.

 

Recommandation : Utiliser des instructions préparées et des requêtes paramétrées pour éviter les injections SQL. Validez et supprimer tous les caractères dangereux (sanitize)des entrées de l’utilisateur et évitez de construire des requêtes SQL en concaténant les entrées de l'utilisateur.

Le pentester d'Alter Solutions travaille sur un rapport d'audit de sécurité
Évaluez votre niveau de sécurité avec un test d’intrusion
Nos services de test d’intrusion couvrent tous les périmètres IT, OT et IoT susceptibles d'attirer l'intérêt d'un attaquant.
Partager cet article