Tutorial básico Cross Site Scripting
Iniciado por Alex kriminal · 4 feb 2015 · 5 respuestas · 7458 visitas
Alex kriminal Hoy nos toca tratar una de las vulnerabilidades mas habituales en el desarrollo web actualmente, el XSS. Esta falla de seguridad se debe a un incorrecto filtrado de los valores que un usuario puede introducir en una web dando así pie a la ejecución de código de scripting en la web atacada.
A través de este método un atacante puede robar los credenciales de un usuario o administrador, modificar contenido en la web, eliminar restricciones impuestas desde el lado del cliente y muchas otras cosas.
Existen dos tipos de XSS:
Indirecto o reflejado: Funciona modificando valores que una web pasa entre página. Ocurre cuando se envía un mensaje o ruta en una URL, una cookie o en la cabecera HTTP.
Directo o persistente: Consiste en almacenar código en la web para que se ejecute una vez que la web se carga, por ejemplo inyectando en un libro de visitas de una web en un blog o en una sección de comentarios.
Este fallo está muy extendido debido a que muchos dessarrolladores no son conscientes de que los filtros -si los hay- se pueden evadir fácilmente con algunas técnicas.
Vamos a ver como funciona un XSS básico con una página que pasa valores a otra a través del método GET:
Tenemos la siguiente web con un campo de texto que envía una cadena a otra página para procesarla.
Tutorial Cross Site Scripting
Una vez que el usuario escribe una cadena y envía el formulario se genera la siguiente url:
www.shellshocklabs.com/server.php?cadena=test
Donde "test" es el valor enviado a través del formulario y que será mostrado en la otra página.
Tutorial Cross Site Scripting
Si revisamos el código fuente podemos observar como se inserta "test" en la página:
<body>
<h1>Cadena enviada:</h1>
<p>test</p>
</body>
En este ejemplo no hay ningún filtro implementado para simplificar las cosas a la hora de entender como funcionan este tipo de ataques. Nuestro objetivo es conseguir inyectar código dentro de la web y que este sea ejecutado, por lo que en este caso vamos a pasarle la siguiente cadena a través del formulario o de la url:
<script>alert('XSS')</script>
Para pasarlo a traves de la URL simplemente debemos sustituir "test" por esta cadena y actualizar la página:
www.shellshocklabs.com/server.php?cadena=<script>alert('XSS')</script>
Una vez actualizada la página nos debe mostrar una alerta con el texto XSS, ya que el código, al no ser filtrado, se ejecuta en la página como si formase parte de ella. Si echamos un ojo al código podemos ver como nuestra cadena se ha integrado en el código fuente de la página:
<body>
<h1>Cadena enviada:</h1>
<p><script>alert('XSS')</script></p>
</body>
Tutorial Cross Site Scripting
En este punto se ha completado la inyección y hemos comprobado que la web es vulnerable a este tipo de ataques, por lo que solo deberemos aplicar el payload que queramos utilizar para el ataque y llevarlo a cabo.
Por supuesto, este ejemplo contempla un caso básico y es difícil encontrarnos ante este escenario en el mundo real, ya que lo habitual es encontrarnos entradas filtradas bien sea desde el lado del cliente o del lado del servidor.
Tras ver como funciona el ataque básico vamos a seguir implementando filtros simples para que vayáis entendiendo la idea de los bypasses. Para este ejemplo vamos a filtrar el string "script" con la función str_replace() de PHP.
<?php echo "<p>".str_replace('script', null, $unsafe_string)."</p>";?>
En este caso, si pasamos el mismo string que antes:
www.shellshocklabs.com/server.php?cadena=<script>alert('XSS')</script>
La palabra "script" será eliminada y el código no será ejecutado, quedando el código fuente de la siguiente manera:
<p><>alert('XSS')</></p>
Este tipo de filtros es muy sencillo de vulnerar, por ejemplo alternando mayúsculas y minúsculas en la palabra filtrada (p.e. "ScRiPt"). Por lo que pasando la cadena modificada ya habremos logrado nuestro objetivo:
www.shellshocklabs.com/server.php?cadena=<ScRiPt>alert('XSS')</ScRiPt>
Como veis la idea principal a la hora de realizar un ataque XSS es engañar al filtro y ejecutar el código, para esto una buena parte del trabajo se realiza a la hora de analizar que tipo de filtrado aplica el objetivo y encontrar la manera de saltárselo.
Aquí os dejo un cheatsheet con varias formas de evasión de filtros que es recomendable entender:
XSS Filter Evasion Cheat Sheet
Aquí lo dejamos por hoy, espero que se haya entendido, aunque cualquier duda será bienvenida en los comentarios.Silvia77 cuando hagas estos copy&paste para ganarte unos centimillos de BHC, por lo menos podias poner tambien las imagenes adjuntas...dislikeit Encima de que el chico es original y no pone la porquería habitual... Ains! Cómo soís las mujeres!!! :pmaestrodellaves El tutorial es muy bueno a pesar del fallo de las imágenes, pero está en la sección de SEO, concretamente la de White Hat y lo veo más como un tema de Hack...
No comprendo que hace este tuto (supongo que el siguiente será de inyección SQL) aquí, a no ser que nos sirva para darnos cuenta de lo vulnerables que pueden ser las webs...dislikeit A todo le sacaís punta! Es un fallito de nada, y además sigue dando los mismos 0.10BHC que si lo hubiera puesto en el sitio correcto :p
El de inyección SQL creo que ya lo puso en programación :Dmaestrodellaves dislikeit escribió:A todo le sacaís punta! Es un fallito de nada, y además sigue dando los mismos 0.10BHC que si lo hubiera puesto en el sitio correcto :p
El de inyección SQL creo que ya lo puso en programación :D
Ok, no he dicho nada xD
Este hilo pertenece al archivo del foro y ya no admite respuestas.
Otros hilos de esta sección
- [Paso a Paso] Sistema para la Creación de Enlaces Piramidales Tier 4. Linkbuilding 20Arroyo · 25 abr 201490 respuestas · 112.963 visitasÚltimo mensaje: 30 oct 2020
- Tutorial - Manual SQLmap: ataques SQLi - Inyección SQLAlex kriminal · 2 ene 20150 respuestas · 86.784 visitasÚltimo mensaje: 2 ene 2015
- Simple SEOGandalf · 30 dic 201372 respuestas · 56.308 visitasÚltimo mensaje: 28 ene 2018
- Como indexar nuestro sitio web en pocas horasSauron · 22 mar 201445 respuestas · 45.686 visitasÚltimo mensaje: 28 ene 2018
- Descubre en que posicion estan tus palabras clavedelta · 2 dic 201447 respuestas · 40.585 visitasÚltimo mensaje: 21 ago 2018
- Como posicionar video en youtube con Tuberank Jeet [Demostracíon con caso practico]Arroyo · 1 abr 201437 respuestas · 32.183 visitasÚltimo mensaje: 4 dic 2014
- [YouTube] CÓMO GENERAR 50€ AL MES FÁCILShadyck · 29 mar 201635 respuestas · 30.676 visitasÚltimo mensaje: 28 ene 2018
- Guía para escribir y posicionar!javieron · 2 oct 201819 respuestas · 30.571 visitasÚltimo mensaje: 1 jul 2022

