10일차(마지막 트레이닝)

2021. 11. 11. 22:00FTZ [해커스쿨]/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 그룹과 일치하는 파일을 찾는다.

 

 

'FTZ [해커스쿨] > trainer' 카테고리의 다른 글

9일차  (0) 2021.11.10
8일차  (0) 2021.11.09
7일차  (0) 2021.11.08
6일차  (0) 2021.11.07
5일차  (0) 2021.11.07