Hola, siento no haber podido tener este capitulo ayer, espero que lo disfruten y aprendan.
Capítulo 1: Introducción a Cross Site Scripting.Hoy voy a explicar la vulnerabilidad XSS. Las herramientas y conocimientos necesarios son:
- Conocimientos sobre HTML
- Saber lo mínimo sobre javascript.
- Estría bien saber php, pero no es tan necesario.
- También seria útil disponer de un servidor web con php instalado.
- Algo también muy importante es tener una cabeza bien equipada, aunque con un ojo y algo de cerebro sobra.
- Y por supuesto también es necesario tener ganas de aprender.
Empecemos!
XSS significa Cross Site Scripting, no lo abreviaron en CSS para no confundirlo con las hojas de estilo en cascada. Aveces también se le llama HTML injection pero esto no es correcto, lo correcto es llamarle XSS o Corss Site Scripting.
Esta vulnerabilidad es un fallo en el sistema de validacion de HTML incrustrado y consiste en inyectar código HTML y javascript donde no debería haberlo y así conseguir algún provecho, normalmente esta vulnerabilidad se usa para el robo de cookies, para hacer phishing y desfaces en los foros. Se suele encontrar en los buscadores de la web.
Hay dos clases de XSS, la indirecta y la directa. La indirecta es la menos censurada y la menos explotada, y la directa es mas difícil de encontrar ya que se suele filtrar mas. Haré una definición mas exacta:
-Directa: Esta es muy divertida! pero es muy difícil de encontrar una vulnerabilidad de este tipo. Se encuentra en los foros, libros de visita y webs que se puedan modificar por medio de formularios. Con una vulnerabilidad como esta siempre que alguien entre a la parte del foro donde se ha inyectado el código, se ejecutara en su navegador y hara lo que tenga que hacer, mucha gente usa esta vulnerabilidad para hacer un deface usando una etiqueta <div> que cubra toda la web o con un script que la redireccione a tu sitio.
-Indirecta: Este tipo de XSS es muy fácil de encontrar en motores de búsqueda sobre todo, en esta el código se inyecta a través de formularios, URL, cookies, programas en Flash o incluso en vídeos. Esta vulnerabilidad es mas dificil sacarle provecho ya que tenemos que conseguir que alguien entre en el enlace malicioso, mas adelante se vera lo que es un enlace malicioso.
Ahora imaginemos un buscador de texto dentro de una web, podemos poner cualquier cosa y la web nos respondería: "Lo que hayas puesto no se ha encontrado, repita su búsqueda", donde pone "lo que hayas puesto" podríamos poner otra cosa como <h1>Hola</h1> y si es vulnerable el navegador lo interpreta como parte del código HTML y saldría hola en letras grandes, pero envés de poner "<h1>hola</h1>" podemos insertar un código que hiciese que cuando alguien entre le robe las cookies y las almacene en otro servidor.
Si la web pasa la variable del buscador mediante GET (es lo mas común) podemos generar una URL maliciosa y hacer que alguien entrase y así le robaríamos las cookies, la URL seria algo como esto:
http://www.webvulnerable.es?buscar=codigo_insertado
No os asustéis si no ha quedado muy claro porque vamos con un ejemplo:
Código de la web desde donde se envía el formulario:
<FORM METHOD="get" ACTION="xss.php">
<INPUT TYPE="text" NAME="vuln"> <INPUT TYPE="submit" VALUE="enviar">
Ahora el código que recibe las variables de este formulario (xss.php):
<?php
$var = $_GET["vuln"];
echo "Has escrito: ".$var;
?>
Si no tenéis servidor con php instalado para poder hacer la prueba he subido el formulario a una web:
http://tallervulneravilidades.iespana.es/xss, podéis hacer todas las pruebas que quieras con esta web.
Supongo que si sabéis php entiendes los códigos, si no saben los explicaré.
En el primer código hay que fijarse en la etiqueta <FORM>:
<FORM METHOD="get" ACTION="xss.php">
El método GET significa que envía los datos a través de la URL, supongo que ya os abareis dado cuanta de eso, y el método POST los envía sin usar la URL, action dice que le envía los datos a "xss.php", que es el código que analizaremos ahora.
El segundo código recoge los datos enviados y los escribe en la pantalla.
Esta función recoge los del cuadro de texto con nombre "vuln" y los almacena en $var.
echo "Has escrito: ".$var;
Este código escribe en la pantalla "Has escrito: " seguido de la variable $var. Supongo que ahora si habrá quedado bien claro.
Ahora os dejo una tarea, tenéis que explotar la siguiente vulnerabilidad de XSS, si no lo consegis pondré la respuesta en el siguiente capitulo.
Este es el código de la vulnerabilidad:
<!--
Codigo de "index.html"
//-->
<H2>Ejercicio 1: Vulnerabilidad XSS
</H2> <H4>Aquí lo que escribes sale dentro de una caja de texto, así que no se ejecuta el código, lo que hay que hacer para que el código se ejecute es romper la caja de texto para que el código quede fuera de ella.
</H4> <FORM ACTION="xss.php" METHOD="get">
<INPUT TYPE="text" NAME="vuln"> <INPUT TYPE="submit" VALUE="Enviar">
Ahora pongo el codigo del programa que recibe las variables (xss.php):
<?php
$var = $_GET["vuln"];
?>
<FORM>
<BR>
Has escrito: <INPUT TYPE="text" VALUE="<?php echo $var; ?>">
</FORM>
( En la URL "buscar" es la variable a la que le asignamos "codigo_insertado", que es el que escribe al decir que no encuntra lo que buscamos. Ej: "Su busqueda: codigo_insertado no ha sido encontrasa, repita la busqueda")
Si no tenéis server web con php podéis hacer el ejercicio aquí:
http://tallervulneravilidades.iespana.es/ejerxssBueno aquí acaba por hoy, en dos o tres días seguiré con el taller con la continuación de XSS.
Saludos!
PORFAVOR NO ESCRIBAN MENASAGES EN ESTE POST HASTA QUE ACABE EL TALER, GRACIAS!.