본문으로 바로가기

해커스쿨 FTZ level2

category Wargame/FTZ 2017. 7. 28. 15:16

level2 --- hacker or cracker

 

우선 level2 디렉토리에 hint 파일을 보자.

 

 

 

일반적으로 리눅스를 사용해 본 사용자는 대부분 VI 편집기의 편집 기능만 알고 사용할 것이다. 하지만 VI 편집기에는 다른 고급기능들이 있다.

hint에서 요구 하는 것은 VI편집기의 명령어 실행 기능이다. 우선 명령어 실행 기능에 대해서 알아보자.

 

VI편집기를 실행한 후 ":![명령어]" 형식으로 명령어를 입력하면 셸 화면으로 일시적으로 복귀하면서 입력한 명령어를 실행한다.

 

 

 

부가적인 기능은 위와 같이 실행한 명령어의 결과값을 VI 편집기 화면에 추가 할 수 있다. ":r![명령어]" 형식이다.

 

 

 

 

VI 편집기의 고급기능에 대해 알아 보았으니 hint를 바탕으로 문제를 분석해보자.

우선 프로그램이 실행될 때 일시적으로 level3 권한을 얻을 수 있도록 level3 계정 사용자 권한에 SUID가 걸린 파일을 찾아보자.

 

 

 

 

위와 같이  /usr/bin/editor 파일이 SUID가 걸린 파일임을 확인 할수 있다. /usr/bin/editor 파일을 실행해 보자.

 

 

 

 

위와 같이 /usr/bin/editor 파일을 실행 했는데 VI 편집기가 실행되었다. 여기서 그러면 실행파일의 이름이 /usr/bin/vi 로 정하는 것이 더 알기 쉬울텐데 왜 /usr/bin/editor로 했는지 의문을 가져야 한다. 가장 그럴듯한 가정은 /bin/vi 또는  /usr/bin/vim의 파일을 복사한 것이 아닐까 생각해보는 것이다.

파일의 크기를 확인해 복사본인지 확인해 보자.

 

 

 

 

위와 같이 파일의 용량을 보면 /usr/bin/editor 파일의 크기가 훨씬 작다는 것을 알 수 있고 vim, vi 파일에 링크가 걸린것도 아니다.

여기 까지 분석을 했으면  GDB를 이용해 소스코드를 분석해 보자.

 

 

 

 

실행의 흐름을 보자.

 

1. 스택 구성후 setreuid(3003, 3003)을 이용해 파일의 User ID 권한으로 level3 계정을 얻는다.

2. system( ) 함수를 이용해 VI편집기를 실행한다. 여기서 VI를 편집기를 실행하는 사용자는 level3이다.

 

이제 공격을 해보자.

 

/usr/bin/editor 파일이 분석한대로 level3의 권한으로 실행되는지 살펴보자.

 

 

User ID는 level3이다. Group ID는 level2이기 때문에 level2 사용자가 실행 할 수 있다.

 

level3의 passwd를 확인하기 위해서 :!my-pass를 입력하면 level3의 패스워드를 확인할 수 있다.

 

 

이렇게 level3의 passwd를  확인할 수 있다.

 

여기서 level3의 passwd를 얻었지만 셸을 얻고 싶다면 어떻게 해야할까?

VI 편집기에서 일회성 명령어를 실행하는 것이 아니라 셸을 실행하면 된다. 그러면 일시적으로 level3의 권한이 실행되는 상태에서 level3의 권한으로 셸을 실행하기 때문에 해당 셸이 유지된는 동안 level3계정이 된다.

 

 

위와 같이 level3의 셸을 계속 유지할 수 있다.

 

 

 

 

'Wargame > FTZ' 카테고리의 다른 글

해커스쿨 FTZ level4  (0) 2017.08.01
해커스쿨 FTZ level3  (0) 2017.07.31
해커스쿨 FTZ level1  (4) 2017.07.23
해커스쿨 FTZ trainer6~trainer10  (0) 2017.07.21
해커스쿨 FTZ trainer1~trainer5  (0) 2017.07.17