/

Que es un ataque xss (cross site scripting)

Created 2020-07-18 Modifyed 2020-07-18
362 Words

Hoy vamos a estudiar en que consiste un ataque xss.

Cross site scripting o xss es un tipo de ataque de inyección. Un script malicioso es introducido en el sistema normalmente a través de un input de texto, en el que no se validan los datos introducidos.

Para verlo de una forma más clara, pongamos un ejemplo.

Imaginad, que en un foro, un usuario escribe un post como el siguiente:

Estoy de acuerdo con la respuesta anterior  // comentario normal y corriente
<script>                                    //script malicioso
browser.cookies.getAll().then(result=>{     //script malicioso
    sendStolenCookiesToMyServer()           //script malicioso
})                                          //script malicioso

sendStolenCookiesToMyServer(){              //script malicioso
    ...                                     //script malicioso
}
</script>                                   //script malicioso

En este caso, si no hemos validado que en los post que escriben los usuarios no se permita la ejecución de código javascript, cuando un usuario cargue la página donde está ese comentario del usuario atacante, automaticamente se ejecutará el script y enviará la información de las cookies de ese usuario al servidor del atacante, habiendole robado así la información contenida en las cookies

El navegador del usuario final, no tiene forma de saber si el script recibido es benigno o maligno y lo ejecutará. Al ejecutar ese script malicioso, el atacante tiene acceso a cualquier cookie, sesión o cualquier información retenida por el navegador.

Hay que recordar, que cuando entras en el dominio abc.com, el navegador sólo tiene acceso a las cookies de ese mismo dominio (abc.com), con lo que el atacante sólo podrá robar a esas cookies mediante un xss si tu web es vulnerable a ese tipo de ataques. En cambio, puedes acceder a toda la información del localstorage, por eso es muy mala idea guardar información sensible en localstorage.

En este supuesto (guardas un token en localstorage en vez de en una cookie), la información del localstorage no solo es sensible si hacen un xss contra tu dominio (tupaginaweb.com, en este caso el atacante podría acceder a las cookies de tu dominio), sino que ese token es accesible desde cualquier otro sitio que sea vulnerable a un ataque xss). Es decir, hacen un xss a otraweb.com, y le roban a tu usuario el token de validación de abc.com.