[ Добавить в "Избранное" ]    [ Сделать стартовой ]
Ваш IP:

О СЕРВЕРЕ БЕДНОМ ЗАМОЛВИТЕ СЛОВО – II

Автор: Internet Maniac aka Алексей Павленко.

Скажи мне свой IP, и я скажу, кто ты...

Статья "О сервере бедном замолвите слово..." вызвала большой интерес читателей, поэтому я решил продолжить эту тему – тем более что кроме Web-серверов есть еще и сервера баз данных...

Итак, у вас есть сервер под управлением Windows NT (2000). Как вы, наверное, знаете, под этой операционной системой могут работать различные типы серверов: Web, почтовые, файловые, печати, баз данных. Microsoft настоятельно рекомендует для каждой из перечисленных задач использовать отдельные компьютеры, а еще лучше два (три, четыре...). Для большинства организаций это неприемлемо, поэтому все сервисы очень часто можно найти на одном мощном сервере – таким образом уменьшается стоимость использования системы. Но, как известно, у любой медали две стороны, и вот на второй стороне этой медали находится как раз проблема безопасности. Ведь если хакер взломает один сервис, то велика вероятность, что он получит доступ и ко всем остальным.

После эпидемии вирусов Code Red, Code Red 2 и Nimda надежность Web-сервера IIS (Internet Information Services) от Microsoft была поставлена под большой и жирный знак вопроса. По всему миру огромное количество компьютеров стало уязвимо не на словах, а на деле. Пусть софтверный гигант бьет себя пяткой в грудь и говорит, что их Web-сервер самый популярный и поэтому в нем нашли столько много багов... Как эта популярность набрана, говорить, наверное, не надо – ровно так же, как было и с Internet Explorer. Если вам надо поставить что-то серверное, то часто без установленного IIS это сделать просто нельзя. Да и про популярность можно поспорить, по крайней мере в России. Хорошо лишь, что после нашествия вирусов все-таки (наконец!!!) администраторы стали устанавливать заплатки. Ладно, если вам нравится IIS (как мне, например), используйте его на здоровье, но – будьте бдительны!

Какая фирма обходится без баз данных? Ведь при их применении гораздо удобнее и быстрее вести учет сотрудников, аудит средств и многое другое. В качестве сервера баз данных чаще всего используют MS SQL Server, Oracle, Interbase, My SQL. Раз мы уже договорились, что у нас компьютер работает под управлением Windows, то глупо было бы предположить, что базы данных работают под My SQL. Конечно же, для этого используется MS SQL Server! Хороший продукт, мне нравится, и если вы подумали, что я сразу начну рассказывать о его взломе, то вы ошибаетесь. Лично я не слышал про способы его "опускания". Хотя... есть все же одна штука... Ладно, уговорили, записывайте.

Аутентификация пользователей в MS SQL Server возможна двумя путями: используя логин из Windows и/или конкретную учетную запись, созданную специально для базы данных. Первый вариант предоставляет пользователю больше удобств. Зная имя и пароль в базе данных, можно делать в домене все, что доступно данному пользователю. Или наоборот – если вы прописаны в домене, то можете получить доступ к данным из БД, причем очень велика вероятность того, что администратор не обрезал права доступа. А вероятность того, что в базе данных хранится много секретной или в крайнем случае конфиденциальной информации, ничуть не меньше....

А зная пароль администратора, можно вообще горы сдвигать! Так вот, вся пугающая прелесть MS SQL Server в том, что по умолчанию после установки заводится учетная запись sa – это и есть администратор. Догадываетесь, какова длина его пароля? Ноль символов! Обычно все дальнейшие действия с базой данных администратор проводит через заход под своим именем из домена, а про sa все забывают. Если, конечно, вообще знали...

Таким образом, любой человек, имеющий доступ к серверу, может делать с базой всё, что угодно. Добавлять пользователей БД, менять им пароли, читать данные, удалять, изменять... Главное хорошо знать язык построения запросов SQL. Да, помните, я говорил в начале статьи, что если взломан один сервис, то могут быть взломаны и все остальные? Сейчас я докажу это!

Попробуйте подсоединиться к серверу баз данных и выполнить следующий код:

use master
exec xp_cmdshell 'dir /O c:\'

Рис. 1. Получение структуры каталогов на удаленном сервере
Рис. 1. Получение структуры каталогов на удаленном сервере

Да-да-да, не удивляйтесь, через сервер БД можно получить доступ к командной строке. Для этого служит хранимая процедура xp_cmdshell. Какую потенциальную опасность это несет, я и говорить не буду – просто вспомните про net.exe, route.exe, format.exe... Да мало ли добра лежит в winnt\system32! К тому же и в самом SQL есть большое количество полезных команд и хранимых процедур. Больше всего мне понравилась одна, видимо, оставленная Microsoft специально для хакеров – напишешь shutdown, и сервер перезагрузится. Лепота... В общем, имея доступ к командной строке с правами администратора, имеешь [доступ ко] все[му].

