trainer10(best!)
로컬 해킹의 관리자 권한을 얻기 위해서는 SetUID를 알아야 합니다. SetUID는 UserID를 변경한다는 뜻으로, 일시적으로 자신의 ID를 변경하는 것을 말합니다.
그럼 왜, 일시적으로 자신의 ID를 변경해야 하는 일이 생길까요?
내 계정에 대해 내 비밀번호는 바꿀 수 있어야 한다 -> 그런데 비밀번호는 /etc/shadow 파일에 저장되어 있다 -> 비밀번호를 바꾸면 /etc/shadow 파일도 변경될 것이다 -> 그런데 /etc/shadow 파일은 루트 계정만 변경이 가능하다.
이 때 SetUID가 사용됩니다. 내 계정에 대한 암호를 변경하는 passwd 파일에 루트 권한의 SetUID가 걸려 있어서, 일반 사용자들이 passwd 파일을 실행하는 동안에는 일시적으로 '루트 계정으로서의 일시적인 ID 변경'이 가능합니다. 결국 shadow 파일 역시 루트 권한으로 변경이 가능한 것입니다.
여기서, 1) SetUID는 파일에 걸리고
2) SetUID가 걸린 파일을 실행하면 내 ID가 변경되고
3) 파일 실행이 끝나면 다시 원래의 ID로 돌아온다.
는 것을 알 수 있습니다.
그럼 이제 SetUID가 걸린 파일을 알아보는 방법에 대해 알아봅시다.
/usr/bin/passwd 파일의 정보입니다. 앞 부분을 보면 '-r-s--x--x'라고 되어있죠. 이 때 's'가 SetUID를 의미합니다. 원래 'x'가 들어가야 할 자리인데 어차피 's'의 의미 자체가 'x'를 포함하고 있습니다(실행 가능한).
따라서 /usr/bin/passwd 파일은 루트에게 읽기, 실행 권한이 있고 그룹과 아더에게도 실행 권한만 있는 파일입니다. 하지만 루트에 SetUID가 걸려있기 때문에 어느 사용자든, /usr/bin/passwd 파일을 실행할 때는 루트의 권한을 갖게 됩니다.
이번엔 서버 전체에서 SetUID가 걸린 파일을 찾아봅시다.
find / -perm -4000이라고 입력했습니다. 이는 '/ 부터 적어도(-) SetUID(4000)가 걸린 파일을 찾아라'라는 뜻입니다. 이 때 'perm'은 permission, '4000'의 '4'는 SetUID, '000'은 'rwx' 모두를 의미합니다.
그럼 find / -user root -perm -4000은 '루트 권한으로 SetUID가 걸린 파일을 찾아라' 이겠죠.
'Wargame > FTZ' 카테고리의 다른 글
hackerschool FTZ level2 (0) | 2021.01.21 |
---|---|
hackerschool FTZ level1 (0) | 2021.01.19 |
hackerschool FTZ trainer9 (0) | 2021.01.19 |
hackerschool FTZ trainer8 (0) | 2021.01.19 |
hackerschool FTZ trainer7 (0) | 2021.01.19 |