XSS, una talla de ropa para modelos? parte I

    Voy a intentar recopilar un poco los conceptos básicos sobre Xss, que tanto vemos en todas las listas de fallos, y que espero nadie confunda con una nueva talla para modelos anoréxicas ( yo sin embargo gasto en casi todo la xxxxl xD). El objetivo del comentario es el de explicar de manera sencilla que son estos fallos, y de las consecuencias o vectores de ataque habituales.

      Según OWASP, el Xss es la vulnerabilidad mas presente en todas las aplicaciones.
¿Por qué no es Css? Sencillo, por no confundir con las hojas de estilo.
El concepto es easy. En un campo de entrada en una Web (busqueda,url,  variables, logins,etc) se realiza una entrada no válida o no esperada, para aprovechar ese comportamiento "indeseado".
Una de las cosas que debemos tener en cuenta, tanto si atacas o si no quieres ser atacado, es filtrar los caracteres "raros", usando un condicionante para expresiones regulares, para protegerse, y usando una codificación para atacar, por ejemplo inyectando parametros en hexadecimal ( suele estar ya muy controlado).
En cada tipo intentaré documentar los ataques y evasivas.
Me excuso un poco de publicar este contenido tan newbie ( como yo) y que lleva desde principios de siglo ( me encanta usar esta expresión) pero que hoy en día, como empieza el post, es el objetivo principal de ataques sobre aplicaciones web.

Reflected Cross Site Scripting (OWASP-DV-001)

El XSS no persistente, es una inyección de código simple, que se presenta en el navegador cliente, y suele usarse para redirigir a otra web, que infecte al cliente. También se usa para robar cookies, historial de visitas, etc, si sabes programar scripts, el límite es el cielo. Añado que un script que se recargue, y que no deje al usuario interactuar con el navegador, a no ser que mate el proceso, es una forma de ataque DOS (si encima tenia pestañas con información útil, lo fríes).

Ejemplo en claro
http://www.webvictima.com/index.php?user=

ejemplo quitando <> y en hexadecimal
%3C%2Fscript%3

Como es normal, vosotros que sois expertos informáticos leéis la URL y sospecháis, pero y si es un link con un acortador tupo tiny, en un tweet o Factbook?

Stored Cross Site Scripting (OWASP-DV-002)

Misma inyección de código, pero con la característica que se ejecuta en todos los navegadores de todos los clientes que acceden a la url. Por qué? Sencillo, guardando los parámetros en el servidor. En que aplicaciones web vamos a poder ESCRIBIR en el servidor ( imaginamos que los admins de los servidores web tienen controlada la escritura directa, ya que para que querríamos usar XSS pudiendo “delete *” ) pues por ejemplo en post sobre foros, información de perfiles, carritos de compra, aplicaciones que permiten configurar rutas de carpetas…
Por ejemplo, en un comentario de un articulo de una web suelen estar controladas las etiquetas HTML, pero si empezamos así: “>  posiblemente el navegador lea esto: "”>

Otra manera menos cantosa, inyectando un iframe oculto: ”>