E-mail leggere ricevuta tramite XSS

9

Recentemente sono incappato in un modo davvero stupido / non sicuro ma interessante per ottenere una conferma di lettura di una e-mail. Non sono sicuro al 100% se il metodo in uso funziona, ed è per questo che lo sto chiedendo qui.

G-mail non ha conferme di lettura. Quindi, ho ricevuto questa e-mail da un'azienda nota, una fonte attendibile, ma G-mail aveva bloccato le immagini sulla pagina. Poiché proveniva da un mittente fidato, ho fatto clic su "Mostra immagini in questa email". Non ho visto una foto lì. Guardando la fonte, ho visto un tag <img> con una src a un link che penso sia un modo per scoprire se il messaggio è stato letto da me.

La mia domanda:

  1. Funzionerà? Lo stesso criterio di origine impedirà la richiesta o la src nel tag <img> emetterà sempre una richiesta GET

  2. È legale e qualcuno lo ha visto in pratica? Se non lo è, ho una buona idea di riferire questo alla società interessata.

Domanda aggiuntiva

Se questo è effettivamente possibile, allora perché non dovrebbe qualcosa di simile: <img onload=alert('XSS') src="some-path.jpg"> lavoro?

    
posta sudhacker 10.10.2012 - 15:28
fonte

3 risposte

15

Questa è una pratica abbastanza comune chiamata bug web , è la ragione principale per cui i client di posta non caricano automaticamente immagini esterne (il secondo è quello di proteggerti dalla visualizzazione di immagini indesiderate di spam che potrebbero essere sconvolgenti, ad esempio la pornografia).

Fondamentalmente quando carichi un'email con immagini esterne abilitate e un link ad un'immagine come <img src='http://192.1.1.1/images/53512_58925.png'> è nella sorgente, il loro server web registrerà qualcosa come la seguente (esempio sotto è il log di accesso predefinito per nginx web server ) quando il browser / client di posta recupera e scarica l'immagine:

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"

che dà loro:

  1. il tuo indirizzo IP del tuo computer in cui hai visualizzato l'email ( 10.1.2.3 in questo esempio),
  2. il timestamp dell'accesso dell'orologio del server [10/Oct/2012:10:33:41 -0400] ,
  3. la (prima riga della) richiesta HTTP GET per ottenere l'immagine ( GET /images/53512_58925.png ),
  4. il codice di risposta HTTP (200 significa successo),
  5. la dimensione del file a cui si accede (1933 byte),
  6. l'URL completo del file (192.1.1.1 è IP del server del mittente della posta elettronica) e
  7. la stringa User-Agent del client (che indica il browser Web e il sistema operativo eventualmente utilizzato)

Per tracciarti veramente con precisione, dovrebbero avere un URL univoco per l'immagine; ad esempio, il file 53512_58925.png potrebbe significare che l'utente 58925 ha letto l'e-mail con l'ID 53512 o qualcosa del genere. Potrebbero anche fare qualcosa con i parametri HTTP GET qualcosa come <img src='http://192.1.1.1/images/logo.png?user_id=58925&email_id=53512'> che verrebbe anche registrato.

Non ho intenzione di commentare la legalità di esso; le leggi variano e alcuni paesi in cui non vivo hanno recentemente adottato severe leggi sulla privacy IT (ad es., a fronte di un tracciamento cookie cookie simile senza il consenso esplicito dell'utente). Anche questo forum non è destinato a fornire consulenza legale.

Questo non ha nulla a che fare con la politica della stessa origine (usata per limitare la potenza degli script client caricati in remoto in linguaggi come javascript, quindi andare a unssafe-web-page.com non dovrebbe essere in grado di leggere / modificare il browser dati in altre schede) o XSS (dove gli hacker sfruttano i difetti iniettano contenuti in pagine web che non sono le loro).

    
risposta data 10.10.2012 - 16:44
fonte
4

L'incorporamento di un'immagine in un messaggio di posta elettronica (se non bloccato) genera un GET HTTP per la risorsa collegata nel campo src. Quando lo fa, puoi ottenere l'ordinario "livello di Google Analytics" (+ IP), cioè Referente, versione del browser, ecc.

Se la risorsa non esiste, ci sarà ancora una voce di registro di GET sul lato server quando si tenta di risolverlo.

    
risposta data 10.10.2012 - 16:00
fonte
1

Sì, funzionerà e non vedo alcuna ragione per cui sarebbe illegale.

Tuttavia, hai già individuato il problema principale in questo modo: la persona che legge l'email deve premere "Mostra immagini in questa email" (o equivalente) perché funzioni.

Esistono società che offrono questo servizio, ad esempio SpyPig e DidTheyReadIt

    
risposta data 10.10.2012 - 16:15
fonte

Leggi altre domande sui tag