-
[FTZ]해커스쿨(HackerSchool) LEVEL4 풀이(Solution)미사용/##Security 2015. 7. 28. 14:43
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 가 동작하는 방식과 뭔가 충돌이 일어나는 것 같은데 정확한 원인은 좀 더 분석 해 봐야 할 것 같다.
'미사용 > ##Security' 카테고리의 다른 글
[FTZ]해커스쿨(HackerSchool) LEVEL6 풀이(Solution) (0) 2015.07.28 [FTZ]해커스쿨(HackerSchool) LEVEL5 풀이(Solution) (0) 2015.07.28 [FTZ]해커스쿨(HackerSchool) LEVEL3 풀이(Solution) (0) 2015.07.28 [FTZ]해커스쿨(HackerSchool) LEVEL2 풀이(Solution) (0) 2015.07.28 [FTZ]해커스쿨(HackerSchool) LEVEL1 풀이(Solution) (0) 2015.07.28