Предыдущая тема :: Следующая тема |
Автор |
Сообщение |
xt
Зарегистрирован: 17.12.2002 Сообщения: 557 Откуда: Донецк, UA
|
Добавлено: Ср Янв 08 2003 16:58 Заголовок сообщения: Суидный шелл |
|
|
Не работает BASH c установленным битом SUID. Что делал: Копирую bash, ставлю на него SUID и SGID биты (делаю енто под рутом), потом логинюсь под юзером, запускаю этот шелл и... в результате прав рута не получаю. CSH с установленными битами вобще не запускается... Делалось это в ASP(v7.2) и Mandrake(8.0).
Такое чувство что эту функцию специально отключили для безопасности...
Как ещё можно оставить для себя права рута в системе? |
|
Вернуться к началу |
|
 |
Dmitry.Karpov http://prof Гость
|
Добавлено: Ср Янв 08 2003 17:07 Заголовок сообщения: Напиши программу на C |
|
|
Программка простенькая типа main() { exec("/bin/sh"); } только маны почитай, а то подробностей я не помню... |
|
Вернуться к началу |
|
 |
xt
Зарегистрирован: 17.12.2002 Сообщения: 557 Откуда: Донецк, UA
|
Добавлено: Ср Янв 08 2003 17:30 Заголовок сообщения: не помогло(+) |
|
|
программа следущая main() { system("/bin/sh"); }
пропускаю через gcc.
она работает, но результат тот же  |
|
Вернуться к началу |
|
 |
Dmitry.Karpov http://prof Гость
|
Добавлено: Ср Янв 08 2003 20:58 Заголовок сообщения: Попробуй так: |
|
|
main() { char string[255]; while(1) { scanf("%s\n",string); system(string); } } |
|
Вернуться к началу |
|
 |
xt
Зарегистрирован: 17.12.2002 Сообщения: 557 Откуда: Донецк, UA
|
Добавлено: Чт Янв 09 2003 10:44 Заголовок сообщения: Тот же результат(+) |
|
|
По-прежнему - запускается, но права не даёт. Подробности: если я ввожу какую-то комманду (для примера написал прогу которая ждёт ввода с клавиатуры - a.out), а потом на др. терминале набираю "ps -A -l", она показывает что UID этой проги совсем не 0(a.out). Та же ps - показывает не рутовый UID:((
Кстати: если я ввожу комманду которой не существует, то появл. следущее: sh: y: command not found что это ещё за sh?
ИМХО: bash при запуске каким-то образом проверяет UID запускающего её пользователя, и меняет UID на юзерский. Где бы найти архив старых шеллов где небыло бы этой фичи? |
|
Вернуться к началу |
|
 |
xt
Зарегистрирован: 17.12.2002 Сообщения: 557 Откуда: Донецк, UA
|
Добавлено: Чт Янв 09 2003 17:40 Заголовок сообщения: Нашёл в мануале по system |
|
|
...неправильно функционирует в программах с привилегиями suid или sgid тех систем, где /bin/sh заменено на bash версии 2, так как bash 2 обнуляет права при запуске.
у меня bash версии 2 .....блин
Вы случайно не знаете сайт где можно скачать старые версии юниксовских програм? что-то типа музея... |
|
Вернуться к началу |
|
 |
Dmitry.Karpov http://prof Гость
|
Добавлено: Чт Янв 09 2003 18:17 Заголовок сообщения: system(...) - это exec("sh",...) |
|
|
У программы существуют UID и EffectiveUID. SetUID меняет только второй - именно так passwd понимает, кто ее запустил. Так что придется заменить system на exec, но не добавлять туда sh, а то он обнулит SetUID. Но тогда не удастся передавать туда строкУ, а придется самомУ нарезАть ее на аргументы по пробелам и табуляциям. А если захочешь обрабатывать кавычки и перенаправления ввода-вывода, то прямая тебе дорого в Линусы Торвальдсы! 
Старый shell (бинарники и исходники) можно найти в старых FreeBSD - думаю, 3.x еще не рубят SetUID. Но для бинарников надо доставлять compat. Не проще ли покоцать исходники программы su ии оставить себе рутовые права через sudo? |
|
Вернуться к началу |
|
 |
|