Post

Cross-Site Scripting (XSS)

Las vulnerabilidades HTML Injection a menudo se pueden utilizar para realizar Cross-Site Scripting (XSS) inyectando código JavaScript que se ejecutará en el lado del cliente. Una vez que podamos ejecutar código en la máquina de la víctima, potencialmente podremos obtener acceso a la cuenta de la víctima o incluso a su máquina. En la práctica XSS es muy similar a HTML Injection. Sin embargo, XSS implica la inyección de código JavaScript para realizar ataques más avanzados en el lado del cliente, en lugar de simplemente inyectar código HTML. Hay tres tipos principales de XSS:

TipoDescripción
Reflected XSSOcurre cuando la entrada del usuario se muestra en la página después del procesamiento (por ejemplo, resultado de búsqueda o mensaje de error).
Stored XSSOcurre cuando la entrada del usuario se almacena en la base de datos de back-end y luego se muestra al recuperarla (por ejemplo, publicaciones o comentarios).
DOM XSSOcurre cuando la entrada del usuario se muestra directamente en el navegador y se escribe en un objeto HTML DOM (por ejemplo, nombre de usuario vulnerable o título de página).

Podemos intentar inyectar el siguiente código Javascript DOM XSS como payload, que debería mostrarnos el valor de la cookie para el usuario actual:

1
#"><img src=/ onerror=alert(document.cookie)>

Una vez que ingresamos nuestro payload y presionamos ok, vemos que aparece una ventana de alerta con el valor de la cookie:

Impacto

Un atacante puede aprovechar esto para robar sesiones de cookies y enviárselas a sí mismo e intentar utilizar el valor de la cookie para autenticarse en la cuenta de la víctima. El mismo ataque se puede utilizar para realizar varios tipos de otros ataques contra los usuarios de una aplicación web.

This post is licensed under CC BY 4.0 by the author.