Ich habe die Manpage vonunzip
gelesen und bin auf Folgendes gestoßen
-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.
Obwohl die Sicherheitsvorkehrung, dass Passwörter nicht im Klartext eingegeben werden (und in den Shell-Verlauf gelangen), natürlich zutrifft, fällt es mir schwer zu glauben, dass es Betriebssysteme gibt, auf denen jeder Benutzer die Befehlszeile eines anderen Benutzers sehen kann benutzer . Könnte mir jemand ein Beispiel geben (Legacy-Systeme eingeschlossen)?
Ich glaube ps
, top
usw. sind die Antwort für UNIX.
command-line
operating-systems
4ae1e1
quelle
quelle
Antworten:
Ich vermute, dass die Verwendung auf Unix / Linux-Systemen
lsof
möglicherweise die Interaktion der Benutzer gefährdet. Die Logiklsof
zeigt eine Liste der geöffneten Dateien auf dem System. Und wenn man eine riesige Datei entpackt, ist sie möglicherweise noch lange genug geöffnet, damit jemand sie bemerken und dann einen Blick auf die Aktivitäten werfen kann. Heck, es wäre ziemlich trivial, ein Bash-Skript zu schreiben und es jede Minute oder so über einen Cron-Job auszuführen, um ein laufendes Protokoll der Aktivität offener Dateien zu sammeln.Aber das klingt für mich immer noch falsch. Ich meine,
lsof
macht möglicherweise etwas wie Inline-MySQL-Passwörter auf diese Weise verfügbar. Aber ich bin nicht zu 100%sudo
sicher , ob ein normaler Benutzer ohne / root-Rechte in der Lage wäre,lsof
Aktivitäten von anderen Benutzern wie diesen zu sehen.quelle
lsof
, es werden offene Dateien anderer Benutzer angezeigt, und Sie benötigen keine erhöhten Berechtigungen (getestet auf dem Server meiner Institution). In ähnlicher Weiseps
undtop
anderer Befehlszeilen des Benutzers offenbaren.ps
,top
undlsof
und fand keine Erwähnung von Privileg. Es gibt auch die Frage: Wie kann ein Prozess für andere Benutzer unsichtbar gemacht werden? . Ich denke also, dass die Befehlszeilen auf UNIX-Systemen tatsächlich für alle sichtbar sind. Hmm, große Überraschung.ttysnoop
undconspy
bin mir jedoch nicht sicher, ob sie Root-Rechte benötigen oder nicht.lsof
, um den Parameter der Befehlszeile anzuzeigen? mit zb kannlsof -a +c0 /dev/null
ich lange befehlsnamen sehen aber keine parameter an den befehl übergeben. Was habe ich verpasst? :-)Unix erlaubt "ps". Außerdem verfügt Unix normalerweise über einen "w" -Befehl, der anzeigt, welche Benutzer ausgeführt werden. "w" unterbricht normalerweise Befehle basierend auf der Terminalgröße, dies kann jedoch überschrieben werden. (Eine einfache Möglichkeit ist die Verwendung eines breiteren Terminals.)
Dies betrifft wahrscheinlich auch mehrere Unix-ähnliche Systeme (Linux, BSD-Systeme, Solaris usw.).
Ich glaube, dass Microsoft Windows dies auch im Task-Manager anzeigen würde. Nun, vielleicht ist dies bei Windows Vista und der Benutzerkontensteuerung weniger üblich, da die Benutzerkontensteuerung möglicherweise erforderlich ist. Aber in den Tagen unter WinXP / Server 2003 und früher waren solche Einschränkungen möglicherweise nachlässig. Es gibt einen Grund, warum NET USE ein Sternchen unterstützt und den Benutzer dann zur Eingabe eines Kennworts auffordert. Mit:
Ein Benutzer muss sich wahrscheinlich nicht einmal auf demselben Computer befinden, um einen ausgeführten Befehl zu sehen. Kurz gesagt, ich würde vermuten, dass eine Vielzahl von TaskList, TList und PSList (alle frei von Microsoft vertrieben) wahrscheinlich auch die Fähigkeit unterstützen, zu sehen, was passiert, unabhängig davon, welcher Benutzer ausgeführt wird. Zumindest Benutzer mit Administratorrechten, was auf Betriebssystemen vor Vista üblicher war. (In Win9x war der allgemeine Standard, dass alle Benutzer über Administrator-ähnliche Fähigkeiten verfügten.) Beachten Sie, dass Info-Zip, die von Ihnen zitierte Dokumentation, ziemlich viel älter als WinXP ist. Kurz gesagt, ich denke, es ist älter als Win95.
Bei älteren Mehrbenutzersystemen war die Geheimhaltung weniger wichtig. Zu sehen, was der Computer gerade tut, einschließlich der von anderen Benutzern ausgeführten Befehle, wurde wahrscheinlich als positives Merkmal und nicht als negative Sicherheitsverletzung angesehen. Möglicherweise ist eine zutreffendere Frage: Gibt es ein wichtiges Mehrbenutzer-Betriebssystem, das nicht unterstützt, dass Benutzer sehen können, welche Befehle auf dem Computer ausgeführt werden?
Der sicherere Ansatz besteht darin, niemals vertrauliche Kennwörter in eine Befehlszeile einzufügen. Eine andere Möglichkeit besteht darin, Kennwörter in eine Datei einzufügen und diese Datei dann in der Befehlszeile anzugeben. z.B:
Zumindest auf diese Weise bieten Berechtigungen, die auf der Dateisystemimplementierung basieren, wahrscheinlich einen gewissen Schutz.
quelle
Einige (und ich glaube nicht alle) Linux-Möglichkeiten, um den Befehl
zip -PThat_Password ...
eines anderen Benutzers ohne Root-Rechte zu sehen :cat /proc/24695/cmdline
wenn die PID 24695 ist ...Hinweis: Es ist ohne Leerzeichen, aber es ist möglich, das Passwort zu erraten
grep -H -e "zip" /proc/[0-9]*/cmdline
gut, wenn es funktioniert
cat
, funktioniert es alles andere textbasiert ...pgrep -a zip
Die Option -a listet die vollständige Befehlszeile sowie die Prozess-ID auf. (Nicht immer verfügbar in der alten Version [zB <2008] vonpgrep
)und natürlich die op erwähnt
ps -aux | grep zip
top -c -b -n 1 | grep zip
diese Antwort mit so etwas wiequelle
cat /proc/24695/cmdline
Ausgabe ohne Leerzeichen aus ...unter Unix / Linux und ähnlichem.
quelle