En el artículo anterior, aprendimos sobre los errores XSS (Cross Site Scripting) y la explotación real de XSS Reflected. Existe otro tipo de XSS que se considera más peligroso: el XSS almacenado.
A diferencia de Reflected, que ataca directamente a unas pocas víctimas objetivo de los piratas informáticos, Stored XSS apunta a más víctimas. Este error ocurre cuando la aplicación web no verifica minuciosamente los datos de entrada antes de guardarlos en la base de datos (aquí uso este concepto para referirme a la base de datos, archivo u otras áreas que almacenan datos de la aplicación web).
Con la técnica Stored XSS, los hackers no la explotan directamente sino que deben hacerlo en al menos 2 pasos.
En primer lugar, los piratas informáticos utilizan puntos de entrada sin filtrar (formulario, entrada, área de texto...) para insertar código peligroso en la base de datos.

A continuación, cuando el usuario acceda a la aplicación web y realice operaciones relacionadas con estos datos guardados, el código del hacker se ejecutará en el navegador del usuario.
![Web8: Explotaciones XSS - Parte 2: XSS almacenado Web8: Explotaciones XSS - Parte 2: XSS almacenado]()
Llegados a este punto, el hacker parece haber conseguido su objetivo. Por este motivo, la técnica Stored XSS también se denomina XSS de segundo orden.
El escenario de explotación se describe a continuación:
![Web8: Explotaciones XSS - Parte 2: XSS almacenado Web8: Explotaciones XSS - Parte 2: XSS almacenado]()
El XSS reflejado y el XSS almacenado tienen dos diferencias principales en el proceso de ataque.
- Primero, para explotar Reflected XSS, el hacker debe engañar a la víctima para que acceda a su URL. En cuanto al Stored XSS, no es necesario hacer esto: después de insertar el código peligroso en la base de datos de la aplicación, el hacker sólo tiene que esperar a que la víctima acceda automáticamente a él. Para las víctimas, esto es completamente normal porque no saben que los datos a los que acceden han sido infectados.
- En segundo lugar, el objetivo del hacker será más fácil de lograr si en el momento del ataque la víctima todavía está en la sesión de la aplicación web. Con Reflected XSS, un hacker puede convencer o engañar a la víctima para que inicie sesión y acceda a la URL que proporciona para ejecutar código malicioso. Pero Stored XSS es diferente, porque el código malicioso se ha almacenado en la base de datos web, por lo que cada vez que el usuario accede a funciones relacionadas, se ejecutará el código malicioso y lo más probable es que estas funciones requieran autenticación. Inicie sesión primero, por lo que obviamente durante este tiempo el usuario todavía está en la sesión.
De estas cosas, se puede ver que Stored XSS es mucho más peligroso que Reflected XSS, los sujetos afectados pueden ser todos los usuarios de esa aplicación web. Y si la víctima tiene una función administrativa, también existe el riesgo de secuestro web.