¿Conoces las posibilidades de la Web 3?

Accede gratis a este Video Tutorial de
de como montar un proyecto gratis
en la #Web3 usando NFTs2Me.com

Calificación:
  • 0 voto(s) - 0 Media
  • 1
  • 2
  • 3
  • 4
  • 5

Tutorial básico Cross Site Scripting
#1

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.

“El misterio es la cosa más bonita que podemos experimentar. Es la fuente de todo arte y ciencia verdadera.”
Responder
#2

cuando hagas estos copy&paste para ganarte unos centimillos de BHC, por lo menos podias poner tambien las imagenes adjuntas...

[Imagen: banner-acelerar-wp.jpg]
Responder
#3

Encima de que el chico es original y no pone la porquería habitual... Ains! Cómo soís las mujeres!!! :p

[Imagen: banner-acelerar-wp.jpg][Imagen: mibanner.png]
Responder
#4

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...
Responder
#5

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 Gran sonrisa

[Imagen: banner-acelerar-wp.jpg][Imagen: mibanner.png]
Responder
#6

(04-02-2015, 06:49 PM)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 Gran sonrisa

Ok, no he dicho nada xD
Responder


Posibles temas similares…
Tema / Autor Respuestas Vistas Último mensaje

Salto de foro:


Usuarios navegando en este tema: 2 invitado(s)
Telegram Grupo Telegram