Cinq stratégies pour découvrir les vulnérabilités des applications web

Je travaille en tant qu’auditeur de sécurité des applications dans l’équipe de test de sécurité des applications web d’Outpost24 depuis presque trois ans maintenant. Notre équipe a partagé plusieurs travaux de recherche au cours de l’année écoulée, sur des sujets comme la falsification des requêtes intersites, les attaques par scripts intersites et l’ utilisation à des fins militaires des configurations permissives de partage des ressources entre origines multiples (CORS).

Tester des applications web peut s’avérer difficile, c’est pourquoi j’ai pensé qu’il serait utile de présenter cinq stratégies clés qui m’ont aidé à obtenir des résultats positifs dans ma carrière jusqu’à présent. Voici les cinq conseils que j’ai partagés lors d’une récente conférence à Bsides Exeter. J’espère qu’ils seront utiles aux pentesters juniors (comme aux plus expérimentés !).


Se familiariser avec l’automatisation

Il peut être tentant de vouloir tout gérer soi-même. Lorsque j’ai débuté dans le domaine des tests, je craignais que l’automatisation ne soit pas fiable et je redoutais même les risques de plantage des applications. Cependant, permettre à l’automatisation de compléter vos tests peut vraiment faire la différence.

Prenons l’exemple des scanners de vulnérabilités. Bien qu’ils ne soient pas infaillibles, leur utilité est indéniable. Ils peuvent parfois détecter des vulnérabilités telles que les attaques par script intersite ou les injections SQL, ce qui est précieux. Au lieu de se fier uniquement à leurs résultats, je recommande de les considérer comme des indicateurs sur lesquels les testeurs humains peuvent s’appuyer. Utilisez donc ces outils automatisés pour identifier des failles potentielles, mais n’oubliez pas qu’il est essentiel d’intervenir par vous-même pour approfondir l’analyse et apporter des solutions

Les scanners de vulnérabilité sont particulièrement efficaces pour le fuzzing, qui consiste à tester des programmes en leur fournissant des données non valides, inattendues ou aléatoires. Ces outils peuvent brouiller automatiquement les points de terminaison de manière bien plus performante que ce que je pourrais réaliser manuellement. Je conseille donc aux autres testeurs d’exploiter pleinement leur potentiel. Cela vous fera gagner un temps précieux en évitant de devoir vérifier chaque élément manuellement et en mettant en lumière les domaines nécessitant une analyse plus approfondie.

N’ayez pas peur de l’automatisation ! Prenez le temps d’apprendre à l’utiliser, comprenez son fonctionnement et recourez à des outils fiables. Vous avez même la possibilité de développer vos propres outils. Ne sous-estimez surtout pas cette approche, car la réalité est que, sans elle, vous risquez de prendre du retard face à l’ampleur des applications que nous devons analyser dans des délais serrés.


Essayez cette idée « évidente » !

Rien n’est trop évident pour être testé, et c’est l’un de mes conseils les plus importants pour les nouveaux testeurs. Vous seriez surpris de voir à quelle fréquence une vérification d’un élément apparemment trivial révèle des informations précieuses. Il est essentiel d’écouter cette petite voix intérieure qui peut vous inciter à ignorer ce que vous considérez comme un test ‘évident’. Dans le pire des cas, vous aurez au moins effectué une vérification. Personnellement, j’ai constaté que jouer avec des idées qui semblent absurdes au départ peut souvent mener à des découvertes intéressantes.

Lorsque vous êtes confronté à quelque chose de complexe (ce qui arrive fréquemment dans ce domaine), adoptez une approche simple en décomposant la tâche en étapes claires. Intégrez ensuite ces étapes ‘évidentes’ dans votre méthodologie, car elles pourraient représenter des aspects que d’autres négligent.

Pour compléter ce conseil, je souligne un autre domaine où l’automatisation peut être bénéfique. L’un des grands atouts de l’automatisation est qu’elle permet de tester rapidement et facilement des idées ‘insensées’. Grâce à l’automatisation, vous pouvez exécuter des tests sans y penser. S’ils ne donnent rien, vous n’avez rien perdu. Mais si un résultat se manifeste, c’est un vrai coup de chance ! Vous aurez découvert quelque chose que tout le monde considérait comme indigne d’intérêt.


Prendre du recul et réfléchir

Il est essentiel de remettre en question vos hypothèses. Personnellement, j’ai souvent l’habitude de les exprimer à voix haute, que ce soit pour moi-même ou pour le canard en caoutchouc le plus proche. Je sais, cela peut sembler étrange, mais il existe une technique bien connue en développement logiciel appelée ‘débogage au canard en caoutchouc’, où l’on explique son problème à un objet inanimé ou à quelqu’un qui ne comprend pas le sujet. En formulant le problème de manière simple, il devient plus facile de repérer une erreur de logique ou de réaliser que votre hypothèse est incorrecte.

Un autre conseil clé, qui peut paraître évident, est de prendre du recul et de consulter la documentation — puis de la vérifier à nouveau ! Lisez-la avant de commencer vos tests pour bien comprendre le fonctionnement de l’application, puis relisez-la au milieu du processus, lorsque vous commencez à faire des découvertes. Considérez la documentation comme un ‘guide pour le développement d’exploits’ afin d’en tirer le maximum d’avantages.


Accepter la complexité

Le syndrome de l’imposteur est une expérience commune que beaucoup d’entre nous traversent au cours de leur carrière. Même avec une certaine expérience, je me retrouve encore à en ressentir les effets ! Pour de nombreuses personnes, ce sentiment persiste, peu importe les réalisations. La réalité est que notre travail est complexe et exigeant, et il est donc naturel de ressentir cela.

Si vous vous sentez dépassé, sachez que vous êtes probablement au bon endroit. Acceptez cette complexité et lancez-vous dans l’apprentissage de cette nouvelle technique qui vous intimide. Testez les fonctionnalités les plus difficiles et n’oubliez pas de vous amuser dans le processus. Vous pourriez bien découvrir une vulnérabilité critique que d’autres testeurs ont négligée.


Cherchez toujours à obtenir un impact maximal

Les vulnérabilités critiques peuvent être non seulement faussement identifiées, mais aussi non découvertes. Il est essentiel de bien comprendre ce qui est possible dans l’application ; la question du ‘comment les exploiter‘ vient par la suite. Vous ne maximiserez pas votre impact en vous laissant porter par les événements. Lisez, recherchez, écoutez et répétez. Il y a toujours de nouvelles informations à découvrir, et vous serez surpris de voir à quelle fréquence des éléments inédits émergent, modifiant ainsi votre perception d’un sujet.

Je conseille également aux testeurs de toujours chercher à relier les vulnérabilités entre elles. Enchaînez, enchaînez encore, puis réfléchissez à d’autres connexions possibles. Vous pourriez déceler de petits détails qui, pris isolément, ne justifieraient pas d’être signalés au client, mais qui pourraient avoir un impact significatif lorsqu’ils sont examinés dans une perspective plus globale.

Si les conseils de ce blog vous ont été utiles, vous pouvez consulter ma présentation complète à Bsides Exeter ici, qui contient un aperçu des vulnérabilités récemment découvertes.

Votre organisation a-t-elle besoin d’aide pour tester ses applications web ? Contactez notre équipe d’experts qui se fera un plaisir de vous aider.