루트인 경우 동일한 로컬 컴퓨터에서 다른 사용자의 파일을 볼 수 있습니까? 그렇다면 어떻게 해야 할까요?
답변1
$ sudo su 이제 실제로 루트가 될 수 있습니다. 그리고 /(root)로 이동하여 /home 폴더를 살펴보면 해당 머신의 모든 사용자를 찾을 수 있습니다.
답변2
기본적으로 루트에서 다른 사용자 계정으로 전환하는 것은 안전하지 않습니다.
루트로서 원하는 디렉토리를 직접 탐색하는 것은 사용자를 사용하거나 전환하는 것 su
보다 훨씬 안전합니다.sudo
자동으로TIOCSTI ioctl을 통해 루트의 tty에 명령을 푸시하고 루트로 명령을 실행하십시오.
예를 들어, TIOCSTI ioctl을 이용하는 바이너리가 있고 hacksu
침입자가 손상된 사용자 계정 [user]의 .bashrc를 수정하여 셸이 시작될 때 바이너리를 실행한다고 가정합니다.
$ tail -n3 /home/[user]/.bashrc
echo hi
/opt/hacksu -- $'echo "hello world" >> /tmp/file1\nfg'
echo bye
$ _
그런 다음 su
손상된 사용자에 대해 루트가 사용되면 손상된 사용자는 루트로 임의의 명령을 실행할 수 있습니다.
root@host:~# su - [user]
.bashrc 검색이 자동으로 수행되므로 다음 8줄은 사용자 상호 작용 없이 터미널에 자체적으로 인쇄됩니다.
echo "hello world" >> /tmp/file
1
fg
[1]+ Stopped su - [user]
root@host:~# echo "hello world" >> /tmp/file1
root@host:~# fg
su - [user]
bye
이제 루트는 문제가 발생했음을 깨닫고 [사용자] 쉘을 닫아 [사용자]의 .bashrc가 수행한 작업을 확인합니다.
[user]@host:~$ logout
root@host:~# ll /tmp/file1
-rw-r--r-- 1 root root 12 Apr 15 00:47 /tmp/file1 # owned by root (!)
root@host:~# cat -v /tmp/file1
hello world
root@host:~# # oops ..
위의 시나리오에서 [user]는 임의의 파일에 루트로 작성했습니다. 실제로 실행된 명령은 루트가 할 수 있는 모든 작업을 수행할 수 있습니다. 예 hacksu
를 들어 /etc/shadow
.
POC의 소스 바이너리 에 대한 소스 코드는 hacksu
다음에서 찾을 수 있습니다.https://www.halfdog.net/Security/2012/TtyPushbackPrivilegeEscalation/. 손상된 사용자 계정의 위협을 해결하지 않은 한 루트로 다른 사용자로 전환하지 마십시오.
답변3
다음과 같이 할 수도 있습니다.
# su user
이 사용자를 루트로 로그인하고 해당 파일을 봅니다.