Question:
Que pourrait faire un XSS "
user1910744
2016-09-01 05:42:30 UTC
view on stackexchange narkive permalink

La plupart des WAF lors du blocage de XSS bloquent les balises évidentes telles que script et iframe , mais ils ne bloquent pas img .

En théorie, vous pouvez img src = 'URL OFFSITE' , mais qu'est-ce qui peut arriver de pire? Je sais que vous pouvez voler des adresses IP avec, mais c'est tout?

Exemple de ce que signifie @grochmal avec les bibliothèques de rendu: vous pouvez attaquer certaines très anciennes versions non corrigées de Windows avec la [vulnérabilité Metafile] (https://en.wikipedia.org/wiki/Windows_Metafile_vulnerability) présente.
`` Cela enverra une requête GET à ce domaine, en passant tous les cookies, comme les sessions, que vous avez stockés.Si cela fonctionne, c'est principalement la faute de votre banque, car ces actions ne devraient pas se produire dans une requête GET.
^ Pas vraiment parce qu'ils se produisent dans une requête GET.Plus comme: parce que le site Web de la banque est vulnérable aux attaques CSRF.
Huit réponses:
Blender
2016-09-01 11:19:06 UTC
view on stackexchange narkive permalink

Firefox (corrigé dans Nightly 59.0a1), Safari (corrigé dans Safari Technology Preview 54), Edge et Internet Explorer affichent une boîte de dialogue d'authentification si vous demandez une image et le serveur vous demande de vous authentifier avec l'authentification HTTP Basic. Cela permet à un attaquant d'afficher une boîte de dialogue d'authentification lorsque le navigateur d'un utilisateur tente de charger l'image:

  • Firefox . Correction à partir de Nightly 59.0a1, mais l'avertissement présent dans la dernière version stable:

    Firefox displaying an "Authentication Required" dialog

  • Safari . Corrigé à partir de Safari Technology Preview 54, mais le modal est toujours présent dans la dernière version stable. Notez qu'il s'agit d'une boîte de dialogue modale et que le reste du site Web est grisé. "Vos informations de connexion seront envoyées en toute sécurité" est également techniquement vrai mais peut donner à un utilisateur imprudent une mauvaise impression:

    Safari displaying a modal authentication dialog

  • IE11 . Une boîte de dialogue Windows native verrouille tout le navigateur:

    IE11 displaying a native dialog

Si vous créez le domaine une très longue chaîne de a \ ta \ ta \ t ... a \ t , IE11 se verrouille complètement.

Un nom de domaine et un domaine bien choisis peut inciter les utilisateurs à envoyer leurs noms d'utilisateur et mots de passe au serveur d'un attaquant, ou rendre votre site Web complètement inaccessible.

Peut être.C'est un peu dans le même domaine que quelqu'un qui a mal tapé le nom de domaine et qui a quand même terminé le serveur du méchant.
C'est ce qu'on appelle une attaque de phishing 401.
@Xander une référence?Une simple recherche sur Google "attaque de phishing 401" ne renvoie aucune bonne information.
@HamZa Utilisez plutôt "401 phishing" (entre guillemets).Un certain nombre des anciennes références (en ligne) semblent avoir disparu au fil des ans, mais il reste encore un certain nombre de références plus récentes.Vous pouvez bien sûr toujours le trouver dans la littérature imprimée, même si je n'ai pas de référence par hasard.
J'ai trouvé ce genre d'attaque de bogue / phishing sur le domaine google.com et ils m'ont dit qu'ils ne le considéraient pas comme un bogue de sécurité.
Les programmes de primes de bogues @ThomasOrlita sont notoirement rigides sur ce qui constitue une vulnérabilité dans le champ d'application.
Quelqu'un peut-il confirmer si cela fonctionne toujours?Mon IE 11 ne me demande pas le violon lié.
grochmal
2016-09-02 01:12:34 UTC
view on stackexchange narkive permalink

Comme le dit Anders: Blender fait un très bon point sur les dialogues d'authentification, et multithr3at3d a raison sur les attributs on. De plus, Anders ajoute des arguments sur la balise a et Matija a un bon lien sur l'exploitation des bibliothèques faisant le rendu.

Pourtant, personne a encore parlé de SVG.

Tout d'abord, supposons que toutes les entrées et sorties sont correctement nettoyées, donc les astuces avec onerror / onload sont pas possible. Et que nous ne sommes pas intéressés par le CSRF. Nous sommes après XSS.

La première préoccupation concernant <img src = est qu'il ne suit pas la même politique d'origine. Mais c'est probablement moins dangereux qu'il n'y paraît.

Ce que fait le navigateur pour afficher une balise < img >

< img src = "http: // domaine / image .png "> est assez sûr car le navigateur n'invoquera pas un analyseur (par exemple un analyseur XML ou HTML), il sait que ce qui va venir est une image (gif, jpeg, png).

Le navigateur effectuera la requête HTTP, et il lira simplement le MIME de ce qui est venu (dans l'en-tête Conetent-Type , par exemple image / png ). Si la réponse n'a pas de Content-Type , plusieurs navigateurs devineront en fonction de l'extension, mais ils ne devineront que les MIME d'image: image / jpeg , image / png ou image / gif (tiff, bmp et ppm sont douteux, certains navigateurs peuvent avoir un support limité pour les deviner). Certains navigateurs peuvent même essayer de deviner le format d'image basé sur des nombres magiques, mais encore une fois, ils n'essaieront pas de deviner les formats ésotériques.

Si le navigateur peut correspondre au MIME (éventuellement deviné), il charge le rendu correct bibliothèque, les bibliothèques de rendu peuvent avoir un débordement mais c'est une autre histoire. Si le MIME ne correspond pas à une bibliothèque de rendu d'image, l'image est supprimée. Si l'appel de la bibliothèque de rendu échoue, l'image est également supprimée.

Le navigateur n'est même jamais proche d'un contexte d'exécution (script). La plupart des navigateurs n'entrent dans le contexte d'exécution qu'à partir de l'analyseur javascript, et ils ne peuvent accéder à l'analyseur javascript qu'à partir de application / javascript MIME ou des analyseurs XML ou HTML (car ils peuvent avoir des scripts intégrés).

Pour exécuter XSS, nous avons besoin d'un contexte d'exécution. Entre SVG.

Utilisation d'< img src = "domain / blah / blah / tricky.svg" >

Aïe, aïe aïe. SVG est un format graphique vectoriel basé sur XML, il appelle donc l'analyseur XML dans le navigateur. De plus, SVG a la balise <script> ! Oui, vous pouvez intégrer du javascript directement dans SVG.

Ce n'est pas aussi dangereux qu'il y paraît au début. Les navigateurs qui prennent en charge SVG dans les balises <img> ne prennent pas en charge les scripts dans le contexte. Idéalement, vous devriez utiliser SVG dans les balises <embed> ou <object> où les scripts sont pris en charge par les navigateurs. Pourtant, ne le faites pas pour le contenu fourni par l'utilisateur!

Je dirais qu'autoriser SVG à l'intérieur de <img src = peut être dangereux:

  • Un analyseur XML est utilisé pour analyser le SVG, qu'il soit à l'intérieur de la balise <img> ou <object> . L'analyseur est certainement modifié avec certains paramètres pour ignorer les balises <script> dans le contexte <img> . Pourtant, c'est assez moche, c'est mettre sur liste noire une balise dans un certain contexte. Et la mise sur liste noire est une mauvaise sécurité.

  • <script> n'est pas le seul moyen de réaliser le contexte d'exécution en SVG, il existe également le onmouseover (et famille) événements présents en SVG. C'est encore une fois difficile de mettre sur liste noire.

  • L'analyseur XML dans les navigateurs a souffert de problèmes dans le passé, notables avec les commentaires XML autour des blocs de script. SVG peut présenter des problèmes similaires.

  • SVG a un support complet pour les espaces de noms XML. Aïe encore. xlink: href est une construction complètement valide en SVG et le navigateur dans le contexte de l'analyseur XML la suivra probablement.

Donc oui, SVG s'ouvre plusieurs vecteurs possibles pour réaliser le contexte d'exécution. Et de plus, c'est une technologie relativement nouvelle et donc pas bien durcie. Je ne serais pas surpris de voir des CVE sur la gestion des SVG. Par exemple, ImageMagick a rencontré des problèmes avec SVG.

C'est l'une des raisons pour lesquelles je m'abonne à «tout refuser», et plus encore.:) Attrape les bordures comme ça.
Accepté car cela semble définitivement le "pire" que vous puissiez faire avec ce XSS.
@user1910744 - Eh bien, SVG est assez nouveau et évolue très rapidement.Bien que je ne connaisse aucun CVE lié au navigateur pour SVG, le nombre de choses qui peuvent mal tourner est tellement grand qu'il doit y avoir quelque chose.Si j'avais réussi à obtenir un financement pour chasser les bogues dans le contexte de la sécurité du navigateur, SVG serait le premier endroit où je me pencherais.
Pourquoi un analyseur XML saurait-il interpréter JavaScript ou réagir aux événements?Cette affirmation vient-elle d'une expérience personnelle dans la construction d'un navigateur ou s'agit-il d'une supposition sauvage sur l'architecture interne du navigateur qui peut ou non se révéler correcte?
Votre dernier point sur l'attribut `xlink: href` est déjà couvert par les spécifications, aucun contenu externe ne peut être chargé à partir d'un contenu img => xlink: href dans une balise` `ne peut référencer que des ressources internes.
-1
Merci @grochmal:.Je ne vois toujours pas pourquoi ils auraient besoin de mettre les balises sur liste noire alors que la plupart des bibliothèques semblent implicitement concerner la liste blanche (en ajoutant des rappels qui réagissent explicitement sur certaines balises), même si elles réutilisent le même analyseur XML que celui utilisé pour XHTML (qui estpas nécessaire, car pour XHTML, vous voudrez peut-être quelque chose de plus spécifique).Je suppose que "ça marche juste" est venu à nouveau de bonnes pratiques de développement et de sécurité si tel est le cas: x
@MatthieuM.- Je veux dire la liste noire parce que le code «nous analysons SVG => found
Loading...