In teoria, sì, lo standard webrtc consente a un sito Web di determinare l'indirizzo IP locale, in modo che possa creare una connessione diretta per un altro browser Web, consentendo ad esempio connessioni dirette tra i browser per configurare lo streaming video.
Questo sito Web ha una prova di concetto che mostra il tuo indirizzo IP interno ed esterno:
link
Una volta che il sito ha entrambi gli indirizzi IP interni, può usare javascript per provare a configurare una connessione tramite gli ip interni da pc1 a pc2, se questo succede, sa che questi 2 pc si trovano nella stessa rete locale.
commento: Chrome su iOS, Internet Explorer e Safari non implementano ancora WebRTC, vedi link per maggiori informazioni.
Aggiornamento 23/08/2018:
Un altro possibile vettore di attacco è arrivato alla mia attenzione ultimamente:
Rebinding DNS, da wikipedia:
In this attack, a malicious web page causes visitors to run a client-side script that attacks machines elsewhere on the network. In
theory, the same-origin policy prevents this from happening:
client-side scripts are only allowed to access content on the same
host that served the script. Comparing domain names is an essential
part of enforcing this policy, so DNS rebinding circumvents this
protection by abusing the Domain Name System (DNS).
This attack can be used to breach a private network by causing the victim's web browser to access machines at private IP addresses and
return the results to the attacker. It can also be employed to use the
victim machine for spamming, distributed denial-of-service attacks or
other malicious activities.
Funziona avendo un sito Web dannoso / server DNS che imposta un ttl molto basso per le sue richieste DNS e quindi che ha javascript che esegue script sull'indirizzo del sito web originale.
La metà delle volte il dns risponderà con l'ip esterno corretto, quindi il sito Web verrà caricato, ma dopo alcuni minuti quando il javascript si avvia e tenta di accedere nuovamente al sito Web, il dns risponderà con un indirizzo ip locale (ad esempio 192.168. 0.1, questo può cambiare ogni pochi minuti) e il browser eseguirà il javascript e si connetterà ai dispositivi sulla rete locale!