[Hackerschool FTZ] Level 4 풀이
힌트를 열어보자
해당 디렉토리에 백도어가 있단다 살펴보자
이번엔 root 소유의 일반 파일이다
읽기 권한이 허용되어있으므로 읽어 보자
service finger{ 로 시작하는 설정 파일이다
finger 프로그램이 사용하는 포트를 대신 사용하는듯 하다
finger 프로그램은 막혀 있을 것으로 예상된다 한 번 살펴보자
예상대로 막혀있다 (disable=yes)
(finger는 시스템에 접속한 사용자 정보를 알려주는 프로그램)
여기서 리눅스 데몬에 대해 잠깐 복습하자
데몬이란 리눅스 부팅시 백그라운드에서 실행되고 있다가 사용자의 요청이 들어오면 서비스를 실행해주는 프로그램이다
데몬의 방식에는 standalone 방식과 inetd 방식이 존재한다
standalone 방식은 백그라운드에 항상 실행되고 있다가 요청을 받아 처리하는 방식이다
이 데몬들은 /etc/rc.d/init.d 디렉토리에 존재한다
inetd 방식은 평소에는 sleep 상태로 존재하다 슈퍼 데몬(xinetd)에 의해 wake up 되어 요청을 수행하고 다시 sleep 상태로 돌아가는 방식이다
이 데몬들은 /etc/xinetd.d 디렉토리에 존재한다
xinetd(슈퍼 데몬)는 외부 요청을 식별할 때 포트 번호를 먼저 본다
/etc/services에서 포트 번호에 해당하는 서비스를 찾고 해당 서비스를 /etc/xinetd.d/ 디렉토리의 설정파일에서 찾아본다
여기서 service finger{ 이 부분이 사용되는 것이다
정리하자면
1. 연결을 요청하는 포트번호를 /etc/services에서 검색, 해당 서비스를 확인
2. 해당 서비스를 /etc/xinetd.conf 또는 /etc/xinetd.d/ 디렉토리에서 검색, 일치하는 설정파일을 확인
3. 설정파일에 적힌 방식으로 요청을 수행
Level 4 문제로 돌아와서 생각해보면
2번까지는 이미 수행된 상태이다
우리는 설정파일에 따라 /home/level4/tmp/backdoor 프로그램을 생성하고 finger 프로그램 요청을 하면 되는 것이다
backdoor 프로그램을 생성해 보자
설정 파일에서 level5의 권한으로 실행한다고 했으니 my-pass 명령어만 실행하면 될 것 같다
프로그램을 생성했다
finger 프로그램을 요청해 보자
finger 프로그램의 매뉴얼을 확인해 보니 다음 방식으로 요청하면 될 것 같다
finger @localhost
예상대로 문제가 풀렸다
다음 문제로 넘어가자