Logo Море(!) аналитической информации!
IT-консалтинг Software Engineering Программирование СУБД Безопасность Internet Сети Операционные системы Hardware
Архив форумов ЦИТФорума
Море(!) вопросов - Море(!) ответов
 
 FAQFAQ   ПоискПоиск   ПользователиПользователи   ГруппыГруппы   РегистрацияРегистрация 
 ПрофильПрофиль   Войти и проверить личные сообщенияВойти и проверить личные сообщения   ВходВход 
Как правильно задавать вопросы

Суидный шелл

 
Перейти:  
Этот форум закрыт, вы не можете писать новые сообщения и редактировать старые.   Эта тема закрыта, вы не можете писать ответы и редактировать сообщения.    Список форумов Архив форумов ЦИТФорума -> Unix
Предыдущая тема :: Следующая тема  
Автор Сообщение
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.

она работает, но результат тот же Sad
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
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. Но тогда не удастся передавать туда строкУ, а придется самомУ нарезАть ее на аргументы по пробелам и табуляциям. А если захочешь обрабатывать кавычки и перенаправления ввода-вывода, то прямая тебе дорого в Линусы Торвальдсы! Smile

Старый shell (бинарники и исходники) можно найти в старых FreeBSD - думаю, 3.x еще не рубят SetUID. Но для бинарников надо доставлять compat. Не проще ли покоцать исходники программы su ии оставить себе рутовые права через sudo?
Вернуться к началу
Показать сообщения:   
Этот форум закрыт, вы не можете писать новые сообщения и редактировать старые.   Эта тема закрыта, вы не можете писать ответы и редактировать сообщения.    Список форумов Архив форумов ЦИТФорума -> Unix Часовой пояс: GMT + 3
Страница 1 из 1

 
Перейти:  
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах


Powered by phpBB © 2001, 2002 phpBB Group
Русская поддержка phpBB

 

IT-консалтинг Software Engineering Программирование СУБД Безопасность Internet Сети Операционные системы Hardware

Информация для рекламодателей PR-акции, размещение рекламы — adv@citforum.ru,
тел. +7 495 6608306, ICQ 232284597
Пресс-релизы — pr@citforum.ru
Послать комментарий
Информация для авторов
This Web server launched on February 24, 1997
Copyright © 1997-2000 CIT, © 2001-2006 CIT Forum
Внимание! Любой из материалов, опубликованных на этом сервере, не может быть воспроизведен в какой бы то ни было форме и какими бы то ни было средствами без письменного разрешения владельцев авторских прав. Подробнее...