Introduction
De manière générale, lorsqu’on cherche des vulnérabilités sur un site web, on pense immédiatement aux outils : outils d’énumération, de reconnaissance, de scan ou d’exploitation. Ces outils font partie du quotidien des pentesters et des bug bounty hunters. Ils permettent de gagner du temps, d’élargir le périmètre de test et d’être plus exhaustif.
Mais les outils ne font pas tout. Ils servent souvent à automatiser et à dégrossir, mais ils ne remplacent ni l’observation, ni la compréhension du fonctionnement d’une application, ni la réflexion humaine.
Dans cet article, j’aimerais vous parler d’une vulnérabilité qui m’a permis de gagner de l’argent en bug bounty sans utiliser le moindre outil, uniquement avec mon clavier, de la curiosité… et surtout une réflexion out of the box.
Penser out of the box ce n’est pas chercher quelque chose de complexe ou d’exotique. C’est plutôt d’accepter de sortir des chemins “classiques”, de ne pas se limiter aux scénarios attendus et de se demander “et si je faisais autrement ?”.
C’est précisément cette approche, simple mais différente, qui a permis de découvrir la vulnérabilité décrite dans cet article.
Petit rappel rapide : Le bug bounty désigne un ensemble de programmes mis en place par des entreprises, permettant à des chercheurs en sécurité de signaler des vulnérabilités en échange d’une récompense.
Contexte
Lors d’une session de bug bounty sur un programme privé, dont la cible était un site de consultation d’articles en ligne, une fonctionnalité attire rapidement mon attention : la section commentaires.
Le fonctionnement est simple :
- Les utilisateurs disposant d’un abonnement VIP peuvent commenter les articles.
- Pour les autres, l’accès aux commentaires est bloqué.
- Lorsqu’un utilisateur non abonné tente de poster un commentaire, un message ou une pop-up apparaît indiquant qu’il faut payer 3,99 € pour pouvoir commenter.
Pop-up bloquant l’accès aux commentaires sans abonnement payant
À première vue, le mécanisme paraît classique : une pop-up empêche les utilisateurs non légitimes de publier un commentaire. Cependant, le comportement de cette pop-up et sa manière d’interagir avec la page me semblent inhabituels, ce qui me pousse à examiner la fonctionnalité de plus près.
Exploitation
Je cherche d’abord à comprendre comment cette restriction fonctionne. Étant donné qu’il y a un enjeu financier direct (ici 3,99 €), je sais que l’impact métier peut être significatif, et donc que la vulnérabilité, si elle existe, peut avoir une réelle valeur.
J’essaie alors différents moyens de contourner la pop-up, sans succès. À ce stade, je ne cherche pas une exploitation complexe, mais simplement à comprendre ce qui déclenche réellement l’apparition de la pop-up. Je remarque rapidement que celle-ci apparaît uniquement lorsqu’on clique sur le champ de commentaire.
C’est à ce moment-là qu’une idée me vient, sans trop y croire au départ :
✨ utiliser uniquement le clavier, et notamment la touche Tab ✨
Cette touche permet de naviguer entre les éléments interactifs d’une page sans utiliser la souris. Je me pose alors une question simple : si le clic déclenche la pop-up, que se passe-t-il si j’accède au champ de commentaire sans cliquer ?
Je teste donc le scénario suivant :
- Je me rends sur un article sans être abonné.
- Je clique sur un élément autorisé de la page, qui ne déclenche pas la pop-up.
- J’appuie ensuite plusieurs fois sur la touche Tab de mon clavier, jusqu’à atteindre le champ de saisie du commentaire.
- Une fois le focus positionné sur le champ, je peux rédiger et soumettre un commentaire librement.
Saisie d’un commentaire en utilisant uniquement la navigation au clavier (touche Tab)
Enfin, je vérifie que le commentaire est bien publié et visible à la suite de l’article, sans aucun paiement effectué.
Le commentaire apparaît publié sans avoir payé l’abonnement de 3,99€
Ainsi, aucune injection, aucun outil, aucun script. Juste une mauvaise gestion du focus clavier et un contrôle d’accès reposant uniquement sur l’interface. En quelques secondes, il est possible de publier un commentaire alors que cette action est censée être strictement réservée aux abonnés payants.
Impact
Cette vulnérabilité peut sembler anodine, mais elle entraîne plusieurs risques réels :
- Risque métier : un manque à gagner direct pour l’entreprise, puisque la fonctionnalité payante peut être utilisée gratuitement.
- Risque d’abus : n’importe qui peut poster des commentaires sans contrôle, y compris du spam ou du contenu inapproprié.
- Risque de saturation : une publication massive de commentaires pourrait surcharger la page, voire impacter la disponibilité du service.
Dans ce cas précis, on est face à un problème de contrôle d’accès insuffisant, où la restriction est uniquement gérée côté interface, sans vérification robuste côté serveur.
Remédiation
Dans ce cas précis, pour corriger ce type de vulnérabilité, plusieurs bonnes pratiques doivent être mises en place :
- Vérifier les droits côté serveur, et non uniquement côté interface.
- S’assurer que l’action “poster un commentaire” est strictement réservée aux utilisateurs autorisés, indépendamment de ce qui est affiché à l’écran.
- Corriger la gestion du focus clavier pour empêcher toute interaction avec les éléments protégés.
- Tester les fonctionnalités avec des scénarios simples, y compris sans souris (navigation clavier, accessibilité).
Conclusion
Ce bug est un bon exemple de ce que j’aime dans le bug bounty et la sécurité offensive : il rappelle que hacker ne veut pas dire empiler des outils ou copier des commandes, mais comprendre, observer et réfléchir autrement.
Parfois, un simple clavier et un peu de logique suffisent pour trouver des vulnérabilités à fort impact.
Et pour la petite histoire, le client a jugé l’impact suffisamment important pour augmenter la sévérité, ce qui s’est traduit par une récompense plus élevée.
Le client a augmenté la sévérité de la vulnérabilité, entraînant une meilleure récompense
Comme quoi, le bon état d’esprit peut parfois faire toute la différence dans ce domaine.
La réflexion et l’observation valent parfois mieux que tous les outils du monde