web-dev-qa-db-fra.com

Des exemples de XSS que je peux utiliser pour tester ma saisie de page?

J'ai eu des problèmes avec XSS. Plus précisément, j'ai reçu une alerte JS d'injection individuelle indiquant que mon entrée comportait des vulnérabilités. J'ai fait des recherches sur XSS et trouvé des exemples mais pour une raison quelconque, je ne peux pas les faire fonctionner.

Puis-je obtenir des exemples de XSS que je peux jeter dans mon entrée et quand je le renvoie à l'utilisateur, voir une sorte de changement comme une alerte pour savoir qu'il est vulnérable?

J'utilise PHP et je vais implémenter htmlspecialchars () mais j'essaie d'abord de reproduire ces vulnérabilités.

Merci!

22
KRB

Vous pouvez utiliser cet addon firefox:

XSS-Me est l'outil Exploit-Me utilisé pour tester le Cross-Site Scripting (XSS) réfléchi. Il ne teste PAS actuellement les XSS stockés.

L'outil fonctionne en soumettant vos formulaires HTML et en remplaçant la valeur du formulaire par des chaînes représentatives d'une attaque XSS. Si la page HTML résultante définit une valeur JavaScript spécifique (document.vulnerable = true), l'outil marque la page comme vulnérable à la chaîne XSS donnée. L'outil ne tente pas de compromettre la sécurité du système donné. Il recherche les points d'entrée possibles pour une attaque contre le système. Il n'y a aucune analyse de port, reniflement de paquets, piratage de mot de passe ou attaques de pare-feu effectuées par l'outil.

Vous pouvez penser que le travail effectué par l'outil est le même que les testeurs AQ pour le site saisissant manuellement toutes ces chaînes dans les champs du formulaire.

14
Sarfraz

Par exemple:

<script>alert("XSS")</script>
"><b>Bold</b>
'><u>Underlined</u>
4
ComFreek

Il est très bon d'utiliser certains des outils automatisés, mais vous n'en tirerez aucun aperçu ou expérience.

Le point d'attaque XSS est d'exécuter du javascript dans une fenêtre de navigateur qui n'est pas fournie par le site. Donc, vous devez d'abord regarder dans quel contexte les données fournies par l'utilisateur sont imprimées sur le site Web; il peut être dans le bloc de code <script></script>, il peut être dans le bloc <style></style>, il peut être utilisé comme attribut d'un élément <input type="text" value="USER DATA" /> ou par exemple dans un <textarea>. En fonction de cela, vous verrez quelle syntaxe vous utiliserez pour échapper au contexte (ou l'utiliser); par exemple, si vous vous trouvez dans les balises <script>, il peut être suffisant de fermer la paréthèse d'une fonction et de terminer la ligne par un point-virgule, de sorte que l'injection finale ressemblera à ); alert(555);. Si les données fournies sont utilisées comme un attribut html, l'injection pourrait ressembler à " onclick="alert(1)" ce qui provoquera l'exécution de js si vous cliquez sur l'élément (cette zone est riche pour jouer avec en particulier avec html5). Le fait est que le contexte du xss est aussi important que toutes les fonctions de filtrage/désinfection qui pourraient être en place, et il peut souvent y avoir de petites nuances que l'outil automatisé ne saisira pas. Comme vous pouvez le voir ci-dessus même sans guillemets et balises html, dans un nombre limité de circonstances, vous pourriez être en mesure de contourner les filtres et d'exécuter js.

Il faut également considérer l'encodage du navigateur, par exemple, vous pourriez être en mesure de contourner les filtres si le navigateur cible a un encodage utf7 (et vous encodez votre injection de cette façon). L'évasion des filtres est une toute autre histoire, mais les fonctions actuelles de PHP sont assez à l'épreuve des balles, si elles sont utilisées correctement.

Voici également une liste assez longue de vecteurs XSS

Enfin, voici un exemple réel d'une chaîne XSS qui a été trouvée sur un site, et je vous garantis que pas un seul scanner n'aurait trouvé cela (il y avait divers filtres et listes noires Word, la page permettait d'insérer de base formatage html pour personnaliser votre page de profil):

<a href="Boom"><font color=a"onmouseover=alert(document.cookie);"> XSS-Try ME</span></font>

4
cyber-guard

Les tests ad hoc sont OK, mais je recommande également d'essayer un outil d'analyse de vulnérabilité des applications Web pour vous assurer que vous n'avez rien oublié.

acunetix est assez bon et a un essai gratuit de leur application:

http://www.acunetix.com/websitesecurity/xss.htm

(Notez que je n'ai aucune affiliation avec cette entreprise, cependant j'ai utilisé le produit pour tester mes propres applications).

1
JJ.