Рассмотрим следующую строку из файла /etc/passwd с
:
sadeq:x:1000:1000:Mohammad Sadeq Dousti,,,:/home/sadeq:/bin/custom-script.sh
Последняя часть, /bin/custom-script.sh
, показывает команда/скрипт должен быть запущен при входе пользователя в систему. В настоящее время, это'ы простой баш скрипт, который представляет пользователю меню, эффективно ограничивая возможные команды, которые он может выполнить.
Или, я надеюсь! Может быть, там'ы таким образом, пользователи могут обойти `custom-script.sh и доступ к bash напрямую. Затем, они могут выполнить любую команду в их контексте пользователя.
Есть ли способ, чтобы обойти выше скрипт bash и другие команды?
Редактировать: рассмотрим следующий простой случай как custom-script.sh`:
#!/bin/bash
echo What is your name?
read name
echo Hi $name
Предположим, что существует (возможно, непреднамеренных) бэкдор.
По умолчанию файл/etc/passwd и на рабочие станции Sun в начале 1990-х годов включало в себя запись что-то вроде этого:
games::0:0:games:/nopath:/bin/false
Другими словами, учетную запись с именем 'игры' без пароля. Видимо, гений, который придумал эту идею имел никакой фантазии, и назначить ему UID и GID ноль (т. е. корень и колеса). В целом, это было нормально, в качестве домашнего каталога бессмысленно и снаряд был настроен на программу, которая всегда завершалась с провалом. Кроме того, настройки по умолчанию для доступа к сети -- телнет, также rlogin, RCP-это, по FTP -- были установлены для предотвращения проникновения жидкостей в ноль. Там была отдельная запись passwd для root, с правильно настроенной Установить пароль, домашний каталог и Шелл.
Это означало, что если бы вы попытались войти в игры, произойдет следующее:
Су корня. Так или иначе использует значение корня
пароль, а не запись игры
пароль`, и таким образом работает они, как корень должен работать.Поэтому игры счет оказался всегда плохо, если вы не выполните графический логин. В этом случае, единственное, что появились часы. Однако, вы могли щелкните правой кнопкой мыши на фоне получить root меню, с помощью предоставленного списка программ, которые пользователи обычно подгоняют под себя. (Настройка меню не't работа для игровой учетной записи; я не'т помню, почему.) Вы могли бы попробовать, чтобы принести больше окно терминала, которое будет все плохо. Была игра-головоломка (которые могут быть толчком к учетной записи в первую очередь). Другой выбор был выйти. А потом был графический инструмент отладки, dbxtool
.
dbxtool была графическая оболочка для символической
писемотладчик, похожие на сегодня'ы
ГДК. Будучи ЮИД ноль, можно назначить и контролировать любой процесс в системе, хотя это не было полезно, потому что программы, предоставляемые на Солнце были составлены без символов. Вы могли бы запустить снаряд, но это будет использовать переменную
Шелл, которая является
/Бен/ложь`. Однако, вы также можете изменить переменные среды! Это означало, что вы могли бы получить корневой оболочки следующие:
dbxtool
.setenv домой /
!
Вуаля, оболочку с правами root без пароля!
Итак, не думайте, что пользователь может'т сбежать из поврежденных оболочек.
Нельзя обойти выполнение скрипта. Это ваш login shell, и будет запускаться каждый раз, когда вы входите. И как login shell, будет отключен каждый раз, когда он заканчивается. Но вы можете использовать причуды, ошибки и несоответствия на оболочку, чтобы избежать.
Одна вещь вы можете сделать, чтобы выйти в оболочку, используя любой вариант в меню. Если меню позволяет запустить ВИМ
, меньше
, больше
или некоторые другие команды, вы можете теоретически вырваться на свободу. Если сисадмин-это опытные, эти команды будут использовать свои ограниченные версии и не будет работать.
Я помню, как военная игра, в которой произошел подобный случай - оболочка указал на то, что просто распечатали выходного сигнала с помощью больше команду, а затем завершил сессию. Однако, начиная с больше имеет встроенный текстовый редактор (в данном конкретном случае это был ви), этого было достаточно, чтобы изменить размер окна терминала, из которого вы были, так что все больше активируется, а затем использовать его, чтобы избежать снаряда.
Таким образом, ответ зависит от того, что ваш скрипт делает. Регистрация человек страниц, для каждой из команд вы работаете, чтобы избежать уязвимости.
Пример скрипта, который вы разместили, только пользователь может, например, узнать много о системе, как имена других пользователей и установленных программ. Е. Г.
What is your name?
> /home/*
Hi /home/foo /home/bar /home/sadeq
Собственно скрипт у вас может быть пригодна для использования в подобных отношениях, возможно, до точки, где пользователь может получить реальный доступ к Shell.
Вы, вероятно, может улучшить ситуацию, начиная меню войти в изолированной среде: он выиграл'т должен быть 100% пуленепробиваемое, но, по крайней мере, песочницы будет подключить целую кучу дыр в безопасности, автором сценария, возможно, оставил.
Мы выбрали: Скрипт вы'вновь упомянул это безопасно!
Но понимание того, что в производстве можно использовать различные версии, вы должны быть осведомлены о следующих понятиях:
1. Ли 'читать' уязвим для введения команды. Если она уязвима, то 'и#39; значение 'Боб; кат в /etc/passwd с' может вернуть содержимое файла passwd файл и 'Боб && /бин/Баш-я' может дать интерактивные Баш сессии.
Такие вопросы уже были заданы, Ф.е. здесь:
Ответ говорит "Нет, не уязвимых и", потому что:
" по(..) современные снаряды разбирать заявление до любой переменной замена, и, таким образом, подвержены этой атаке.&и"
Так что в вашем примере ввода пользователя 'читать' не может быть исключена из стандартной оболочки.
2. Где входной сигнал анализируется?
Ваш рецепт является безопасным, потому что 'Эхо' не обеспечивают любой технике убежать (по крайней мере не известно). Но будьте внимательны при использовании и"опасно" и двоичные файлы, как указано в Ф.е. здесь:
https://fireshellsecurity.team/restricted-linux-shell-escaping-techniques/
Если входные данные анализируются: мужчина|меньше|больше, как awk, найти, то Nmap, на Python|PHP или Perl, то Баш|ш, то побег возможен", " предоставление полностью интерактивной оболочки (Я'd только проверена с меньшим, Python и найти).
Если поставить вход только эхо, как в вашем примере, то вы'ре хорошо.
3. Ли ваш вклад, используется командная оболочка со звездочками (), как: тар * или Общ **
Я не представляю, когда это может быть полезно в вашем случае, но это's всегда лучше упомянуть. Если это происходит, пожалуйста, ознакомились с следующие записи:
https://www.defensecode.com/public/DefenseCode_Unix_WildCards_Gone_Wild.txt
Такое поведение также может привести к выходу из вашего сценария.