Linux глазами хакера
Шрифт:
10.1.1. Команды FTP-протокола
Давайте рассмотрим листинг 10.1. В нем приведен пример, в котором клиентская программа обменивается командами с FTP-сервером. Если в начале строки стоит знак ">", то текст из нее был отправлен серверу, иначе — это ответ FTP-сервера на нашу команду.
Самой
Для чего я изменил строку приветствия? Все очень просто, в ней по умолчанию показывается имя домена, имя и версия FTP-сервера и сообщение о приветствии. Ничего страшного не видите? А я вижу — хакеру достаточно подключиться на 21 порт, чтобы знать, с каким FTP-сервером он имеет дело.
Дальнейшие действия взломщика легко предсказываются. Я бы запустил поиск по всем базам уязвимостей на предмет наличия в них информации о дырах в данной версии сервиса wu-ftpd. Пусть администратор помолится, чтобы я не нашел нужных сплоитов для использования бреши, или дыра была незначительной и не позволила мне ничего сделать с его системой.
После чтения строки сообщения можно посылать команды FTP-серверу. Но ничего особого выполнить не удастся, пока вы не представитесь серверу. Для этого нужно выполнить FTP-команды: user с параметром имя пользователя, а затем
Серверы FTP позволяют работать с тремя типами авторизации: действительная, гостевая и анонимная. В первом случае вы должны передать серверу реальное имя и пароль пользователя, которому разрешен доступ к серверу. Тогда после выполнения команды
В случае с анонимным доступом в качестве имени нужно указать
Здесь говорится, что анонимный доступ разрешен, и вы должны передать в качестве пароля E-mail-адрес. Честно говоря, можно ввести и чужой E-mail, например, соседа или кого-нибудь другого. Это сервер проконтролировать не сможет. Некоторые серверы вообще не проверяют корректность адреса даже по простым шаблонам, и можно передавать что угодно.
На практике анонимный доступ обладает
Реальный пользователь может путешествовать по всей файловой системе, и возможности ограничены только правами доступа используемой учетной записи.
Гостевой доступ по своим правам является чем-то промежуточным между анонимным и действительным. По сравнению с анонимным пользователем гость обладает большими правами, и ему может выдаваться разрешение на загрузку файлов, но, в отличие от действительного, он работает только в своей директории. Например, если гостю назначен каталог /home/robert, то он сможет безнаказанно здесь работать с файлами и подкаталогами, но выше этой директории подняться невозможно. Вы можете определить любое имя в качестве гостевого.
Обратите внимание, что пароль в команде pass передается абсолютно в открытом виде. Это серьезная проблема. В каждой главе, где мы рассматриваем какой-либо сервис, доводится сталкиваться с открытой передачей данных. Ну что поделаешь, если на заре рождения Интернета никто не думал о хакерах. Теперь приходится изобретать разные методы, чтобы спрятать пароль.
Если ваш сервер обслуживает только анонимные соединения, то пароли могут передаваться как угодно. При такой аутентификации любой пользователь итак может подключиться к серверу, указав произвольный E-mail-адрес в качестве пароля. Но подобные серверы используются только с общедоступными ресурсами/файлами. При наличии важной информации доступ происходит по паролю, и необходимо сделать так, чтобы он шифровался. Для этого можно использовать stunnel или уже готовый протокол SFTP, который мы рассматривали в разд. 5.3.8.
Отличное решение я видел на одном из публичных Web-серверов около 10 лет назад. Для того чтобы закачать данные на сервер, необходимо было зарегистрироваться, заполнив Web-форму с личными данными. Затем вам выдается пароль на доступ, который действует только в течение одной сессии. После этого пароль уничтожается, и повторное подключение становится невозможным. Файлы закачиваются в специальную директорию, в которую разрешена лишь запись. Самим файлам устанавливаются права только для чтения и записи, а выполнение остается недоступным. Таким образом, пароли можно передавать в открытом виде. Даже если хакер увидит его, подключиться не сможет.
Реализовать одноразовые пароли достаточно просто, если ваш сервер использует подключаемые модули аутентификации РАМ (см. разд. 3.3.3).
После того как вы авторизовались на сервере, можно выполнять любые другие команды FTP-сервера. Но тут есть одна проблема — список директив зависит от сервера. Конечно же, есть определенные требования, которых придерживаются все производители, это основные команды, которые описаны в RFC (Requests for Comments, рабочие предложения). Так как возможности, предоставляемые стандартом, уже устарели, то разработчики Web-серверов начали добавлять свои функции, которые могут отличаться в разных версиях программ. Так что, если клиентская программа в каких-то ситуациях ведет себя не совсем корректно, то это еще не значит, что она плохая, просто она может быть несовместима с данным сервером.