13

Я читал страницу 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.

4 ответа4

4

Я полагаю, что в системах Unix/Linux использование lsof потенциально может привести к взаимодействию с пользователем. Логика такова, что lsof показывает список открытых файлов в системе. И, возможно, если кто-то разархивирует огромный файл, он все равно будет открыт достаточно долго, чтобы кто-то мог заметить, а затем посмотреть на активность. Черт, было бы довольно тривиально написать скрипт Bash и запускать его каждую минуту или около того с помощью задания cron для сбора текущего журнала активности открытых файлов.

Но это все еще звучит неверно для меня. Я имею в виду, что lsof потенциально может раскрыть что-то вроде встроенных паролей MySQL. Но я не 100% , как ли обычный пользователь без sudo/ корневых прав будет иметь возможность увидеть lsof активности других пользователей , как это.

4

Некоторые (и я полагаю, не все) способы увидеть команду zip -PThat_Password ... другого пользователя без прав root:

  • cat /proc/24695/cmdline если PID 24695 ...

    Zip-P That_Password

    Примечание: это без пробелов, но можно угадать пароль, однако

  • grep -H -e "zip" /proc/[0-9]*/cmdline

    Двоичный файл /proc /24695 /cmdline соответствует

    хорошо , если он работает cat работает все остальное текст на основе ...

  • pgrep -a zip опция -a перечисляет полную командную строку, а также идентификатор процесса. (не всегда доступно в старой версии [например, <2008] pgrep)

    24695 zip -P That_Password

и, конечно, оп упомянул

  • ps -aux | grep zip

    That_User 24695 1,9 0,0 15012 1192 pts/40 T 12:37 0:45 zip -P That_Password

  • top -c -b -n 1 | grep zip этот ответ с чем-то вроде

    24695 That_User 20 0 15012 1192 820 T 0,0 0,0 0:45,12 zip -P That_Password

4

Unix позволяет "пс". Кроме того, Unix обычно имеет команду "w", которая показывает, какие пользователи работают. "w" может обычно отрубать команды в зависимости от размера терминала, но это может быть переопределено. (Один простой способ - просто использовать более широкий терминал.)

Это, вероятно, также повлияет на несколько Unix-подобных систем (Linux, BSD, Solaris и т.д.)

Я считаю, что Microsoft Windows также покажет это в диспетчере задач. Ну, может быть, это не так часто встречается в Windows Vista и управлении учетными записями пользователей, поскольку может потребоваться контроль учетных записей пользователей. Но в те времена, когда речь шла о WinXP/Server2003 и более ранних версиях, такие ограничения могли быть более слабыми. Есть причина, по которой NET USE начала поддерживать звездочку, а затем запрашивала у пользователя пароль. С:

WMIC /NODE:ComputerName PROCESS LIST

пользователь, вероятно, даже не должен находиться на одном компьютере, чтобы увидеть команду, которая выполняется. Случайно, я подозреваю, что несколько TaskList, TList и PSList (все распространяются бесплатно Microsoft), вероятно, также поддерживают возможность видеть, что происходит, независимо от того, какой пользователь работает. По крайней мере, пользователи с правами администратора, что чаще встречалось в операционных системах до Vista. (В Win9x общим стандартом было то, что все пользователи обладали администраторскими способностями.) Имейте в виду, что Info-Zip, то есть документация, которую вы цитируете, немного старше WinXP. Я думаю, что он старше, чем Win95.

В старых многопользовательских системах секретность не была такой большой проблемой. Возможность видеть, что делает компьютер, в том числе команды других пользователей, вероятно, рассматривалась как положительная особенность, а не как отрицательное нарушение безопасности. Возможно, более применимый вопрос: существует ли какая-либо крупная многопользовательская ОС, которая не поддерживала возможность пользователям видеть, какие команды запускаются на компьютере?

Более безопасный подход - никогда не вводить конфиденциальные пароли в командную строку. Другой вариант может заключаться в том, чтобы поместить пароли в файл, а затем указать этот файл в командной строке. например:

type pwfile | command

По крайней мере, таким образом, разрешения, основанные на реализации файловой системы, вероятно, обеспечат некоторую защиту.

1
ps ax

на Unix/Linux и аналогичные.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .