Recibo de lectura por correo electrónico a través de XSS

9

Recientemente me topé con una forma realmente tonta / insegura pero interesante para obtener un recibo de lectura de un correo electrónico. No estoy 100% seguro de que el método en uso funcione, razón por la cual lo pregunto aquí.

G-mail no tiene recibos de lectura. Entonces, recibí este correo electrónico de una empresa de renombre, una fuente confiable, pero G-mail había bloqueado las imágenes en la página. Como era de un remitente de confianza, hice clic en "Mostrar imágenes en este correo electrónico". No vi una foto allí. Al mirar la fuente, vi una etiqueta <img> con un src a un enlace que creo que es una forma de averiguar si el mensaje fue leído por mí.

Mi pregunta:

  1. ¿Funcionará esto? ¿La misma política de origen evitará que la solicitud se realice o el src en la etiqueta <img> siempre emite una solicitud GET

  2. ¿Es esto legal y alguien más lo ha visto en la práctica? Si no es así, tengo una buena opinión para informar de esto a la empresa en cuestión.

Pregunta extra

Si esto es realmente posible, entonces ¿por qué algo como: <img onload=alert('XSS') src="some-path.jpg"> trabajo?

    
pregunta sudhacker 10.10.2012 - 15:28
fuente

3 respuestas

15

Esta es una práctica bastante común denominada error web , es la razón principal por la que los clientes de correo no se cargan automáticamente imágenes externas (el segundo es protegerlo de ver imágenes de spam no deseadas que pueden ser inquietantes; por ejemplo, pornografía).

Básicamente, cuando carga un correo electrónico con imágenes externas habilitadas y un enlace a una imagen como <img src='http://192.1.1.1/images/53512_58925.png'> está en la fuente, su servidor web registrará algo como lo siguiente (el ejemplo a continuación es el registro de acceso predeterminado para nginx web server ) cuando su navegador / cliente de correo busca y descarga la imagen:

10.1.2.3 - - [10/Oct/2012:10:33:41 -0400] "GET /images/53512_58925.png HTTP/1.1" 200 1933 "http://192.1.1.1/images/53512_58925.png" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.1 (KHTML, like Gecko) Chrome/21.0.1180.81 Safari/537.1"

que les da:

  1. su dirección IP de su computadora donde vio el correo electrónico ( 10.1.2.3 en este ejemplo),
  2. la marca de tiempo del acceso por el reloj del servidor [10/Oct/2012:10:33:41 -0400] ,
  3. la (primera línea de) la solicitud HTTP GET para obtener la imagen ( GET /images/53512_58925.png ),
  4. el código de respuesta HTTP (200 significa éxito),
  5. el tamaño del archivo al que se accede (1933 bytes),
  6. la URL completa del archivo (192.1.1.1 es la IP del servidor del remitente del correo electrónico), y
  7. la cadena User-Agent del cliente (que indica qué navegador web y posiblemente el sistema operativo está utilizando).

Para realizar un seguimiento realmente preciso, deberían tener una URL única para la imagen; Por ejemplo, el archivo 53512_58925.png podría significar que el usuario 58925 leyó el correo electrónico con el ID 53512 o algo así. También podrían hacer algo con los parámetros HTTP GET algo como <img src='http://192.1.1.1/images/logo.png?user_id=58925&email_id=53512'> que también se registraría.

No voy a comentar sobre la legalidad de esto; las leyes varían y algunos países en los que no vivo han promulgado recientemente leyes estrictas de privacidad de TI (por ejemplo, en contra de una política similar de seguimiento de cookies sin el consentimiento explícito del usuario). Además, este foro no está realmente destinado a proporcionar asesoramiento legal.

Esto no tiene nada que ver con la política del mismo origen (utilizada para limitar el poder de los scripts de cliente cargados de forma remota en lenguajes como javascript; por lo tanto, ir a unsafe-web-page.com no debería poder leer / modificar el navegador datos en otras pestañas) o XSS (donde los atacantes explotan fallas para inyectar contenido en páginas web que no son propias).

    
respondido por el dr jimbob 10.10.2012 - 16:44
fuente
4

La incrustación de una imagen en un correo electrónico (si no se bloquea) dispararía un GET HTTP para el recurso vinculado en el campo src. Cuando lo hace, se puede obtener el "nivel de Google Analytics" de información (+ IP), es decir, la referencia, la versión del navegador, etc.

Si el recurso no existe, todavía habrá una entrada de registro de GET en el lado del servidor cuando se intente resolverlo.

    
respondido por el Henning Klevjer 10.10.2012 - 16:00
fuente
1

Sí, funcionará y no veo ninguna razón por la que sería ilegal.

Sin embargo, ya has encontrado el problema principal al hacer esto: la persona que lee el correo electrónico debe presionar "Mostrar imágenes en este correo electrónico" (o su equivalente) para que funcione.

Hay empresas que ofrecen este servicio, como SpyPig y DidTheyReadIt

    
respondido por el Andy Smith 10.10.2012 - 16:15
fuente

Lea otras preguntas en las etiquetas