Автор Тема: "Systemd - капец" или systemd-run -t /bin/bash  (Прочитано 26155 раз)

Оффлайн rits

  • Завсегдатай
  • *
  • Сообщений: 1 031
  • ITS
Набираю в терминале от пользователя systemd-run -t /bin/bash ввожу пароль пользователя и попадаю в консоль root!!!
Это у меня только так или на ваших серверах тоже самое?

Оффлайн rits

  • Завсегдатай
  • *
  • Сообщений: 1 031
  • ITS
Re: "Systemd - капец" или systemd-run -t /bin/bash
« Ответ #1 : 12.12.2018 19:05:04 »
Жду комментариев от Speccyfighter )

sudo su - выбивает ... is not in the sudoers file. This incident will be reported.
А команда systemd-run -t /bin/bash выполняет данную фишку.
Пользователь в группе wheel - это так задумано?
« Последнее редактирование: 12.12.2018 20:01:06 от rabochyITs »

Оффлайн ovk

  • Давно тут
  • **
  • Сообщений: 133
Re: "Systemd - капец" или systemd-run -t /bin/bash
« Ответ #2 : 12.12.2018 20:35:57 »
На рабочей станции получилось, на сервере не прошло - там, по счастью, нет systemd

Оффлайн kostyalamer

  • Мастер
  • ***
  • Сообщений: 432
    • Сайт клуба активных пользователей ALT Linux
Re: "Systemd - капец" или systemd-run -t /bin/bash
« Ответ #3 : 12.12.2018 20:50:21 »
 
Набираю в терминале от пользователя systemd-run -t /bin/bash ввожу пароль пользователя и попадаю в консоль root!!!
Это у меня только так или на ваших серверах тоже самое?

Подтверждаю на свежайшем Arch Linux , пингвин становится все лучше и лучше  :-o
Archlinux  / Altlinux Free Mate p8

Оффлайн Speccyfighter

  • Мастер
  • ***
  • Сообщений: 10 259
Re: "Systemd - капец" или systemd-run -t /bin/bash
« Ответ #4 : 12.12.2018 22:48:23 »
Жду комментариев от Speccyfighter )

Шо скажет Speccyfghter?

Speccyfighter скажет шо-то такэ:

Поттер, ты чё блин делаешь, мудила?!
$ whoami
tester2
$ echo $USER
tester2
$ echo $UID
503
$ groups
tester2
$ systemd-run -t /bin/bash
Running as unit: run-u306.service
Press ^] three times within 1s to disconnect TTY.
# systemctl status run-u306.service
● run-u306.service - /bin/bash
   Loaded: loaded (/run/systemd/transient/run-u306.service; transient)
Transient: yes
   Active: active (running) since Wed 2018-12-12 22:35:35 MSK; 16s ago
 Main PID: 3963 (bash)
    Tasks: 3 (limit: 4915)
   CGroup: /system.slice/run-u306.service
           ├─3963 /bin/bash
           ├─3973 systemctl status run-u306.service
           └─3974 less

дек 12 22:35:35 localhost.localdomain systemd[1]: Started /bin/bash.
# ps -eo pid,user,command | grep tester2 | grep bash
 3751 tester2  bash
 3790 tester2  bash
 3949 tester2  systemd-run -t /bin/bash
# echo $UID
0
# echo $USER

# echo $HOME

# echo $PATH
/root/bin:/sbin:/usr/sbin:/usr/local/sbin:/bin:/usr/bin:/usr/local/bin

Если пароль пользователя группы wheel увели, непривилегированный пользователь может получить сессию с UID=0.
При этом находиться в группе wheel ему не нужно.

Сия хрень обкаталась в лайве mate, в котором пароль установлен для tester tester2 root
При этом заходить в сессию или знать логин пользователя группы wheel, этому пользователю не нужно. Гуёвина и так его подскажет (скриншот). Достаточно знать пароль пользователя группы wheel, после чего, непривилегированный пользователь получит неограниченный доступ к компьютеру находясь в своей сессии.
С учётом того, что логин и имя домашнего каталога пользователя могут не совпадать.

Команда с вводом пароля пользователя группы wheel не сработает
$ systemd-run -t /bin/bash

