Cross-Site Scripting [XSS] - 01

Iniciado por MagoAstral, Agosto 04, 2013, 11:11:23 AM

Tema anterior - Siguiente tema

0 Miembros y 1 Visitante están viendo este tema.

Agosto 04, 2013, 11:11:23 AM Ultima modificación: Noviembre 23, 2014, 02:19:56 PM por Expermicid
Buenas usuarios de underc0de, hoy vengo con la primera parte de una secuencia de tutoriales en los cuales explicaré distintas formas de explotación de los XSS y fixeo de la misma, para empezar explicaremos el concepto xss, yo lo catalogaría como una vulnerabilidad web que permite inyectar código a terceros, este código sería JavaScript o algún lenguaje de scripting similar tipo VBScript, vale si somos un poco maquiaviavélicos podemos causar extragos dentro de la aplicación web que nos permitió inyectar ese código, pero esas formas las iré explicando poco a poco, hoy comenzaremos por distinguir los dós tipos de XSS que podemos encontrar comunmente.

Tipos:

XSS Reflejado : El código inyectado se ejecutaría de forma indirecta es decir vía URL o vía buscado tendríamos que hacer uso de la ingeniería social para llevar a cabo la ejecución del código sobre la víctima, un ejemplo sería un buscador.

XSS Persistente : El código inyectado se ejecuta de forma directa, es decir que persiste en la aplicación web, un claro ejemplo sería un libro de visitas donde nosotros dejamos nuestro comentario y todo el mundo puede verlo.

Hoy vamos a explicar el XSS Reflected o reflejado, vamos a hacer uso un pequeño código que vamos a desarrollar en PHP+ HTML (un código sin filtros, muy sencillo).

Comenzamos con la aplicación desarrollando una idea creo que será un sistema que tu pones tu nombre y te saluda, así que empezamos con el HTML.
Código: php

<html>
<head>
<title>
Saludador
</title>
</head>
<body>
<form method="POST" action="saludar.php">
<center>
<p>
Mi nombre es:
</p>
<input type="text" name="nombre" id="nick" value="">
<input type="submit" value="Enviar">
</center>
</form>
</body>
</html>

Lo cual quedaría más o menos así :

Vale, ahora pasamos a recibir la variable nombre vía post y mostrarla en pantalla, muy fácil y simple.
Código: php

<?php

$varnom = $_POST['nombre'];

echo "Hola: $varnom";

?>

Esto quedaría probandolo así:

Bien, ahora al ser personas malvadas probamos a inyectar un tag HTML tipo h1, y vemos que el tag se ejecuta en bruto por lo tanto pensamos que no tiene ningun filtrado.
Aquí una captura del resultado :

Perfecto, ahora ya podríamos ejecutar algo un poco más interesante pensemos en un script, por convenio se suele mostrar la alerta.
Vector : <script>alert('MagoAstral')</script>
Y ¡Voula!

Bien, como vemos podríamos ejecutar cualquier código desde un full replace hasta inyectar un iframe apuntando a nuestro buen Beef XSS...
Pero los tutoriales de explotación y sesssion hijacking los dejaré par más adelante cuando explique los Persistent XSS.
Ahora pasaremos a filtrar los scripts para evitar que nos inyecten estos scripts, usaremos htmlentities, esta será nuestra primer baza hay distintas formas de filtrarlo pero hoy veremos esta.
Código: php

<?php

$varnom = $_POST['nombre'];

echo "Tu nombre es: ".htmlentities($varnom);

?>

Y ahora probamos a inyectar el vector de la alerta...

Ups...
Pues aquí termina la parte 1 de esta serie de tutoriales, mañana explicaré los persistentes y después pasaremos a robar sesiones y contraseñas atraves de un XSS, y si les gustó el tutorial comentenmelo que aunque parezca poco comentar sube la moral.
Un saludo,
MagoAstral.
Lo que sabemos es una gota de agua; lo que ignoramos es el océano.

Muy buen tutorial!!

Esperando el segundo :D

Un saludo.



Muy Bueno encima veo que es tu yo Nicee  :)
Passion informatic.