본문으로 바로가기

[K.Knock]FTZ trainer9,10

category Study/system 2017. 3. 10. 16:46

첫번째 과제가 주어졌다.


1. K.Knock 홈페이지에 가입후 자기소개 남기기

2. 해커스쿨 FTZ Trainer10까지 완료후 인증샷을 첨부파일로 올리기

3. C언어

   - 변수란 무엇인가?

   - 자료형에는 뭐가 있을까?

   - 포맷스트링은 뭐지?

   *ppt로 제작해서 올리기


일단 1번과 2번은 완료했다.

하지만 포스팅하면서 다시 처음부터 해보자


FTZ TRAINER9


이번에는 리눅스 권한에 대해 알아보자


리눅스에는 4가지 종류의 사용자가 있다. USER, GROUP, OTHER, ROOT


이전에 배웠던 id명령을 기억하는가? 아래는 id의 결과이다.


uid=2009(trainer9) gid=2009(trainer9) groups=2009(trainer9)


GID는 특별한 일이 없는 한 UID와 같다.


그룹도 임의변경을 하지 않으면 자신의 UID와 같은 그룹에 속한다.


이번에는 파일 권한 정보를 분석하는 방법에 대해 알아보자


ls -al 명령어를 통해 나오는 결과의 첫번째 필드에 주목하자


-rwxrwxrwx    1  trainer9 trainer10    5  10월  20  21:35  test1


우선 위의 권한을 해석하기 위해 3개씩 띄어보자


rwx rwx rwx


이것이 바로 권한에 대한 정보이며, 순서대로 '유저의 권한' '그룹의 권한' 'Other의 권한' 을 의미한다.


또한 권한을 부여할 수 있는 종류는 3가지로 나뉘는데


r : 읽기

w : 쓰기

x : 실행


이렇게 나뉜다. 따라서 위의 권한은 triner9라는 uid를 가진 사용자에게 모든권한을 부여하고 trainer10이라는 gid 사용자에게도


그 외의 사용자에게도 모든 권한을 부여한다고 해석할 수 있다.


FTZ TRAINER10


드디어 마지막이다...;; 엄청많다.. 휴


이번에는 local해킹시 핵심이 되는 SetUID에 대해서 배워볼 것이다.


Local해킹이란? 해킹에는 두 가지가 있다.


하나는 Remote해킹, 이것은 자신이 해킹하고자 하는 서버에 아이디를 가지고 있지 않을 때, 아이디를 얻고자 시도하는것을 말한다.


다른 하나가 Local해킹인데, 이것은 해킹하고자 하는 서버에 일반계정을 가지고 있을 때, 관리자 권한을 얻고자 시도하는 것을 말한다.


아무튼 SetUID가 무엇인지 알아보자


구타는 FTZ회원이다. 텔넷으로 접속해있는 상태인데 비밀번호를 바꾸고 싶어서 바꾸었다.


이때 구타는 이상한 점을 발견한다. 비밀번호를 바꾸게 되면 passwd 파일을 건드려야 하는데 일반유저인 사람이 어떻게 변경 할 수 있는거지?


이때 나오는것이 SetUID이다. 잠시 루트권한을 빌려오는것이다. 단 파일의 실행이 끝나면 다시 원래의 아이디로 돌아온다.


우선 SetUID가 걸려있는지 아닌지 어떻게 알까?


ls -al /usr/bin/passwd

-r-s--x--x    1  root    root        22312  Sep  26    1999 /usr/bin/passwd*


이처럼 실행권한자리에 s가 들어가있는것을 볼 수 있다.


이는 SetUID를 뜻하고 누구든지 이 파일을 실행할 때 루트의 권한을 갖게된다.


SetUID가 걸려있는 파일은 passwd뿐만이 아니다.


find / -perm -4000


이를 해석하면 "/에서부터, 적어도 SetUID가 걸린 모든 파일을 찾아라" 라는 뜻이된다


위에서 4000앞에 붙은 -가 바로 "적어도"를 의미하고


-perm은 권한을 찾겠다는 옵션이다. 그 뒤의 4가 바로 SetUID를 의미하며 000은 rwx모두를 의미한다.


find의 다른 옵션들도 알아보자


-perm : 권한과 일치하는 파일을 찾는다

-name : 이름과 일치하는 파일을 찾는다

-user : 유저와 일치하는 파일을 찾는다

-group : 그룹과 일치하는 파일을 찾는다


이제 트레이닝이 모두 끝이났다.


마지막 트레이닝에서 level문제들을 해결하는 힌트를 준다.


자신의 아이디가 level3이라고 가정했을 때 level4의 권한으로 SetUID가 걸린 파일을 찾는다.


find / -user level4 -perm -4000


그러면 한 개 이상의 파일이 발견될 것이다.


그 파일을 이용하여 level4의 쉘을 얻으면 성공!


my-pass라고 입력하면 패스워드가 나온다!



'Study > system' 카테고리의 다른 글

[K.Knock]파일 디스크립터란?  (0) 2017.06.08
[K.Knock]폰노이만 구조, 하버드 구조  (0) 2017.05.23
[K.Knock]FTZ trainer7,8  (0) 2017.03.10
[K.Knock]FTZ trainer5,6  (0) 2017.03.10
[K.Knock]FTZ trainer3,4  (0) 2017.03.10