если аккаунт пользователя wheel, пароль которого будет введён, был заблокирован одной из команд
# usermod -L wheeluser
# passwd -l wheeluser


Но Speccyfighter делает для себя вывод:
использование systemd потенциально опасно.


Для сравнения, - в чём разница между 'systemd-run -t /bin/bash' с паролем пользоввтеля tester и 'su - terster'
$ su - tester
bash: /bin/su: Отказано в доступе
Чего и следовало ожидать, ведь пользователь не в группе wheel.
« Последнее редактирование: 13.12.2018 02:10:36 от Speccyfighter »

Оффлайн Speccyfighter

  • Мастер
  • ***
  • Сообщений: 10 259
Re: "Systemd - капец" или systemd-run -t /bin/bash
« Ответ #5 : 13.12.2018 04:21:42 »
Через виртуальный терминал:
[altlinux@localhost ~]$ whoami                                                                                                                                         
 
altlinux                                                                                                                                                               
 
[altlinux@localhost ~]$                                                                                                                                                 
 
[altlinux@localhost ~]$ groups                                                                                                                                         
 
altlinux wheel uucp proc cdwriter audio radio users fuse netadmin xgrp scanner                                                                                         
 
[altlinux@localhost ~]$                                                                                                                                                 
 
[altlinux@localhost ~]$ systemd-run -t /bin/bash                                                                                                                       
 
==== AUTHENTICATING FOR org.freedesktop.systemd1.manage-units ====                                                                                                     
 
Authentication is required to manage system services or other units.                                                                                                   
 
Multiple identities can be used for authentication:                                                                                                                     
 
 1.  altlinux                                                                                                                                                           
 
 2.  altlinuxorig                                                                                                                                                       
 
 3.  tester                                                                                                                                                             
 
Choose identity to authenticate as (1-3): 1                                                                                                                             
 
Password:                                                                                                                                                               
 
==== AUTHENTICATION COMPLETE ====                                                                                                                                       
 
Running as unit: run-u289.service                                                                                                                                       
 
Press ^] three times within 1s to disconnect TTY.                                                                                                                       
 
[root@localhost /]#                                                                                                                                                       
[root@localhost /]# echo $UID                                                                                                                                             
0                                                                                                                                                                         
[root@localhost /]#                                                                                                                                                       
[root@localhost /]# echo $PATH                                                                                                                                           
/root/bin:/sbin:/usr/sbin:/usr/local/sbin:/bin:/usr/bin:/usr/local/bin                                                                                                   
[root@localhost /]#                                                                                                                                                       
[root@localhost /]#                                                                                                                                                     

Оффлайн Speccyfighter

  • Мастер
  • ***
  • Сообщений: 10 259
Re: "Systemd - капец" или systemd-run -t /bin/bash
« Ответ #6 : 13.12.2018 04:38:21 »
Поттер, ты дубина:
непривилегированному пользователю должно быть категорически запрещено запускать оболочку под другим пользователем вне зависимости от того, знает он пароль пользователя wheel или не знает.

Оффлайн rits

  • Завсегдатай
  • *
  • Сообщений: 1 031
  • ITS
Re: "Systemd - капец" или systemd-run -t /bin/bash
« Ответ #7 : 13.12.2018 07:19:36 »
Интересно, что скажут "базальтовцы" - это уязвимость или пусть так и останется, исправления костыльные будут?
Благо, у меня на серверах, sysv старткит стоит.

Оффлайн Skull

  • Глобальный модератор
  • *****
  • Сообщений: 19 908
    • Домашняя страница
    • Email
Re: "Systemd - капец" или systemd-run -t /bin/bash
« Ответ #8 : 13.12.2018 08:36:22 »
Вряд ли без бага в багзилле shaba@ (как мейнтейгер systemd) будет читать форум. А остальным разработчикам нет смысла комментировать.
Андрей Черепанов (cas@)

Оффлайн asy

  • alt linux team
  • ***
  • Сообщений: 8 099
Re: "Systemd - капец" или systemd-run -t /bin/bash
« Ответ #9 : 13.12.2018 09:04:35 »
Вообще пишут, что тут systemd просто эксплуатирует уязвимость из PolicyKit. Баг вешать надо, но не на systemd.

