Czytałem stronę podręcznikaunzip
i natknąłem się na następujące
-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.
Chociaż środki ostrożności związane z nie wpisywaniem haseł w postaci zwykłego tekstu (i kończeniem ich w historii powłoki) są oczywiście prawdziwe, trudno mi uwierzyć, że istnieją systemy operacyjne, w których każdy użytkownik może zobaczyć wiersz poleceń dowolnego innego użytkownik . Czy ktoś mógłby mi podać przykład (w tym starsze systemy)?
Wierzę ps
, top
itp są odpowiedzią na UNIX.
command-line
operating-systems
4ae1e1
źródło
źródło
Odpowiedzi:
Domyślam się, że w systemach Unix / Linux używanie
lsof
może potencjalnie ujawnić interakcję użytkownika. Logikalsof
pokazuje listę otwartych plików w systemie. A może, jeśli ktoś rozpakuje ogromny plik, nadal będzie otwarty wystarczająco długo, aby ktoś mógł go zauważyć, a następnie zajrzy do aktywności. Cholera, napisanie skryptu Bash i uruchamianie go co około minutę za pomocą zadania cron w celu zebrania bieżącego dziennika aktywności otwartych plików byłoby dość proste.Ale to wciąż brzmi dla mnie fałszywie. Mam na myśli,
lsof
że potencjalnie ujawnia w ten sposób coś takiego jak wbudowane hasła MySQL. Ale nie jestem w 100% pewien, czy normalny użytkownik bezsudo
praw / root będzie w stanie zobaczyćlsof
aktywność innych takich użytkowników.źródło
lsof
pokazuje otwarte pliki innych użytkowników i nie potrzebujesz podwyższonych uprawnień (testowane na serwerze mojej instytucji). Podobnieps
itop
ujawnij wiersze poleceń innego użytkownika.ps
,top
alsof
, a nie znalazł wzmiankę o przywileju. Jest też pytanie: jak uczynić proces niewidocznym dla innych użytkowników? . Sądzę więc, że wiersze poleceń są rzeczywiście widoczne dla wszystkich w systemach UNIX. Hmm, wielka niespodzianka.ttysnoop
, aconspy
jednak nie jestem pewien, czy nie wymagają one uprawnień roota.lsof
pozwalają zobaczyć parametr wiersza poleceń? np.lsof -a +c0 /dev/null
widzę długą nazwę polecenia, ale parametr nie został przekazany do polecenia. Co mnie ominęło? :-)Unix zezwala na „ps”. Ponadto Unix zwykle ma polecenie „w”, które pokazuje, które użytkownicy są uruchomione. „w” może często odcinać polecenia na podstawie wielkości terminala, ale można je zastąpić. (Jednym prostym sposobem może być po prostu użycie szerszego terminalu.)
Prawdopodobnie wpłynie to również na wiele systemów uniksopodobnych (Linux, BSD, Solaris itp.)
Wierzę, że Microsoft Windows pokazałby to również w Menedżerze zadań. Cóż, może jest to mniej powszechne w systemie Windows Vista i Kontroli konta użytkownika, ponieważ może być potrzebna Kontrola konta użytkownika. Ale w czasach na WinXP / Server2003 i wcześniejszych, takie ograniczenia mogły być bardziej luźne. Istnieje powód, dla którego NET USE zaczął obsługiwać gwiazdkę, a następnie monitował użytkownika o hasło. Z:
użytkownik prawdopodobnie nie musi nawet znajdować się na tym samym komputerze, aby zobaczyć uruchamiane polecenie. Podejrzewam, że wiele TaskList, TList i PSList (wszystkie dystrybuowane swobodnie przez Microsoft) prawdopodobnie również obsługują możliwość zobaczenia, co się dzieje, niezależnie od tego, który użytkownik jest uruchomiony. Przynajmniej użytkownicy z uprawnieniami administratora, co było bardziej powszechne w systemach operacyjnych starszych niż Vista. (W Win9x ogólny standard był taki, że wszyscy użytkownicy mieli umiejętności podobne do Administratora.) Należy pamiętać, że Info-Zip, czyli dokumentacja, którą cytujesz, jest nieco starszy niż WinXP. Wydaje mi się, że jest starszy niż Win95.
W starszych systemach dla wielu użytkowników poufność nie była aż tak dużym problemem. Możliwość zobaczenia, co robi komputer, w tym poleceń wykonywanych przez innych użytkowników, była prawdopodobnie postrzegana jako pozytywna funkcja, a nie negatywne naruszenie bezpieczeństwa. Być może bardziej stosownym pytaniem jest: czy istnieje jakiś większy system operacyjny dla wielu użytkowników, który nie wspierałby użytkowników w sprawdzaniu, jakie polecenia są uruchamiane na komputerze?
Bezpieczniejszym podejściem jest nigdy nie umieszczać wrażliwych haseł w wierszu poleceń. Inną opcją może być umieszczenie haseł w pliku, a następnie określenie tego pliku w wierszu polecenia. na przykład:
Przynajmniej w ten sposób uprawnienia oparte na implementacji systemu plików zapewnią pewną ochronę.
źródło
Niektóre (i uważam, że nie wszystkie) sposoby Linuxa, aby zobaczyć polecenie
zip -PThat_Password ...
innego użytkownika bez uprawnień roota :cat /proc/24695/cmdline
jeśli PID to 24695 ...Uwaga: nie ma spacji, ale można odgadnąć hasło
grep -H -e "zip" /proc/[0-9]*/cmdline
cóż, jeśli to działa
cat
, działa wszystko inne oparte na tekście ...pgrep -a zip
opcja -a wyświetla pełną linię poleceń oraz identyfikator procesu. (nie zawsze dostępne w starej wersji [np. <2008] zpgrep
)i oczywiście wspomniana operacja
ps -aux | grep zip
top -c -b -n 1 | grep zip
ta odpowiedź z czymś takimźródło
cat /proc/24695/cmdline
dawanie danych wyjściowych bez spacji ...w systemach Unix / Linux i podobnych.
źródło