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 ()

Ответ на: комментарий от JB

sasha@alexander:~$ gcc rs_prctl_kernel.c -o exploit
sasha@alexander:~$ ./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: No such file or directory
sasha@alexander:~$ uname -r
2.6.17.4-i686

debian unstable

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

на сцкуния.ком на ядре 2,6 висят прошлогодние уязвимости в статусе "unpatched". что-то после этого мое к ним доверие пошатнулось...

http://secunia.com/product/2719/

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

Зато у нас, в Бобруйском заборостороительном ПТУ, учат редактировать исходники эксплоитов, чтобы nosuid на /tmp не мешало нашим грязным замыслам.

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

>А в нашем детском саде юных администраторов учат делать nosuid и noexec на /tmp/ раздел.

А толку-то. Запись кроновская-то все равно от рута исполняется - че хошь, то и делай. Кто мешает /bin/sh не в /tmp копировать, а в /bin/sh-r00t, например.

WFrag ★★★★
()
Ответ на: комментарий от askh

> Если я правильно понимаю, то Debian 3.1 эта уязвимость не затрагивает? Здесь используется ядро версии 2.6.8.

Да, не затрагивает - там у PR_SET_DUMPABLE argv2 не может быть равен 2.

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

> Кстати у кого нет возможности пропатчить ядро быстро, а дыру надо закрыть, простое решение: touch /etc/cron.d/core chattr +i /etc/cron.d/core и вобщем-то все.

Не забыть сделать еще echo 0 > /proc/sys/kernel/core_uses_pid

Можно совсем просто: chmod 700 /etc/cron.d

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

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

kayak, иди книжки читай. Интернет тебе совсем мозг разъел, горе-грамотей.

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

> Угу?

Неа... /tmp (nosuid, noexec) + SELinux (в котором и прописано правильное расположение /bin/chmod и т.п.). Т.е. если машина мало-мальски защищена, то proof обламывается и есть сомнения, что реальный сплоит заработает.

Т.е. старое кольцо - чтобы отключить защиту, нужен как минимум права, чтобы взять права - нужно отключить защиту.

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

> Братва, работает! > Я тут один сервак похачил :)

За тобой уже выехал Отряд Мужчин Особой Нежности :) Это случаем не глюк.дебиан.орг было? ;)

Gharik
()

Фишка то всего этого в другом. Ошибка то в кроне. Достаточно свалить в core любую суидную прогу (как свалить это уже вопрос другой, судя по кол. багов решаемый) в которой где-то будет строчка для крона в его каталог. А уж он сам выполнит нужный нам код с правами root. И никаких переполнений стека.

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

Ошибка не в кроне, а в ядре, который дампит кор, туда и тогда, куда и когда ненужно ;P

А крон просто тупо найдя в этом файле строки своего формата исполняет их.

Крон конечно тоже глупо себя ведет, но это уже дело десятое.

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

лол. в качестве примочки на глаз - "привИлегии" :-)

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

Да уж, дырявое линупс-ядро кидает корку куда попало, а тупой крон выполняет бинарные файлы коры...

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

Добавили бля фишку к PR_SET_DUMPABLE в 2.6.13, в 2.6.17 выкинули вообще. Идиоты.

anonymous
()

r00t@r00t:~$ gcc ./rs_prctl_kernel.c -o ./rs_prctl_kernel
r00t@r00t:~$ ./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 /home/r00t/assa when finished) ...
sh: /home/r00t/assa: No such file or directory
r00t@r00t:~$ id
uid=1000(r00t) gid=100(users) groups=11(floppy),17(audio),18(video),19(cdrom),100(users)
r00t@r00t:~$ uname -a
Linux r00t 2.6.16.20madebyR00T #1 Mon Jun 19 13:57:55 MSD 2006 x86_64 Intel(R) Celeron(R) CPU 2.80GHz GenuineIntel GNU/Linux

Slamd64-current
С /tmp/sh тоже не работает.
Хотя, а вот в созданном ручками /etc/cron.d файл core появился.
Но все-равно ничего не произошло.

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

>можешь сам проверить - сделай rm -rf / :)

Я пытался стирать и переименовывать файлы и каталоги в корне, в /etc, в /var, после чего и написал, что шелл не работает. Никак.

jackill ★★★★★
()
Ответ на: комментарий от Ubnormal

>А в нашем детском саде юных администраторов учат делать nosuid и noexec на /tmp/ раздел.

Насколько я помню, к сожалению на десктопах это может привести к неисполнению некоторых прог.

jackill ★★★★★
()
Ответ на: комментарий от R00T

>Хотя, а вот в созданном ручками /etc/cron.d файл core появился. Но все-равно ничего не произошло.

Кстати, корочный файл почему-то появляется у меня в том же каталоге, что и эксплоит, а не в /etc/cron.d. Это странно.

jackill ★★★★★
()
Ответ на: комментарий от Ubnormal

> А в нашем детском саде юных администраторов учат делать nosuid и noexec на /tmp/ раздел.

Ну и запишу я в /dev/shm или в /home - тебе от этого легче станет?