UPD: а нет, это другое совсем, просто утилита та же.
« Последнее редактирование: 13.12.2018 13:35:50 от asy »

Оффлайн Speccyfighter

  • Мастер
  • ***
  • Сообщений: 10 259
Re: "Systemd - капец" или systemd-run -t /bin/bash
« Ответ #10 : 13.12.2018 12:13:03 »
Интересно, ... это уязвимость ...?

ИМХО:
Это опасная уязвимость на уровне проектирования systemd.

Оффлайн asy

  • alt linux team
  • ***
  • Сообщений: 8 099
Re: "Systemd - капец" или systemd-run -t /bin/bash
« Ответ #11 : 13.12.2018 14:49:50 »
Набираю в терминале от пользователя systemd-run -t /bin/bash ввожу пароль пользователя и попадаю в консоль root!!!
Это у меня только так или на ваших серверах тоже самое?
На наших серверах нет systemd. Да polkit там тоже только по недосмотру если. ;-)

Повесил https://bugzilla.altlinux.org/35763

Оффлайн Speccyfighter

  • Мастер
  • ***
  • Сообщений: 10 259
Re: "Systemd - капец" или systemd-run -t /bin/bash
« Ответ #12 : 13.12.2018 15:21:33 »
Набираю в терминале от пользователя systemd-run -t /bin/bash ввожу пароль пользователя и попадаю в консоль root!!!

Тут фишка даже не в root.
А в том, что в принципе непривилегированный пользователь может запустить оболочку другого пользователя, пользователя группы wheel, при знании пароля этого пользователя (что su в системах на sysv пресечёт на самом начальном этапе):
$ whoami
tester2
$ groups
tester2
$ systemd-run --uid=502 -t /bin/bash
Running as unit: run-u148.service
Press ^] three times within 1s to disconnect TTY.
$ whoami
tester
$ groups
tester wheel
« Последнее редактирование: 13.12.2018 15:24:16 от Speccyfighter »

Оффлайн asy

  • alt linux team
  • ***
  • Сообщений: 8 099
Re: "Systemd - капец" или systemd-run -t /bin/bash
« Ответ #13 : 13.12.2018 15:33:12 »
Тут фишка даже не в root.
А в том, что в принципе непривилегированный пользователь может запустить оболочку другого пользователя, пользователя группы wheel, при знании пароля этого пользователя
Нет. Фишка в том, что пользователь группы wheel, внезапно, оказывается равен пользователю root в правах с точки зрения разработчиков systemd. То есть, если policy kit говорит, что это админская группа, systemd-run считает, что пользователю можно выдать права root для исполнения. И, на самом деле, так считают не только разработчики systemd. Вот тут вот обсуждение про sudo про то же самое: https://lists.altlinux.org/pipermail/devel/2018-November/205847.html

Оффлайн Speccyfighter

  • Мастер
  • ***
  • Сообщений: 10 259
Re: "Systemd - капец" или systemd-run -t /bin/bash
« Ответ #14 : 13.12.2018 16:06:27 »
Тут фишка даже не в root.
А в том, что в принципе непривилегированный пользователь может запустить оболочку другого пользователя, пользователя группы wheel, при знании пароля этого пользователя
Нет. Фишка в том, что пользователь группы wheel, внезапно, оказывается равен пользователю root в правах с точки зрения разработчиков systemd. То есть, если policy kit говорит, что это админская группа, systemd-run считает, что пользователю можно выдать права root для исполнения. И, на самом деле, так считают не только разработчики systemd. Вот тут вот обсуждение про sudo про то же самое: https://lists.altlinux.org/pipermail/devel/2018-November/205847.html

su работает точно так же, - дефолтом запустится оболочка root.
И при отсутствии прав, su изначально откажет в доступе.
Но в принципе да, но по поводу wheel я бы поспорил:
по моему скромному, сразу после инсталляции ещё не один пользователь в системе не зарегистрирован.
То что создаётся на этапе инсталляции, это аккаунт root и его пользовательский аккаут. Само-собой root сидящий в своём пользовательском аккаунте и должен входить в группу wheel. Другое дело что все пользователи сидят именно под пользовательским аккаунтом пользователя root. Не root сессии.
И дефолтом они и вываливаются в root.