우선 무슨 말인지 모르겠지만 저 경로에 백도어를 심어두었다고 하니 한번 이동해서 확인해보자.
backdoor 라는 파일을 볼 수 있다.
한번 cat 으로 까보자.
까보면 finger 라는 서비스가 선언되어 있고, user 의 권한으로 server 의 파일을 동작시키는 걸로 유추할 수 있다.
즉, /home/level4/tmp 아래에 backdoor 를 level5 의 권한으로 실행시키는 것이기 때문에,
이 위치의 backdoor 파일에 my-pass 를 출력하도록 하는 명령어를 넣을 수 있다면 문제 해결일 것이다.
그럼 일단 /home/level4/tmp 로 이동하여 backdoor 를 확인해보자.
? 이 위치에 backdoor 가 없기 때문에 만들어야 한다.
level5 password 를 알아내야하기 때문에 vi로 my-pass 를 출력하는 스크립트를 작성해준다.
방법은 backdoor.c 에 system("my-pass") 스크립트를 작성한 후 gcc 로 컴파일하여 실행파일을 만들어주는 방법과,
backdoor 를 만들어서 bash 쉘에 my-pass 를 입력하도록 하는 방법이 있다.
나는 컴파일이 귀찮기 때문에 두번째 방법을 선택했다.
이렇게 입력한 후,
만들어진 backdoor 의 실행 권한이 없기 때문에 chmod 로 실행할 수 있도록 변경해준다.
x 가 생긴 것을 확인할 수 있다.
이제 해당 위치에 my-pass 를 출력해주는 backdoor 를 넣었기 때문에 서비스 finger 를 호출해보자.
level4 에 해당하는 유저의 로그인 정보? 가 보이는 듯하다.
finger 서비스가 이미 기존에 존재하고, 유저의 로그인 정보를 보여주는 서비스 라는 추측을 할 수 있다.
***finger ?
: 로컬환경뿐만 아니라 원격지에 있는 환경의 유저까지 볼 수 있는 명령어
따라서 , 내가 위에 입력한 finger 서비스는 /etc/xinetd.d 아래의 backdoor에 적힌 finger 서비스가 아닌 기존의 finger 가 출력된 듯 하다.
그렇다면 xinetd.d 아래에 있는 backdoor 의 finger 서비스를 실행시키려면 어떻게 해야할까?
먼저 xinetd.d 를 검색해보았다.
***xinetd.d ?
: 수퍼데몬에 관련된 폴더로 데몬이란 인터넷에서 접근했을때 서비스를 처리해주는 서버같은 프로그램
: 서비스에 접속을 요청할시에, xinetd가 중간에 개입하여 허가된 사용자인지를 검사
즉, 우리가 원하는 실행을 하는 finger 서비스를 실행시키려면,
xinetd.d의 특성을 참고하여, 인터넷으로의 접근이 오면 backdoor에서의 설정한 finger의 명령어가 동작 한다는 것을 알 수 있다.
그러므로 finger 명령어를 실행시키나, localhost 로 접속하여 실행한다면 우리가 원하는 finger 서비스가 실행될 것이다.
level5 유저로 원격접속하여 인터넷으로의 접근이라는 조건을 충족한 후 finger 서비스 호출로
level5 의 password "what is your name?" 획득
'WARGAME > FTZ [system]' 카테고리의 다른 글
ftz level 6 [level6] (0) | 2020.04.29 |
---|---|
ftz level 5 [level5] (0) | 2020.04.29 |
ftz level 3 [level3] (0) | 2020.04.29 |
ftz level 2 [level2] (0) | 2020.04.29 |
ftz level 1 [level1] (0) | 2020.04.28 |