Loading
_ DESCIFRANDO CONEXIÓN SEGURA...

XSS almacenado

4 tareas · 20 min · Principiante

El XSS reflejado de la sala anterior necesita que alguien haga clic en un enlace preparado. El almacenado es peor: la entrada sin codificar se guarda en la aplicacion y se le sirve a cada visitante que abre la pagina, sin que nadie tenga que caer en una trampa. En Boletia los comentarios se guardan y se pintan sin codificar. Se localiza, se clasifica y se arregla; no se escribe ningun codigo de ataque.

0 de 4 · 0%

Objetivo de la sala

El XSS reflejado de la sala anterior necesita que alguien haga clic en un enlace preparado. El almacenado es peor: la entrada sin codificar se guarda en la aplicacion y se le sirve a cada visitante que abre la pagina, sin que nadie tenga que caer en una trampa. En Boletia los comentarios se guardan y se pintan sin codificar. Se localiza, se clasifica y se arregla; no se escribe ningun codigo de ataque.

El XSS reflejado vive en un enlace: solo afecta a quien hace clic en una URL preparada. El almacenado se guarda en la base de la aplicacion —aqui, un comentario— y se le sirve a todo el que abre la pagina donde se pinta. No hace falta enganar a nadie para que visite un enlace raro: la pagina normal ya trae el marcado dentro. Por eso el auditor le pone, a igualdad de lo demas, mas severidad que al reflejado.

Mira de donde sale el texto que se pinta: no de la URL de esta visita, sino de algo que se guardo antes.

Esta tarea se hace en el laboratorio

Un escritorio Linux con terminal, aquí en la página. No instalas nada y no puedes romper nada.

Preparando el escritorio…

Responde para continuar

Por que un XSS almacenado suele ser mas grave que uno reflejado?

Ver pista de ayuda

Piensa a cuanta gente llega cada variante y quien tiene que hacer clic en algo.

El reflejo esta en comentarios.php: el texto del comentario se guarda tal cual y, cuando se listan los comentarios, se imprime en el HTML sin codificar. El punto donde se corrige no es la escritura sino la lectura: la salida se codifica cuando se pinta, porque el mismo dato puede ser legitimo guardado y peligroso al mostrarse. Codificar solo a la entrada deja huecos —hay sitios donde el dato aparece sin pasar por esa puerta—; codificar al pintar cubre cada salida.

El auditor confirma el fallo con la evidencia: la pagina guardada muestra que el comentario volvio dentro del HTML sin convertirse en texto.

Esta tarea se hace en el laboratorio

Un escritorio Linux con terminal, aquí en la página. No instalas nada y no puedes romper nada.

Preparando el escritorio…

Responde para continuar

En comentarios.php, donde debe actuar el arreglo para cerrar el XSS almacenado?

Ver pista de ayuda

El mismo dato puede ser inofensivo guardado y peligroso al mostrarse; se codifica donde se muestra.

A veces el campo si debe aceptar algo de formato —negritas, enlaces— y codificar todo lo rompe. Para ese caso el arreglo no es codificar a ciegas sino sanear con una libreria que deje pasar una lista blanca de etiquetas seguras y elimine el resto, en especial el script. El auditor distingue los dos casos: texto plano se codifica entero; texto con formato se sanea con lista blanca. Lo que nunca se hace es confiar en el navegador para que decida que es seguro.

Escribir una lista negra de etiquetas peligrosas a mano es la trampa de siempre: siempre falta una forma de colar un script.

Esta tarea se hace en el laboratorio

Un escritorio Linux con terminal, aquí en la página. No instalas nada y no puedes romper nada.

Preparando el escritorio…

Responde para continuar

El campo de comentario debe permitir negritas y enlaces. Cual es el arreglo correcto?

Ver pista de ayuda

Con formato permitido no se codifica entero; se filtra por lo que SI se permite, no por lo que se prohibe.

El XSS almacenado tiene su propia nota de triaje en Boletia, con el archivo, el parametro, la clasificacion CWE-79 y el arreglo. Abrela en el laboratorio, confirma que describe el comentario que se pinta sin codificar y lee el codigo del hallazgo con el que cierra.

Esta tarea se hace en el laboratorio

Un escritorio Linux con terminal, aquí en la página. No instalas nada y no puedes romper nada.

Preparando el escritorio…

Responde para continuar

Abre la nota de triaje del XSS almacenado de Boletia (carpeta auditoria) y escribe el codigo del hallazgo que la cierra.

Ver pista de ayuda

Es la nota del comentario guardado, no la del buscador reflejado ni la del script del perfil.

Inicia sesión para registrar tus puntos y progreso en el ranking.

Preparando el escritorio…

16:24
Terminal (user@whoami)
user@whoami:~$
Tab Autocompletar ↑/↓ Historial
bash 5.2.21
Whoami-Labs OS v3.0.1 LTS · build bcc89e

Whoami-Labs Pro

Whoami-Labs Pro utiliza cookies

Utilizamos cookies y almacenamiento local para el funcionamiento del sitio, seguridad de sesión y, si lo autorizas, analítica y marketing. Puedes aceptar, rechazar o personalizar. Política de Privacidad