Je lisais la page de manuel deunzip
, et suis tombé sur ce qui suit
-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.
Bien que la précaution de sécurité de ne pas taper les mots de passe en texte clair (et de les retrouver dans l'historique du shell) soit bien sûr vraie, j'ai du mal à croire qu'il existe des systèmes d'exploitation là où n'importe quel utilisateur peut voir la ligne de commande de tout autre utilisateur . Quelqu'un pourrait-il me donner un exemple (anciens systèmes inclus)?
Je crois que ps
, top
etc. sont la réponse pour UNIX.
Réponses:
Je suppose que sur les systèmes Unix / Linux, l'utilisation
lsof
pourrait potentiellement exposer l'interaction de l'utilisateur. La logique étant delsof
montrer une liste de fichiers ouverts sur le système. Et peut-être que si l'on décompresse un énorme fichier, il sera toujours ouvert assez longtemps pour que quelqu'un puisse le remarquer et ensuite jeter un œil à l'activité. Heck, il serait assez trivial d'écrire un script Bash et de l'exécuter toutes les minutes via un travail cron pour collecter un journal continu de l'activité des fichiers ouverts.Mais cela me semble toujours faux. Je veux dire
lsof
expose potentiellement quelque chose comme les mots de passe MySQL en ligne de cette façon. Mais je ne suis pas sûr à 100% qu'un utilisateur normal sanssudo
/ droits root puisse voir l'lsof
activité d'autres utilisateurs comme ça.la source
lsof
montre les fichiers ouverts d'autres utilisateurs et vous n'avez pas besoin de privilèges élevés (testé sur le serveur de mon institution). De même,ps
ettop
révéler les lignes de commande des autres utilisateurs.ps
,top
et je n'ailsof
trouvé aucune mention de privilège. Il y a aussi cette question: comment rendre un processus invisible pour les autres utilisateurs? . Je suppose donc que les lignes de commande sont bien visibles pour tout le monde sur les systèmes UNIX. Hmm, grosse surprise.ttysnoop
etconspy
je ne sais pas s'ils nécessitent ou non des privilèges root.lsof
qui permettent de voir le paramètre de la ligne de commande? avec, par exemple,lsof -a +c0 /dev/null
je peux voir le nom de la commande longue mais pas le paramètre passé à la commande. Qu'est-ce que j'ai raté? :-)Unix autorise "ps". De plus, Unix a généralement une commande "w" qui montrera ce que les utilisateurs exécutent. "w" peut généralement couper les commandes en fonction de la taille du terminal, mais cela peut être remplacé. (Un moyen simple peut être d'utiliser simplement un terminal plus large.)
Cela affectera probablement également plusieurs systèmes de type Unix (Linux, systèmes BSD, Solaris, etc.)
Je crois que Microsoft Windows l'afficherait également dans le Gestionnaire des tâches. Eh bien, c'est peut-être moins courant avec Windows Vista et le contrôle de compte d'utilisateur, car le contrôle de compte d'utilisateur peut être nécessaire. Mais à l'époque de WinXP / Server2003 et des versions antérieures, ces restrictions étaient peut-être plus laxistes. Il y a une raison pour laquelle NET USE a commencé à prendre en charge un astérisque, puis à inviter l'utilisateur à saisir un mot de passe. Avec:
un utilisateur n'a probablement même pas besoin d'être sur le même ordinateur pour voir une commande exécutée. D'un côté, je soupçonne que plusieurs TaskList, TList et PSList (tous distribués gratuitement par Microsoft) prennent probablement également en charge la possibilité de voir ce qui se passe, quel que soit l'utilisateur en cours d'exécution. Au moins, les utilisateurs avec des privilèges d'administrateur, ce qui était plus courant sur les systèmes d'exploitation antérieurs à Vista. (Dans Win9x, la norme générale était que tous les utilisateurs avaient des capacités de type administrateur.) Gardez à l'esprit qu'Info-Zip, qui est la documentation que vous citez, est un peu plus ancien que WinXP. Offhand je pense qu'il est plus ancien que Win95.
Avec les anciens systèmes multi-utilisateurs, la confidentialité n'était pas aussi importante. Être capable de voir ce que fait l'ordinateur, y compris les commandes exécutées par d'autres utilisateurs, était probablement considéré comme une caractéristique positive, et non une violation négative de la sécurité. Peut-être une question plus applicable est la suivante: existe-t-il un système d'exploitation multi-utilisateurs majeur qui ne prend pas en charge les utilisateurs pouvant voir quelles commandes sont exécutées sur l'ordinateur?
L'approche la plus sûre consiste à ne jamais mettre de mots de passe sensibles sur une ligne de commande. Une autre option peut être de mettre des mots de passe dans un fichier, puis de spécifier ce fichier sur la ligne de commande. par exemple:
Au moins de cette façon, les autorisations basées sur l'implémentation du système de fichiers offriront probablement une certaine protection.
la source
Certaines (et je ne pense pas toutes) des façons Linux de voir la commande
zip -PThat_Password ...
d'un autre utilisateur sans privilèges root :cat /proc/24695/cmdline
si le PID est 24695 ...Remarque: c'est sans espaces mais il est possible de deviner le mot de passe cependant
grep -H -e "zip" /proc/[0-9]*/cmdline
bien si ça marche
cat
ça marche tout le reste basé sur du texte ...pgrep -a zip
l'option -a répertorie la ligne de commande complète ainsi que l'ID du processus. (pas toujours disponible sur l'ancienne version [par exemple <2008] depgrep
)et bien sûr l' op mentionné
ps -aux | grep zip
top -c -b -n 1 | grep zip
cette réponse avec quelque chose commela source
cat /proc/24695/cmdline
donner une sortie sans espaces ...sous Unix / Linux et similaire.
la source