jueves, 27 de enero de 2011

XSS - Cross Site Scripting

Toca estudiar. Y que mejor manera hay de estudiar que escribir lo que estás estudiando para fijarlo bien en la memoria?

Básicamente, un ataque de Cross Site Scripting (XSS) consiste en aprovechar una vulnerabilidad de una página web y hacer que el servidor ejecute código que le metemos nosotros. Esta vulnerabilidad se suele dar por no validar los datos de entrada de una aplicación, permitiendo la introducción de etiquetas como <script> o <iframe>.

De esta forma el ataque contra el cliente lo realiza el servidor.
Existen dos tipos de ataques XSS, persistentes y no persistentes. El funcionamiento es el mismo, la diferencia es que con el persistente el código se queda incrustado y cada vez que alguien visite esa página se ejecutara el código y con los no persistentes como su propio nombre indica, no perduran en el tiempo.
Los principales objetivos de estos ataques son el robo de sesión y la suplantación web, pudiendo con este último llegar a casos de phising.
Cómo encontrar un sitio vulnerable a XSS?
Encontrar un caso de XSS persistente es MUY dificil, pero si quieres entretenerte en encontrar uno busca en foros y redes sociales que se podrían hacer cosas divertidas.
Para buscar un XSS no persistente la forma más sencilla es el uso de google hacking. En tu buscador favorito ;) la siguiente sentencia:
inurl:"search.asp"
inurl:"buscar.asp"

Entraré más en profundidad en el tema del google hacking en otro post.
Por qué .asp?
Cuando una vulnerabilidad sale a la palestra, pues suelen ser vulnerables todos los sistemas anteriores a su publicación... a que ya os habéis imaginado que asp es mas viejuno que XSS?
Y ahora para practicar un poco...
Pongamos como ejemplo www.web.com/buscar.asp
Al hacer la búsqueda queremos que lo que hemos metido en el campo lo devuelva en la url y en algún sitio de la página. Por ejemplo si en el campo de la búsqueda metemos "foo" lo que querríamos sería algo del tipo:
www.web.com/buscar.asp?id=foo

Al ver esto, es cuando podemos tratar de realizar el ataque XSS, como ejemplo inofensivo pongamos que queremos sacar una alerta del mítico Hola Mundo:
www.web.com/buscar.asp?id=[Tú código SCRIPT fuck yeah]

En nuestro caso:

www.web.com/buscar.asp?id=<script>alert('Hola Mundo')</script><!--


Al ejecutar esto el navegador nos devolverá una alerta con el mensaje 'Hola Mundo'.
Pero, y si quiero una credenciales ajenas?
Si con ejemplo anterior teníamos un mensaje de Hola Mundo, con este que tendremos?
www.web.com/buscar.asp?id=<script>alert(document.cookie)</script><!--

Sí! Un gallifante para el rubio del fondo! Te saldría tu cookie de sesión, complica el script lo que quieras, mándaselo a gente con cuenta en un sitio web vulnerable y siéntete libre de suplantar la identidad de quien quieras ;).

Feedback y correcciones bienvenidas.

No hay comentarios:

Publicar un comentario