Una de las formas en que se puede explotar XSS es usar la siguiente etiqueta:
"><script>alert(document.cookie)</script>
Aquí, ¿cuál es el significado de ">
antes del script (etiqueta <script>
) y por qué se utiliza?
De esta manera, se escapa de un atributo de doble comilla ( "
) y cierra la etiqueta anterior ( >
) antes de abrir una etiqueta de script que contenga su carga útil. Es uno de los patrones XSS más básicos.
Ejemplo:
<input type="text" value="$XSS">
Con tu secuencia se convierte en:
<input type="text" value=""><script>alert(document.cookie)</script>"> ^- a completed tag ^- payload garbage -^
Tenga en cuenta que su vector solo funciona si las entidades HTML no se filtran.
Entonces, si no puedes escapar de ese atributo, es seguro para XSS. Esto no se activa:
<input type="text" value="<script>alert(document.cookie)</script>">
Puede ver la misma idea con XSS dentro de Javascript (por ejemplo, ');
para finalizar una cadena y una llamada de función) o con inyecciones de SQL. Los primeros caracteres de una secuencia de inyección a menudo tienen el propósito de escapar del contexto actual.
En cuanto a la obligatoria tira de inyección de xkcd de SQL de @ Mindwin , circulé libremente la parte a la que me refiero:
Lea otras preguntas en las etiquetas xss