2021. 11. 11. 22:00ㆍFTZ [해커스쿨]/trainer
Local 해킹시 핵심이 되는 SetUID에 대하여
Login id : trainer10
password : best!
Local해킹에는 두가지가 있다
1. Remote 해킹 : 해킹하고자 하는 서버에 아이디를 얻고자 시도하는 것
2. Local 해킹 : 해킹하고자하는 서버에 일반계정을 가지고있을 때 관리자 권한을 얻고자 시도하는 것
평범한 계정을 가지고있는 상태에서 어떤 방법으로 관리자 권한을 얻을 수 있을까?
그건 바로 Set 지정 즉 변경하다 SetUID는 일시적으로 자신의 ID를 변경하는 것
그럼 왜 일시적으로 자신의 ID를 변경하는 SetUID가 Local해킹의 핵심이 될까?
password는 쉐도우 파일에 들어간다. 이 쉐도우 파일은 root권한자에게만 수정권한이 있는데
왜 사용자가 password가 실행될 때 SetUID가 잠시 아이디가 루트로 바뀌기 때문에 수정권한이 생겨
password가 바뀌는 것이다.
멍청한 파일로부터 어떻게하면 파일들을 속여 관리자권한을 획득할까 연구하다 새로운 방법을 개발하게 되면
그것은 새로운 해킹 기법이 되는 것이다.
그 수많은 기법 중 버퍼오버플로우를 간단히 보자
joe라는 파일이 있고 이 파일은 루트의 권한으로 SetUID가 걸려있다.
이 joe는 문서 편집을 할 때 사용하는 파일로 joe filename이라고 입력하면 해당 파일의 편집 화면이 출력된다.
그런데 이 파일이 입력받은 글자가 1000자가 넘으면 제대로 실행되지않는다 이를 이용해서 만들어진 것이
버퍼오버플로우이다.
그럼 먼저 passwd 파일에 걸린 SetUID를 알아야한다
ls -al /usr/bin/passwd
처음에 우리는 각 id마다 권한을 확인하는 법을 배웠다.
그때 우리는 r x e에 대해서 뱅웠는데 여기에는 처음보는 s가 있다
이 s가 SetUID를 의미한다. 그리고 자세히 보면 x가 있어야하는 위치에 s가 들어가 있음을 알 수 있다.
그것은 s가 x를 포함하고있기 때문이다.
여튼 s가 포함되어있기 때문에 이 파일을 실행할 때 root의 권한을 갖게된다.
지금부터는 서버 전체에서 SetUID가 걸린 파일을 찾는 방법을 알아보자
find / -perm -4000
위 명령어를 해석하면
/에서부터 적어도 SetUID가 걸린 모든 파일을 찾아라
위에서 -perm은 권한을 찾겠다. 4000앞에 붙은 -가 적어도를 의미 4는 SetUID를 의미
000 rwx모두를 의미
-perm 권한과 일치하는 파일을 찾는다.
-name 이름가 일치하는 파일을 찾는다.
-user 유저와 일치하는 파일을 찾는다.
-group 그룹과 일치하는 파일을 찾는다.