Información Importante Sobre el Contenido

Estas accediendo al contenido antiguo del blog. Este artículo "Como NO se debe mitigar un Cross-Site Scripting (XSS), el ejemplo de ChileAtiende" es de dominio público y no será mantenido a futuro. Cualquier error o problema acerca del contenido por favor contactate conmigo desde la sección contacto.

logo_chileatiende_beta_2xDe acuerdo a su propia descripción, ChileAtiende es una red que busca acercar los servicios del Estado a las personas, entregando un conjunto de trámites de diferentes instituciones públicas, en un solo lugar.

Revisando rapidamente el sitio web, se puede ver que intentaron aplicar algunos controles de seguridad para prevenir ataques, sin embargo, se pueden evadir facilmente. Como ejemplo voy a tomar una inofensiva vulnerabilidad que afecta al buscador del sitio, alojado en buscador.chileatiende.cl.

chileatiendebus

Cuando buscamos alguna palabra “maliciosa” como por ejemplo <script>alert(/test/)</script>, podemos ver que hay algo que filtra la petición y remueve los caracteres maliciosos, reemplazandolos por la palabra [removed].

filterxss

Si revisamos el código fuente, vemos que efectivamente el value del input correspondiente a la búsqueda transforma los tags en [removed] y escapa los parentesis.

xsssource

La primera técnica de evasión es ver si escapa los caracteres especiales y (comilla simnple y doble)

xsssource2

¡Sorpresa! No los escapa. Esta es la primera prueba que el filtro que estan utilizando no sirve. Para explotar una vulnerabilidad Cross-Site Scripting se debe entender que la idea principal es inyectar código javascript y que se ejecute en el navegador, ojalá sin intervención de la víctima. Si bien lo más básico es incrustar un tag <script></script> con el código a ejecutar, existen otros métodos. Aparentemente los encargados de implementar esta protección no tenían claro las formas de explotar estas vulnerabilidades.

Por ejemplo, lo que usaremos en este caso, como ya verificamos que podemos cerrar el valor del parametro “value“, pero no podemos cerrar el tag e incrustar otro, añadiremos un nuevo atributo al input de búsqueda, probaremos con onfocus.

xsspoc

El evento onFocus se activará cuando el cursor se posicione sobre el input de busqueda. Por ejemplo, el comportamiento normal de un usuario sería ingresar al buscador, hacer click en el campo para ingresar lo que quiere buscar y finalmente presionar el botón buscar. En este caso, cuando la víctima haga clic en el campo para ingresar su busqueda, se ejecutará el javascript.

xssexp

La vulnerabilidad puede ser explotada mediante los métodos POST y GET.

Información Importante Sobre el Contenido

Estas accediendo al contenido antiguo del blog. Este artículo "Como NO se debe mitigar un Cross-Site Scripting (XSS), el ejemplo de ChileAtiende" es de dominio público y no será mantenido a futuro. Cualquier error o problema acerca del contenido por favor contactate conmigo desde la sección contacto.