Eu estava lendo a página de manualunzip
e encontrei o seguinte
-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.
Embora a precaução de segurança de não digitar senhas em texto não criptografado (e que elas terminem no histórico do shell) seja verdadeira, acho difícil acreditar que existam sistemas operacionais por aí onde qualquer usuário possa ver a linha de comando de qualquer outro usuário . Alguém poderia me dar um exemplo (sistemas legados incluídos)?
Eu acredito que ps
, top
etc. são a resposta para o UNIX.
command-line
operating-systems
4ae1e1
fonte
fonte
Respostas:
Meu palpite seria que em sistemas Unix / Linux, o uso
lsof
potencial pode expor a interação do usuário. A lógica é quelsof
mostra uma lista de arquivos abertos no sistema. E, talvez, se alguém estiver descompactando um arquivo grande, ele ainda estará aberto por tempo suficiente para alguém perceber e depois espiar a atividade. Caramba, seria bastante trivial escrever um script Bash e executá-lo a cada minuto ou mais por meio de um trabalho cron para coletar um log contínuo da atividade de arquivo aberto.Mas isso ainda soa falso para mim. Quero dizer
lsof
, potencialmente expõe algo como senhas embutidas do MySQL dessa maneira. Mas não sei se um usuário normal semsudo
direitos de root poderá ver alsof
atividade de outros usuários assim.fonte
lsof
mostra arquivos abertos de outros usuários e você não precisa de privilégios elevados (testado no servidor da minha instituição). Da mesma forma,ps
etop
revele as linhas de comando de outros usuários.ps
,top
elsof
e não encontrou nenhuma menção de privilégio. Há também a seguinte pergunta: como tornar um processo invisível para outros usuários? . Então, acho que as linhas de comando são realmente visíveis para todos nos sistemas UNIX. Hmm, grande surpresa.ttysnoop
e,conspy
no entanto, não tenho certeza se eles exigem ou não privilégios de root.lsof
que permitam ver o parâmetro da linha de comando? com, por exemplo,lsof -a +c0 /dev/null
eu consigo ver o nome do comando longo, mas não o parâmetro passado para o comando. Do que eu senti falta? :-)O Unix permite "ps". Além disso, o Unix geralmente possui um comando "w" que mostra o que os usuários estão executando. "w" geralmente pode cortar comandos com base no tamanho do terminal, mas isso pode ser substituído. (Uma maneira fácil pode ser usar apenas um terminal mais amplo.)
Provavelmente, isso também afetará vários sistemas do tipo Unix (Linux, sistemas BSD, Solaris etc.)
Acredito que o Microsoft Windows também mostraria isso no Gerenciador de tarefas. Bem, talvez isso seja menos comum no Windows Vista e no Controle de Conta de Usuário, pois pode ser necessário. Mas nos dias anteriores no WinXP / Server2003 e versões anteriores, essas restrições podem ter sido mais frouxas. Há uma razão pela qual o NET USE começou a oferecer suporte a um asterisco e a solicitar uma senha ao usuário. Com:
um usuário provavelmente nem precisa estar no mesmo computador para ver um comando que é executado. De antemão, eu suspeitaria que vários TaskList, TList e PSList (todos distribuídos livremente pela Microsoft) provavelmente também suportem a capacidade de ver o que está acontecendo, independentemente de qual usuário esteja executando. Pelo menos, usuários com privilégios de administrador, o que era mais comum nos sistemas operacionais anteriores ao Vista. (No Win9x, o padrão geral era que todos os usuários tinham habilidades semelhantes a administrador.) Lembre-se de que o Info-Zip, que é a documentação que você está citando, é um pouco mais antigo que o WinXP. De improviso, acho que é mais antigo que o Win95.
Com sistemas multiusuários mais antigos, o sigilo não era uma preocupação tão grande. Ser capaz de ver o que o computador está fazendo, incluindo os comandos que outros usuários estavam executando, provavelmente foi visto como um recurso positivo, não como uma violação negativa da segurança. Talvez uma pergunta mais aplicável seja: Existe algum sistema operacional multiusuário importante que não tenha suporte para que os usuários possam ver quais comandos são executados no computador?
A abordagem mais segura é nunca colocar senhas confidenciais em uma linha de comando. Outra opção pode ser colocar as senhas em um arquivo e depois especificar esse arquivo na linha de comando. por exemplo:
Pelo menos dessa maneira, as permissões baseadas na implementação do sistema de arquivos provavelmente oferecerão alguma proteção.
fonte
Algumas (e acredito que não todas) maneiras do Linux de ver o comando
zip -PThat_Password ...
de outro usuário sem privilégios de root :cat /proc/24695/cmdline
se o PID for 24695 ...Nota: É sem espaços, mas é possível adivinhar a senha, no entanto
grep -H -e "zip" /proc/[0-9]*/cmdline
bem, se funcionar
cat
, funciona todo o resto com base em texto ...pgrep -a zip
a opção -a lista a linha de comandos completa e o ID do processo. (nem sempre disponível na versão antiga [por exemplo, <2008] depgrep
)e, claro, o op mencionado
ps -aux | grep zip
top -c -b -n 1 | grep zip
essa resposta com algo comofonte
cat /proc/24695/cmdline
saída dar sem espaços ...no Unix / Linux e similares.
fonte