지난번에 얻은 level2의 암호를 통해 접속해보도록 합시다.
level2 / hacker or cracker
cat hint 를 통해 이번은 어떤 힌트인지 보았습니다.
텍스트 파일 편집 중 쉘의 명령을 실행시킬 수 있다고 합니다.
텍스트 파일 편집 프로그램을 제공하는 것 같은데
어떤 건지 한 번 찾아보도록 합시다.
find / -user level3 -perm -4000 2> /dev/null
editor라는 이름의 실행파일인 것 같습니다.
자세히 한 번 보도록 하죠.
ls -l /usr/bin/editor
rws <- s 가 SetUID의 설정이죠.
/usr/bin/editor 를 통해 실행시켜보도록 합시다.
editor의 정체는 VIM(Vi IMproved)였군요!
저는 처음에 'i'키(insert)를 눌러서 C언어로도 코딩하여보고, 쉘 스크립트로 작성도 해봤지만
결정적으로 확장 명령어 모드(:)에서 :wq test.exe 라고 해봐도 권한이 맞지 않을 때 발생하는
E212 때문에 어떤 스크립트를 작성한다고 하더라도 저장할 수가 없었습니다.
다시 생각해보니 들어왔다고 하더라도
현재 저는 아직까지도 level2의 그룹 권한인 상태에서 실행만 시킨 상태였습니다.
즉 SetUID의 취약점을 이용하기 위해서는 권한을 level3로 바꿔야 했습니다.
다시 한번 hint를 떠올려보니 VIM 편집기의 기능 중 쉘을 실행시킬 수 있는 명령어가 있을 것 같다는 생각이 들었습니다.
그래서 구글링을 통해 VIM의 확장 명령어 모드에서 쉘 명령을 실행시킬 수 있는
:! (쉘 명령어)
가 있는 것을 알게 되었습니다.
그래서 바로 이걸로 배쉬 쉘을 실행시켜 봤습니다.
:! /bin/bash
윗 줄에서는 user가 level2였던 것이 level3로 바뀐 것을 보실 수 있습니다.
마지막으로 우리의 명령어 my-pass 를 실행시켜주면 level3의 패스워드를 얻을 수 있게 됩니다.
level3 통과!!
아직 초보자라 우여곡절이 많았지만 스스로 깼을 때 기분이 너무 좋았습니다.
다음 레벨이 기대되는군요.