Я читал справочную страницуunzip
и столкнулся со следующим
-P password
use password to decrypt encrypted zipfile entries (if any). THIS
IS INSECURE! Many multi-user operating systems provide ways for
any user to see the current command line of any other user; even on
stand-alone systems there is always the threat of over-the-shoulder
peeking.
Хотя меры предосторожности, заключающиеся в том, что пароли не вводятся в виде открытого текста (и их ввод в историю оболочки), конечно, верны, мне трудно поверить, что существуют операционные системы, где любой пользователь может видеть командную строку любого другого пользователь . Может ли кто-нибудь привести мне пример (включая устаревшие системы)?
Я считаю ps
, top
и т. Д. Являются ответом для UNIX.
Ответы:
Я полагаю, что в системах Unix / Linux использование
lsof
может потенциально представлять взаимодействие с пользователем. Логика заключается в том, чтоlsof
показывает список открытых файлов в системе. И, возможно, если кто-то разархивирует огромный файл, он все равно будет открыт достаточно долго, чтобы кто-то мог заметить, а затем посмотреть на активность. Черт, было бы довольно тривиально написать скрипт Bash и запускать его каждую минуту или около того с помощью задания cron для сбора текущего журнала активности открытых файлов.Но это все еще звучит неверно для меня. Я имею в виду
lsof
, что таким образом потенциально можно получить что-то вроде встроенных паролей MySQL. Но я не на 100% уверен в том, сможет ли обычный пользователь безsudo
прав / root видетьlsof
действия других пользователей.источник
lsof
показывает открытые файлы других пользователей, и вам не нужны повышенные привилегии (проверено на сервере моего учреждения). Точно так жеps
иtop
раскрыть командные строки других пользователей.ps
,top
иlsof
не нашел упоминания о привилегиях. Также есть вопрос: как сделать процесс невидимым для других пользователей? , Поэтому я думаю, что командные строки действительно видны всем в системах UNIX. Хм, большой сюрприз.ttysnoop
и, тем неconspy
менее, я не уверен, требуют ли они привилегий суперпользователя.lsof
, чтобы увидеть параметр командной строки? например,lsof -a +c0 /dev/null
я могу видеть длинное имя команды, но не параметр, переданный команде. Что я пропустил? :-)Unix позволяет "пс". Кроме того, в Unix обычно есть команда «w», которая показывает, какие пользователи работают. "w" может обычно отрубать команды в зависимости от размера терминала, но это может быть переопределено. (Один из простых способов - просто использовать более широкий терминал.)
Это, вероятно, также повлияет на несколько Unix-подобных систем (Linux, BSD, Solaris и т. Д.)
Я считаю, что Microsoft Windows также покажет это в диспетчере задач. Ну, может быть, это не так часто встречается в Windows Vista и управлении учетными записями пользователей, поскольку может потребоваться контроль учетных записей пользователей. Но в те времена, когда речь шла о WinXP / Server2003 и более ранних версиях, такие ограничения могли быть более слабыми. Есть причина, по которой NET USE начал поддерживать звездочку, а затем запрашивать пароль у пользователя. С:
пользователь, вероятно, даже не должен находиться на одном компьютере, чтобы увидеть команду, которая выполняется. Случайно, я подозреваю, что несколько TaskList, TList и PSList (все распространяются бесплатно Microsoft), вероятно, также поддерживают возможность видеть, что происходит, независимо от того, какой пользователь работает. По крайней мере, пользователи с правами администратора, что чаще встречалось в операционных системах до Vista. (В Win9x общим стандартом было то, что все пользователи обладали правами администратора). Имейте в виду, что Info-Zip - документация, которую вы цитируете, - немного старше, чем WinXP. Я думаю, что он старше, чем Win95.
В старых многопользовательских системах секретность не была такой большой проблемой. Возможность видеть, что делает компьютер, в том числе команды, которые выполняли другие пользователи, вероятно, рассматривалась как положительная особенность, а не как отрицательное нарушение безопасности. Возможно, более применимый вопрос: существует ли какая-либо крупная многопользовательская ОС, которая не поддерживала возможность пользователям видеть, какие команды запускаются на компьютере?
Более безопасный подход - никогда не вводить конфиденциальные пароли в командную строку. Другой вариант может заключаться в том, чтобы поместить пароли в файл, а затем указать этот файл в командной строке. например:
По крайней мере, таким образом, разрешения, основанные на реализации файловой системы, вероятно, обеспечат некоторую защиту.
источник
Некоторые (и я полагаю, не все) способы увидеть команду
zip -PThat_Password ...
другого пользователя в Linux без прав root :cat /proc/24695/cmdline
если PID 24695 ...Примечание: это без пробелов, но можно угадать пароль, однако
grep -H -e "zip" /proc/[0-9]*/cmdline
хорошо, если это работает,
cat
это работает все остальное на основе текста ...pgrep -a zip
опция -a перечисляет полную командную строку, а также идентификатор процесса. (не всегда доступно на старой версии [например, <2008]pgrep
)и, конечно, оп упомянул
ps -aux | grep zip
top -c -b -n 1 | grep zip
этот ответ с чем-то вродеисточник
cat /proc/24695/cmdline
дает вывод без пробелов ...на Unix / Linux и аналогичные.
источник