안녕하세요 Triumph 입니다.
오늘은 Hackerschool의 워게임인 FTZ에서 level1단계 풀이를 하고자 합니다.
FTZ는 각 level에서 취약점을 찾아 상위 level의 권한을 획득하는 워게임 입니다.
1. 일단 level1로 접속합니다. (level1 / level1)
2. 막연하게 접속해서 level2의 권한을 얻어라 하면 감이 안잡히기 때문에 각 level별 힌트가 존재합니다.
level2 권한을 얻기위한 힌트를 확인합니다. (cat hint)
힌트 : level2 권한에 setuid가 걸린 파일을 찾는다. |
여러분들은 이 힌트를 이해 하셨나요?
일단 level2권한에 걸린 파일을 찾으란 의미는 소유자가 level2인 파일을 찾으라는 의미 입니다.
그렇다면 setuid는 무엇일까요?
※ setuid란 파일을 실행하는 동안 실행자의 권한이 아닌 임시적으로 해당 파일의 소유자의 권한을 갖는 것을 의미합니다.
setuid를 이해했으면 힌트의 내용은 아래와 같습니다.
힌트의 의미 : setuid가 걸려있고 소유자가 level2인 파일을 찾아라 |
이제 힌트의 파일을 찾아야 하니 힌트대로 명령어를 유추해 봅시다.
1. 일단 파일을 찾아야 하니 find를 사용해야 할 것같습니다.
2. 위치가 어디인지 모르니 전체 디렉터리(/)에서 검색해야 겠지요?
3. 소유자가 level2 여야 하니 조건에 소유자 옵션을 level2로 지정합니다.
4. 권한 옵션을 setuid로 지정합니다.
해당 조건을 검색하기 위한 명령어는 아래와 같습니다.
힌트의 파일 찾기 : find / -user level2 -perm -4000 2>/dev/null |
-user는 소유자, -perm은 권한옵션입니다. 4000은 setuid의 권한을 나타내며,
2>/dev/null은 리눅스에서 휴지통과 같은 역할로 에러를 출력하지 않는 역할을 합니다.
위 명령어의 결과는 아래와 같습니다.
setuid 권한을 가지고 소유자가 level2인 파일이 발견되었습니다. level2계정과 level1그룹 사용자만 실행이 가능하네요.
저는 level1계정이니 일단 실행해 보겠습니다.
원하는 명령어를 하나만 실행해 주겠답니다. my-pass는 안되네요...
그럼 어떻게 level2 권한을 얻을 수 있을까요?
답은 쉘입니다. 쉘은 OS와 사용자간의 대화를 위한 인터프리터로서 입력하는 명령을 해석하여
OS에게 전달하는 역할을 수행합니다. 쉽게 말하면 지금 명령어를 치는 프롬프트라고 생각하시면 됩니다.
쉘은 bash, korn 등 여러가지가 있지만 여기서는 /bin/sh를 실행해 보겠습니다.
/bin/sh를 실행한 결과 level2 권한을 획득한 것을 확인했습니다. 이제 level2의 패스워드를 확인해야겠죠?
level2의 패스워드를 획득했습니다.
감사합니다.
'War Game > FTZ' 카테고리의 다른 글
Hackerschool FTZ 풀이 - LEVEL4 (0) | 2017.03.09 |
---|---|
Hackerschool FTZ 풀이 - LEVEL3 (0) | 2017.03.08 |
Hackerschool FTZ 풀이 - LEVEL2 (0) | 2017.03.07 |
Hackerschool FTZ 구축 (0) | 2017.02.15 |