Рис. 2. Меняем пароль администратора БД
Рис. 2. Меняем пароль администратора БД

Есть одно большое НО. Чтобы подсоединиться к серверу, надо либо самому оказаться в его локальной сети, либо же "застать" оный в Интернете. Второе, по логике, должно быть вообще недопустимым – ведь даже если пароль администратора неизвестен, его можно подобрать, и очень легко – поверьте моему опыту. Однако зачем такие сложности? Вспомните еще раз про две стороны медали. Например, у организации есть сервер баз данных. Через некоторое время руководство захотело иметь свой представительский Web-сервер. Второй компьютер покупать жалко, поэтому на первый поставили дополнительно Web-сервер и купили IP-адрес. Ура! Работает и первое, и второе. Про то, что база данных становится доступной извне, никто и не думает...

Итак, если найден компьютер с IIS, то всегда есть и шанс наличия MS SQL Server. Приблизительных процентов подобного соотношения приводить не буду, расскажу лишь маленькую историю.

Меня с моим приятелем, работающим в провайдерской конторе, давно интересовал вопрос о соотношении использования различных Web-серверов. Несомненно, есть всевозможные независимые статистические данные, но они часто противоречат друг другу. Однажды товарищ быстренько написал программу на Perl, которая проверяет наличие Web-сервера на удаленном компьютере и определяет его название. За неделю поисков было найдено довольно много компьютеров, и оказалось, что IIS в мире все-таки используется, и он не сильно  отстал от Apache. А из всего объема просканированных компьютеров Web-сервера были установлены только на 0,5%.

Рис. 3. Статистика использования Web-серверов в мире
Рис. 3. Статистика использования Web-серверов в мире

Получив список адресов, где стоял IIS, я решил ради любопытства проверить их прочность. Запустив свой любимый LANguard Network Scanner (см. "О сервере бедном замолвите слово"), я стал смотреть, что, собственно, у кого открыто. Уже на третьем компьютере я обнаружил MS SQL. "А почему бы и нет?" – подумалось мне, и, запустив Query Analyzer и введя адрес + sa, я нажал Enter. В тот час пинг был быстрый и через несколько секунд глаза у меня разбежались от названий баз данных, к которым я получил доступ. Почти в каждой хранилось около сотни имен пользователей, их электронные и реальные адреса, даты рождений и, конечно, пароли. Немного побродив по таблицам, я отсоединился и забыл адрес. Даже ничего не стирал и приветов не оставлял. Я хоть и хакер, но безобидный...

Вообще же, чрезвычайно весело лазить через удаленный компьютер по чужой локальной сети, подключать сетевые диски с музыкой, а потом выполнять на них что-то типа "start z:\zemfira.mp3". То-то пользователи удивяться, когда на заблокированном сервере внезапно начнет играть музыка... А есть еще командочка net send *, когда всем пользователям домена приходит сообщение от их же сервера. В общем, развлекайся – не хочу!

Рис. 4. Отправка сообщения всем пользователем удаленного домена
Рис. 4. Отправка сообщения всем пользователем удаленного домена

Шутки в сторону. Теперь задумайтесь, что можно сделать, если подходить к поиску информации осознанно. Если находить заказчиков и продавать им данные – получается промышленный шпионаж, и доступен он... практически каждому! Не надо заканчивать спецкурсы и учиться в закрытых структурах. Продвинутый школьник или студент сделает все "за таблеточку, за монеточку". Страшно.

Но всего этого можно избежать. Прислушаемся к советам Microsoft и хотя бы базу данных установим на дополнительном компьютере, не имеющем выхода в Интернет. При надобности будем обращаться к данным на другом компьютере через клиентское программное обеспечение. Пусть у нас есть, к примеру, Интернет-магазин. Можно предложить такую схему: CGI-скрипт на Web-сервере посылает запросы на сервер баз данных, используя специальную облегченную учетную запись пользователя, имеющего доступ только к таблицам магазина. Чтобы максимально защитить структуру базы, можно вместо посылки готовых запросов вызывать хранимые процедуры сервера БД. Если наш Интернет-магазин как-либо взломают, то достаточно лишь поменять пароль пользователя магазина и возможность потенциального доступа к другим таблицам сервера исчезнет. К тому же, если вызывать хранимые процедуры, то можно гораздо более независимо написать сам Интернет-магазин, да и данные он будет получать быстрее.

Что в итоге? В общем, достаточно банальные советы: чтобы обезопаситься от взлома, поставьте все существующие заплатки (как всегда), используйте по возможности для разных задач несколько компьютеров, привыкните чаще менять пароли и делать их большими. Правда, обычно этого никто не делает...

Ну а если вы уверены в своей безопасности – дайте мне свой IP, и я постараюсь проверить ее. Об оплате поговорим потом.



Сайт создан в системе uCoz