no-dashi ★★★★★
()

SUSE 10.1 cо всеми secure обновлениями.
Эксплоит работает.
Ежели кто сомневается, то попробуйте запустить эксплоит.
Если /tmp/sh не появился, сразу, то немного подождать пока он появится.
Затем запустить /tmp/sh , а уже в нем заранее скомпиленный бинарь с таким кодом:

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

int main() {
setuid(0);
system("/bin/sh");
}

Dead ★★★★
()
Ответ на: комментарий от no-dashi

> Ну и запишу я в /dev/shm или в /home - тебе от этого легче станет?

А ~/bin/bash - это неправильный bash :) Помнится в молодости пытался я прикрутить одну "распределенную" софтину для мониторинга кучи систем (RHEL) - так SElinux, сцуко такой, по дефолту попросту блокировал любые попытки запуска суидных скриптов, собирающих статистику из /opt/bb/*, и не позволял апачу читать откуда либо еще, кроме как из /var/www. При должной настройке чем воркстейшна хуже... тем более, что в Федоре тот же SElinux...

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

>Неа... /tmp (nosuid, noexec) + SELinux (в котором и прописано правильное расположение /bin/chmod и т.п.). Т.е. если машина мало-мальски защищена, то proof обламывается и есть сомнения, что реальный сплоит заработает.

>Т.е. старое кольцо - чтобы отключить защиту, нужен как минимум права, чтобы взять права - нужно отключить защиту.

Цитата с http://www.gentoo.org/proj/en/qa/backtraces.xml :

------------ By default core dumps are not enabled on Gentoo Linux. ------------

Поэтому SELinux не обязательное условие, если у вас Gentoo Linux :) Или другой дистр, но руки растут из правильного места.

Ubnormal
()

Нде, зачем кому-то понадобился вариант suid_dumpable=2 - загадка... Похоже на сознательную диверсию.

Murr ★★
()
Ответ на: комментарий от no-dashi

Мне легче от того что у меня эта хрень не работает :)
Ибо emerge hardened-sources + по дефолту Gentoo не коредампит :)

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

Угу, нулевой размер дампа тоже когда-то был вписан в конфиги, уже забыл почему, но сделано было не зря :)

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

>Dead

Сделал как ты сказал.

Сам sh имеет рутовый uid.

Но не работает, сцуко. Ничего не могу сделать там, где нужны рутовые права.

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

> Сделал как ты сказал.
Сам sh имеет рутовый uid.
Но не работает, сцуко. Ничего не могу сделать там, где нужны рутовые права.

Хреновый из тебя хакир :)

$ uname -rs
Linux 2.6.16-gentoo-r11
$ ./prctl
Linux Kernel 2.6.x PRCTL Core Dump Handling - Local r00t
By: dreyer & RoMaNSoFt. Modified for best effect.
[ 10.Jul.2006 ]

[*] Creating Cron entry
[*] Sleeping ... (** please wait **)
[*] Running shell ...
sh-3.1# id
uid=0(root) gid=100(users) groups=4(adm),5(tty),10(wheel),11(floppy),16(cron),1
8(audio),19(cdrom),27(video),35(games),100(users)
sh-3.1# ls -la /bin/root
---s--s--x 1 root root 193 Jul 14 00:39 /bin/root
sh-3.1# touch /xxxxxx
sh-3.1# ls -la /xxxxxx
-rw-r--r-- 1 root users 0 Jul 14 00:41 /xxxxxx
sh-3.1# rm /xxxxxx
sh-3.1# exit

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

> С /tmp/sh тоже не работает. Хотя, а вот в созданном ручками /etc/cron.d файл core появился. Но все-равно ничего не произошло.

Чайникам учить матчасть, man bash на предмет того, что делает bash в случае, когда euid != uid (запуск суидного шелла).

anonymous
()

grsec: signal 11 sent to /tmp/a.out[a.out:2834] uid/euid:500/500 gid/egid:500/500, parent /tmp/a.out[a.out:29360] uid/euid:500/500 gid/egid:500/500 by /tmp/a.out[a.out:29360] uid/euid:500/500 gid/egid:500/500, parent /bin/bash[bash:31487] uid/euid:500/500 gid/egid:500/500

Что надо сделать дополнительно, чтобы эксплойт сработал? :-)

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

> Хехе. Именно эта уязвимость была использована для недавнего взлома gluck.debian.org

Во-во. А у кого-то "не работает".

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

>kernel.core_pattern = /var/core/%e.%p нас спасет!

/etc/security/limits.conf с hard limit на coredump + pam_limits.so в /etc/pam.d/system_auth будет чуть прямолинейней, IMHO. :)

Murr ★★
()
Ответ на: комментарий от dreamer

Попробуйте посмотреть здесь: http://www.securityfocus.com/bid/18874/exploit, помимо этого эксплойта, есть еще 2 которые работают на SuSe 10 и должны работать в 10.1. Так по крайней мере говорится в последнем отчете по безопасносте SuSE (SUSE Security Summary Report SUSE-SR:2006:016). Временные обновления для некоторых версий уже есть.

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