ЖУРНАЛ ХАКЕР

Дуршлаг в Sendmail

Спецвыпуск Хакера, номер #007, стр. 007-040-2


(хотя меня, конечно, иметь лучше не стоит ;))) без пароля и с правами рута!

Плюсы: Баг достаточно прост в использовании.

Минусы: Обязательно наличие юзверских прав на ломаемой машине. Не работает

в следующих случаях:

1) /var и / на разных разделах.

2) /var/tmp отсутствует или доступ туда закрыт.

3) на машине присутствует postmaster, т.е. ошибочные письма не попадут в

/var/tmp/dead.letter.

Баг нумбер два раза - два админа-молодца, одинаковых с лица

Версии демона: до 8.10.0 (8.9.3 - абсолютно точно)

Все эти превосходные версии содержат целых 2 бага, а именно:

1) Возможность запихивать LMTP (local mail transfer protocol - протокол

передачи локальной почты)-команды прямо в тело сообщения.

2) Возможность создания тупика между сендмайлом и mail.local.

Описание:

1) Пока mail.local в режиме LMTP ищет в теле мессаги строку "./n" -

конец сообщения, сендмайл не пропускает ее. Но если в теле мессаги встроить

строку "(2047 chars).\n", то получится мнимый конец :). Остаток мыла будет

воспринят как LMTP-команды. Это позволяет, например, посылать сообщения на

несколько ящиков сразу, в обход самого сендмайла и фильтров.

2) Но mail.local возвращает результат выполнения LMTP-команды сендмылу. Но

поскольку в данный момент времени он не ждет этих сообщений, буфер

ввода/вывода будет просто наполняться ими. При большом количестве команд (или

просто текста, ведь он тоже будет восприниматься как команды, а следовательно

mail.local будет выдавать ошибки) буфер будет просто забит и возникнет

пресловутый тупик.

Баг нумбер два раза по два - люблю админов я

Версии демона: 8.10.0 и 8.10.1 (только на Solaris'е)

Описание: Эти версии тоже, как ни странно, содержат два бага:

1) Версия сендмыла 8.10.0 для соляриса предоставляла такую вещь, как

"Content-Length". По ней определяется, сколько места будет занимать мыло на

винте. Мол, эта фича у нас новая такая. Но они не учли возможность, что

злобные хацкеры могут заменить реальный "Content-Length" на подставной

"Content-Length:99999999" %))). Особенно забавный результат достигается, если

в конце заголовка вставить следующее:

"(2047 chars)\n

Content-Length: 99999999\n"

2) Если тело сообщения пусто, а в конце заголовка стоит "(2047

chars)Content-Length: \n", то следующая мессага будет "приклеена" к этому

заголовку, потому что строка "\n" будет потеряна, пока сендмайл пытается

считать Content-Length.

Баг нумбер три - сюда смотри

Версии демона: 8.7 - 8.8.2 (Linux и OpenBSD)

Описание: У сендмайла этих версий существует так называемый smtpd-баг. Что это

такое и кого им кормят, объяснять достаточно долго (скажу только, что баг

это достаточно известный).

Код эксплоита (в оригинале):

# Hi !

# This is exploit for sendmail smtpd bug

# (ver. 8.7-8.8.2 for FreeBSD, Linux and may be other platforms).

# This shell script does a root shell in /tmp directory.

# If you have any problems with it, drop me a letter.

# Have fun !

#

#

# ----------------------

Назад на стр. 007-040-1  Содержание  Вперед на стр. 007-040-3