2010-07-21 1 views
3

J'ai entendu dire que certaines attaques XSS peuvent être faites en postant une image sur un site qui a javascript comme attribut src. Y a-t-il des navigateurs qui me protègent contre ce type d'attaque?Quels navigateurs permettent à javascript d'être la source des tags d'image?

+1

Vous pouvez également faire une attaque XSRF ("sea-surf") en faisant pointer l'attribut 'src' sur certaines URL. http://en.wikipedia.org/wiki/Cross-site_request_forgery – sigint

Répondre

3

De http://ha.ckers.org/xss.html:

image XSS en utilisant la directive JavaScript (IE7.0 ne supporte pas la directive JavaScript dans le contexte d'une image, mais elle le fait dans d'autres contextes, mais les éléments suivants montrent les principes qui fonctionnerait dans d'autres étiquettes aussi bien - je corrigerai probablement ce à une date ultérieure):

<IMG SRC="javascript:alert('XSS');"> 

support du navigateur: [IE7.0 | IE6.0 | NS8.1-IE] [NS8.1-G | FF2.0] [O9.02]

+0

+1 aah donc il a été patché. – rook

+0

Il suffit d'écrire la même chose ... :) Un bon! –

1

Je ne sais pas sur quels navigateurs détectent mais voici comment empêcher:

  • nécessitant une authentification dans les paramètres GET et POST, non seulement les cookies;
  • Vérification de l'en-tête HTTP Referer;
  • assurer il n'y a pas de fichier crossdomain.xml donnant accès involontaire aux films Flash
  • Limiter la durée de vie des cookies d'authentification
  • Lors du traitement d'un POST, les paramètres d'URL ne tenez pas compte si vous savez qu'ils devraient provenir d'une forme
  • nécessitant une le jeton secret, spécifique à l'utilisateur, dans toutes les soumissions de formulaire et les URL à effets secondaires empêche CSRF; le site de l'attaquant ne peut pas mettre le bon jeton dans ses soumissions.

Source: http://en.wikipedia.org/wiki/Cross-site_request_forgery#Prevention

0

Je sais que pas de navigateur permet javascript à exécuter dans l'attribut src= d'une balise d'image. Si un navigateur a fait cela, il s'agit d'une vulnérabilité dans le navigateur, un numéro CVE doit être émis pour ce navigateur et il sera corrigé. Editer:I have tested this against the most recent IE8, chrome and firefox, and they have all patched this issue. Si vous êtes encore vulnérable à cela alors vous avez BEAUCOUP de plus gros problèmes sur vos mains car un attaquant sera capable de faire exploser une coquille sur votre boîte. Toutefois, <img src=img.jpg onload="alert(/xss/)"/> peut être utilisé pour exécuter javascript. Ainsi, si un attaquant peut contrôler une partie de la source, il pourrait injecter une chaîne comme celle-ci: src="fake.jpg" onload="alert(/xss/)". C'est pourquoi htmlspeicalchars($image_location,ENT_QUOTES); devrait être utilisé au lieu de htmlspecialchars($image_location). Une autre approche consiste à utiliser Html Purifier qui est capable de supprimer javascript comme ça automatiquement.

Si vous souhaitez protéger votre propre navigateur de XSS, vous devez utiliser noscript.

Autoriser les balises d'image pourrait être utilisé pour exploiter XSRF basé sur GET. Ceci est particulièrement mauvais si le logiciel effectue seulement une vérification de référence. Cependant, la plupart des applications utilisent une protection xsrf basée sur des jetons, ce qui rend les requêtes immunisées contre cette attaque. Cependant, votre site pourrait être utilisé pour attaquer des sites d'autres personnes avec des requêtes GET falsifiées mais ce n'est pas une menace très sérieuse. Une méthode de protection consiste à s'assurer qu'il existe réellement une image à cet emplacement et à rejeter la balise img si aucune image n'existe.

+1

Etes-vous sûr? Parce que selon http://elf.org/essay/inline-image.html, il y avait un temps au moins dans le passé où vous pouviez utiliser le schéma d'URL 'javascript:' pour alimenter les données d'image ... –

+1

@Weston C Oui, je suis 100% à ce sujet, ce à quoi cet article fait référence est de taper 'javascript: alert ('js!')' Dans votre barre d'adresse. Si vous ne me croyez pas, essayez d'écrire un fichier .html avec un tag d'image qui contient 'javascript:'. – rook

+0

Je vais devoir être en désaccord @Rook. J'ai vu cela mentionné dans plusieurs endroits. De ce que je peux dire c'était seulement un problème il y a quelques années donc je suppose que seuls les navigateurs plus anciens ont cette vulnérabilité, mais ce serait bien d'avoir une liste. –

1

Mozilla Firefox avec addon NoScript. Essentiellement, vous oblige à exécuter manuellement javascripts à partir de sources inconnues.

+0

cool je vous donnerais un +1 si je ne l'ai pas déjà posté. – rook

Questions connexes