О сервере бедном замолвите слово…
АрхивСетевое окружение (архив)«Кто предупрежден, тот вооружен» или обстоятельный инструктаж по взлому серверов.
Продолжая тему сетевой безопасности, начатую в статьях «Шпионы как мы» и «Мы как шпионы», поговорим о безопасности веб-серверов и вообще компьютеров, имеющих доступ в Интернет. У читателя может возникнуть чувство, что автор ярый Microsoft-ненавистник — не стоит так думать! Просто в Windows я разбираюсь гораздо лучше, чем во всяких народных Linux, — именно поэтому о дырах в безопасности этой системы знаю больше [1]. Я уверен, что после более глубокого изучения операционных систем из мира Linux в них удалось бы найти не меньше лазеек, но дальше речь пойдет не об этом. (Если же вас интересует, как вывести из строя Linux, — читайте одноименные «How to…» и ищите раздел «Взломать Linux».)
|
Итак, начнем.
Компьютер, подключенный к сети, может быть взломан — это уже аксиома. Но одно дело, если он используется лишь для редкого обмена файлами с сервером, и совсем другое — если сам является сервером и к нему часто подсоединяются клиенты (для этих целей существуют специальные www-, ftp-, почтовые и прочие серверы, причем довольно часто все службы работают на одной машине).
Сейчас наиболее популярны веб-серверы, которые обычно работают под управлением Windows NT/2000 (Internet Information Server — IIS) или Linux (Apache) [2]. Так сложилось, что большинство взломов сайтов (сводящихся чаще всего к банальной замене главной страницы) происходит чаще всего на IIS.
В каждом из нас живет ребенок, жаждущий разобрать любимую игрушку, дабы «посмотреть, что у ей внутре». Вот и мне всегда хотелось что-то поломать. Однажды я тоже заменил главную страницу некоего сервера (под управлением FreeBSD, кажется), попутно прихватив файлик с паролями в открытом виде. По истечении суток (!) взлом замечен так и не был, а поскольку человек я не вредный, то вернул все на свои места. Хак можно повторить хоть сейчас, но он стал возможен по вине администратора, а не программного обеспечения сервера. А как насчет возможности взломать любой компьютер? Скажете, что мне нужна губозакаточная машинка? Вот и нет! Microsoft сделала все, чтобы я обошелся без нее.
Фирма NSFOCUS security team нашла много глюков, сводящих безопасность IIS на нет. Именно она, помнится, предложила способ [3] , нахождения пароля для входа на сетевые ресурсы буквально за считанные минуты. Но этим ее изыскания не ограничились, и ниже приведено еще несколько находок.
Интернет дает абсолютную свободу для нарушения авторских прав. Тут можно найти терабайты последних версий программ, музыку и фильмы любых жанров. Секреты оформления сайтов легко подсмотреть в меню «View Source»; flash-ролики, которые «легально» сохранить вроде бы не удается, отыскиваются в кэше браузера — в папке «Temporary Internet Files» вашего компьютера; однако некоторые вещи все-таки остаются недоступными — к примеру, Java- и серверные скрипты. А что делать, если захочется узнать, как устроена, к примеру, гостевая книга, написанная на Perl? Писать письма автору, просить выслать кусочек исходника и получать отказ? Ну уж нет! Если сервер работает под управлением IIS, достаточно попробовать в адресе справа от названия скрипта добавить пять символов: +.htr. Чтобы не напрягать Интернет-сервер, попробуем на своем… Вуаля! Результат — на рис. 1.
Рис. 1. Вот вам и код чатового движка
Понравилось? Мне лично стало страшновато. А ведь этот глюк позволяет получить тексты файлов типа *.asp, *.asa, *.pl и многих других! Кстати, говорят, что в исходнике global.asa частенько лежат пароли к MS SQL Server…
Итак, узнавать исходные тексты некоторых файлов, доступных через Интернет, мы научились. А можно ли добраться до содержимого серверного диска C:? Нет проблем! На помощь приходит очередная ошибка, берущая начало в проблеме, именуемой UNICODE bug. Согласно документированному описанию [4], суть ошибки в том, что пользователь, набрав адрес определенными символами, может выполнить команды на сервере и тем самым добраться до файлов, недоступных из Интернета. На рис. 2 я получаю доступ… к списку каталогов своего компьютера!
Рис. 2. А вот — листинг корневой директории диска C:\
Как видно из рисунка, я хитрым образом послал команду dir c:\ командному интерпретатору. Самое забавное, что, даже если вы забыли командную строку и не помните, какие существуют команды и ключи (как, например, работать с тем же dir?), то всегда можно запустить Command Prompt или — что еще веселее — попросить помощь у взламываемого сервера, подкорректировав адрес. К примеру, вместо dir+c:\ (символ «+» используется вместо пробела) можно написать dir+/? и получить полный листинг параметров команды dir. В общем, сервер вас сам научит. Мило, не правда ли? А для того, чтобы после детального изучения содержимого каталогов вывести файл на экран, вполне подойдет старая добрая команда type, если же вы забыли правила ее использования, на помощь опять придет /?.
Впрочем, вынужден разочаровать тех, кто уже собирался почувствовать себя кул хацкером: в данном случае все ваши обращения к компьютеру идут от пользователя IUSR_НазваниеКомпьютера, чьи права изначально ограничены, поэтому, допустим, файл с паролями SAM вам украсть так просто не удастся, да и вывод на экран иногда будет обрываться… И слава богу.
Однако и «официально» доступные через эту дыру ресурсы таят немало интересного. Приведу еще один скриншот (рис. 3), сделанный уже не с локальной машины, а с американского сервера, на главной странице которого красуются картинки авторизованного партнера Microsoft и IBM. Письмо, посланное мною администратору, почему-то вернулось: видимо, сервер ждет следующего посетителя, посему, чтобы не возникло излишних соблазнов, адрес зарисован.
Рис. 3. Как вы думаете, что было в файле password.txt?
Кстати, на вышеупомянутом сервере была установлена Windows 2000 с Service Pack 1. Чтобы закрыть доступ пользователям к запуску команд на стороне сервера, администратору достаточно было отключить учетную запись IUSR_НазваниеКомпьютера, но после этого заходить на веб-сервер смогли бы лишь пользователи, которые прописаны в системе, и если для корпоративного сервера это нормально, то публичному уже не подойдет. В этом случае для Windows 2000 требуется установить второй Service Pack или HotFix [5], а вот Windows NT поможет только HotFix.
Таким образом, доступ к серверу можно получить, если на нем установлен веб-сервер и не хватает патчей. Однако компьютер находится под ударом даже тогда, когда веб-служба не запущена! Часто для доступа извне бывает открыт 139-й порт. Пусть есть небольшая локальная сеть из, скажем, десяти компьютеров, часть которых имеет свой IP-адрес. Допустим еще, что они работают под управлением Windows 98. Разумеется, у пользователей открыты сетевые ресурсы, некоторые с паролями, некоторые без. Подключить их сетевые ресурсы можно простой командой
net use z: \\xx.xx.xx.xx\ресурс
Пароли, как вы могли убедиться из статей «Шпионы как мы» и «Мы как шпионы», тоже не преграда. Единственный вопрос: как получить список доступных сетевых ресурсов? Не подключать же методом тыка все подряд! На выручку приходит LANguard Network Scanner [6].
Кстати, вполне возможно, что вместо списка сетевых ресурсов мы получим куда больше информации. Так, просканировав компьютер, страдающий от UNICODE bug, я узнал много интересного (рис. 4).
Рис. 4. Может, вам еще ключи от квартиры, где деньги лежат?
Ох уж эта безалаберность сисадминов! Уж не знаю зачем, но администратор этого сервера сделал практически все данные доступными любому желающему [7], я даже смог подключить… реестр сервера [8]! Трудно найти ворота шире…
Надеюсь, ознакомившись со статьей, читатели не кинутся ломать серверы под IIS (это, господа, уже не комильфо. — Scout.), а обратят больше внимания на свой личный компьютер, администраторы же поставят ВСЕ доступные сервис-паки. Сам же я сделал следующее: кинул в Favorites ссылку на NSFOCUS, стал почаще заходить на сайт Microsoft, а еще — загорелся желанием написать расширенный аналог LANguard Network Scanner. Все, решено, дописываю новую версию mp3Tag [9] и займусь этим — благо для создания сканера необходимо использовать всего несколько функций. Следите за статьями на www.softerra.ru…
[1] — Кстати, и вероятность того, что мой следующий веб-сервер будет работать именно под управлением Windows 2000, чрезвычайно велика.
[обратно к тексту]
[2] — Подробнее о них в моем втором уроке по программированию для Интернета на сайте SoftТерры: www.softerra.ru/review/program/11366
[обратно к тексту]
[3] — www.nsfocus.com/english/homepage/sa_05.htm
[обратно к тексту]
[4] — www.nsfocus.com/english/homepage/sa01-02.htm
[обратно к тексту]
[5] — Ищите на серверах Microsoft файл под названием Q293826_W2K_SP3_x86_en.EXE.
[обратно к тексту]
[6] — Подробнее в статье «Мы как шпионы».
[обратно к тексту]
[7] — Может быть, он работает в ФБР? — Scout.
[обратно к тексту]
[8] — И с удивлением увидел, что в Америке пользуются AVP.
[обратно к тексту]