XSS dans une affectation de variable lorsque <> "est échappé
SCÉNARIO:
l'entrée de l'utilisateur est reflétée dans une variable. Par exemple
url.com/?a=hello
se reflète comme indiqué ci-dessous
var test="hello";
J'ai essayé d'échapper à la variable avec une charge utile comme hello";ou hello%22;ou hello%2522;mais sans succès. Tous ces caractères sont reflétés sans encodage: .[]{};:{}\/?|_-+je peux donc les utiliser
Existe-t-il une autre façon d'exploiter cette situation?
Réponses
Non, sans tenir compte du comportement de filtre que vous avez spécifié.
Vous avez besoin de guillemets doubles (
") pour quitter le contexte de chaîne JS.Vous avez besoin de crochets (
<>) pour quitter la<script>balise qui, je suppose, entoure le code.Vous pouvez utiliser une barre oblique inverse (
\) à la fin de la chaîne pour échapper au guillemet de fermeture, mais vous auriez besoin d'un autre point d'injection sur la même ligne pour faire quelque chose d'utile avec cela. Sinon, vous ne pouvez pas fermer la chaîne que vous avez maintenue ouverte, et l'analyseur JS lancera une erreur de syntaxe, ce qui implique qu'il n'exécute aucune partie du script.Voici comment une attaque fonctionnerait avec deux points d'injection.
Code:
var test="hello"; var test2="stranger";Vecteurs:
\ ;alert()//Résultat:
var test="\"; var test2=";alert()//"; |--------------| |--| one continuous string comment