-
lvl 04Wargame/HackerSchool FTZ 2019. 1. 9. 22:09
→ 힌트 파일 확인.
→ xinetd.d 데몬에 대해서 알아본다.
참고 링크: http://egloos.zum.com/light99/v/5142379
→ 힌트에서 알려준 경로로 들어가 살펴본 결과 "backdoor" 파일이 확인된다. 참고로 /etc/xinetd.d/ 디렉토리는 데몬 서비스가 저장된다.
→ backdoor 파일의 내용을 살펴본다.
[옵션 설명]
- service finger : 서비스 이름
- disable = no : 데몬을 비활성화하지 않음. 즉, disable =yes로 설정된 경우에 해당 서비스를 기동하지 않음.
- flags = REUSE : 서비스 포트가 사용 중인 경우 해당 포트의 재사용 허가
- socket_type = stream : TCP/IP 프로토콜을 선택
- wait = no : 이미 서비스가 연결된 상태에서 다른 요청이 오면 바로 응답
- user = level5 : 해당 데몬이 level5 권한으로 실행됨.
- server = /home/level4/tmp/backdoor : xinetd에 의해 실행될 데몬 파일
- log_on_failure += USERID : 정상적인 기동에 실패한 경우 USERID를 로그에 기록
→ "finger" 라는 서비스명으로, level5의 유저권한과 함께 실제 실행될 파일의 경로를 확인할 수 있다.
→ 실제 실행될 파일의 경로인 "/home/level4/tmp/backdoor" 파일을 살펴본다.
→ 실행될 파일이 존재하지 않는다. 직접 만들어야 하므로, /home/level4/tmp/ 경로에 다음과 같은 파일을 생성한다.
→ 해당 소스는, system 함수를 이용하여 my-pass가 실행되도록 작성한다. 그리고 다음과 같이 컴파일한다.
→ 여기서 잠깐 실행해보면, level4의 계정 비밀번호가 출력된다. 즉, 소유자 level4 계정의 권한으로 실행했기 때문이다.
→ 하지만, finger 서비스는 level5 계정의 권한으로 실행되고 데몬 프로세스를 통해 finger 서비스를 실행한다면, 해당 backdoor 파일의 권한은 level5로 넘어간다. 이젠, finger 서비스에 접속해본다.
댓글