티스토리 뷰

HackerSchool FTZ WARGAME Solution

 

Start : 15.07.03

 

LEVEL4

 

[그림 1]

 

level4의 hint를 확인해보면 /etc/xinetd.d/ 에 백도어를 심어놓았다고 한다.

 

[그림 2]

 

해당 경로에 가보면 그냥 'backdoor' 라는 이름의 파일이 있는 것을 확인할 수 있다.

 

[그릠 3]

 

backdoor 파일의 내용을 확인 해 보면 [그림 3]과 같이 출력이 되는데 이를 가지고 알 수 있는 것은 backdoor 라는 파일은 finger 서비스 파일이며, 현재 서비스 중이라는 것이다. 좀 더 자세히 설정을 분석해보자.

 

disable = no // 현재 서비스 중이다.

socket_type = stream // TCP 로 통신을 한다.

wait = no // 서비스 요청마다 데몬이 각각 작동을 함

user = level5 // finger 데몬의 권한

server = /home/level4/tmpbackdoor // 서비스 요청 시 실행할 프로그램

log_on_failur += USERID // 문제가 발생했을 때 로그파일에 UserID 를 추가

 

이 설정에서 주목해서 봐야하는 부분은 user와 server 부분인데 확인해보면 user는 level5 로 설정이 되어있고, server는 /home/level4/tmp/backdoor 를 실행하도록 설정이 되어있다. 이걸 보면 마치 setuid 가 걸린 백도어 파일을 서비스로 돌려서 만들어 둔 것 같아 보인다. 그래서 우리는 server에 설정된 경로에 backdoor 라는 파일을 생성해서 쉘을 실행 시키거나 my-pass 를 실행 시켜서 level5의 비밀번호를 확인하도록 하면 된다.

 

[그림 4]

 

system 함수를 이용해 my-pass 를 실행시키는 프로그램을 만든다.

 

[그림 5]

 

그리고 finger 를 실행시켜 보았으나 내가 원하는 프로그램은 실행 안되고, 현재 로그인 되어 있는 사용자 목록이 출력이 되었다. 실제 finger 서비스가 실행 된 것이다.

[그림 6]

 

그래서 man finger 명령어를 통해 finger 의 사용법을 다시 한번 확인 해 보았더니 finger [옵션] [계정] [계정@host명] 형식으로 실행을 시켜야 하는 것 같다.

 

[그림 6]

 

그러면 [그림 6]과 같이 level5 의 패스워드가 출력이 되었다.' finger level5 level5@localhost' 를 실행시켜도 마찬가지로 실행이 된다. 그런데 backdoor 프로그램을 만들 때 'system("/bin/sh");' 로 작성을 하면 finger 실행 시 command 에러가 뜬다. finger 가 동작하는 방식과 뭔가 충돌이 일어나는 것 같은데 정확한 원인은 좀 더 분석 해 봐야 할 것 같다.

 

신고
댓글
댓글쓰기 폼