Preorder drugiego tomu książki sekuraka: Wprowadzenie do bezpieczeństwa IT. -15% z kodem: sekurak-book
Jak w Javascript poznać publiczny (oraz prywatny!) adres IP?
Zobaczcie tylko na jeszcze świeży kawałek Javascriptu tutaj. Przykładowo – w Chrome wystarczy użyć F12 -> Console i wkleić kod do przeglądarki. Można też z niewielką modyfikacją (ostatnia linijka) uruchomić taki javascript ze swojego serwera.
Co wykorzystuje ten mechanizm? Na razie jeszcze mało popularny mechanizm WebRTC (Web Real-Time Communication), wykorzystywany do bezpośredniej komunikacji pomiędzy przeglądarkami (np. na potrzeby rozmowy video). Ten z kolei wykorzystuje m.in. protokół STUN (bardziej ludzki opis tutaj), który umożliwia „dogadanie się” dwóm komputerom (przeglądarkom) które są za NAT-em:
STUN is a standardized set of methods and a network protocol to allow an end host to discover its public IP address if it is located behind a NAT.
Co ciekawe, do prawidłowego działania STUN wymagany jest zewnętrzny serwer (bo skąd niby lokalna przeglądarka ma znać nasz publiczny adres IP?). Ale przynajmniej Chrome i Firefox też z tym sobie dają radę.
Kolejną interesującą rzeczą jest fakt, że STUN domyślnie wykorzystuje UDP – więc całość nieźle będzie omijać choćby proxy ustawione w przeglądarce (uwaga użytkownicy TOR-a…). Z kolei sam twórca powyższego kodu dodaje :
(…), these STUN requests are made outside of the normal XMLHttpRequest procedure, so they are not visible in the developer console or able to be blocked by plugins such as AdBlockPlus or Ghostery. This makes these types of requests available for online tracking if an advertiser sets up a STUN server with a wildcard domain.
–ms
Kiedyś (z 2 lata temu) pisałem sip phona w przeglądarce opartego o WebRTC i czy nie jest czasem tak, że jak napisałeś ” Chrome i Firefox też z tym sobie dają radę” – to czy nie korzystają one po prostu ze swojego publicznego serwera STUN jeśli nie podasz innego w kodzie?
//firefox already has a default stun server in about:config
// media.peerconnection.default_iceservers =
// [{„url”: „stun:stun.services.mozilla.com”}]
var servers = undefined;
Zerknij w źródła – są ładnie opisane, ale tak Firefox ma swój.
//firefox already has a default stun server in about:config
// media.peerconnection.default_iceservers =
// [{„url”: „stun:stun.services.mozilla.com”}]
var servers = undefined;
//add same stun server for chrome
if(window.webkitRTCPeerConnection)
servers = {iceServers: [{urls: „stun:stun.services.mozilla.com”}]};
Dokładnie o to samo chciałem dopytać. Jak dokładnie Chrome i FF sobie z tym radzą?
Firefox:
about:config
media.navigator.enabled: false
media.peerconnection.enabled: false
Załatwione :>
Jakaś magiczna flaga, która wyłączyłaby to w Chrom{e,ium}?
Potwierdzam, że w Chrome działa i na dodatek, co mnie trochę dziwi, podaje adres IP mojej końcówki w OpenVPN. A przez niego nie łącze się do Internetu, a jedynie do podsieci firmowej.
No potrafi też zlistować inne interfejsy jak masz na nich IP (nawet jeśli nie korzystasz z VPN)
TorBrowser 4.0.3 nie „podatny” :)
Z domyślnymi ustawieniami ofc.
ale javascripta włączyłeś?
http://ipleak.net/
https://diafygi.github.io/webrtc-ips/