Peut-être qu'un exemple concret aiderait à comprendre à quel point une faille de sécurité apparemment mineure, comme XSS, peut être dangereuse.
Dans le cadre d'une évaluation de sécurité, mon entreprise a été chargée d'essayer d'accéder au PDG personnel e-mails. J'ai réussi à obtenir son adresse e-mail personnelle via un OSint, maintenant on peut opter pour un spear phishing avec une version personnalisée de l'un des nombreux logiciels malveillants voleurs d'informations, mais j'ai prolongé un peu plus la phase de collecte d'informations.
Il s'est avéré que le PDG aimait les bateaux et il vendait l'un des leurs sur un site de vente de bateaux. Le site semble assez amateur, je me suis inscrit et je me suis un peu trompé. Et qu'ai-je trouvé? Le site vous permet de gérer votre mot de passe en préremplissant un champ de mot de passe avec le champ actuel, stimulé par cela, j'examine un peu plus le site. Je suis tombé sur une vulnérabilité XSS stockée: lorsque vous répondez à une offre, vous pouvez y mettre du code HTML arbitraire, y compris des scripts, et il sera exécuté dans le navigateur du lecteur!
Cela semble assez "inoffensif", n'est-ce pas? t-il? Et si vous le combinez avec la mauvaise gestion du mot de passe?
J'ai donc conçu un script qui a récupéré la page de mot de passe (c'est une requête intra-domaine, SOP est satisfait), extrait le mot de passe et les informations client (UA, OS et similaires) et envoyez-le à mon C&C. Puis instillé un sentiment d'envie au PDG en écrivant soigneusement un e-mail l'informant de mon "intention" d'acheter.
Au bout d'une journée, j'ai reçu le mot de passe utilisé pour se connecter sur le site des bateaux. Comme prévu, c'était le même mot de passe que celui utilisé pour leur e-mail (il n'y avait pas de 2FA, je ne me souviens pas si c'était encore une chose) et j'ai pu accéder au webmail (les informations du client ont été utilisées pour simuler un accès légitime , au cas où il serait nécessaire de faire profil bas).
Pour faire court, une attaque n'est pas une seule étape atomique, elle est faite de petites conquêtes. Si vous laissez la place à votre adversaire pour un pas, vous ne saurez jamais ce qu'il peut faire à partir de là. Un XSS est de la place pour l'attaquant, comme vous en avez vu pas mal.