본문 바로가기

리버싱/FTZ

해커스쿨 FTZ Level4 (backdoor)

ID : level4

Password : suck my brain


힌트 : 




문제를 풀기 전에 : 


 /etc/xinet.d/ 



해당 디렉토리에는 어떤 설정 파일이 들어있을까?

리눅스의 인터넷 슈퍼데몬인 xinetd의 서비스 파일은 거의 /etc/xinet.d/ 에 존재한다.

슈퍼데몬이란 리눅스 시스템에서 실행되는 하나의 데몬이다. 하지만 sendmail, httpd의 데몬과 달리 슈퍼데몬이라 불리는 이유는 리눅스 서버의 여러 데몬을 제어 및 연결시키기 때문이다.

대표 서비스로는 telnet이 존재한다. 우리가 putty와 같은 프로그램을 이용해 telnet으로 연결할 때는 바로 되는 것이 아니라 

1) xinetd에 의해 허가된 사용자인가를 검사한다.

2) /etc/xinet.d/telnet 에 정의된 telnet 서비스 데몬과 사용자를 연결시킨다.


이중 finger 만 특별하게 더 자세히 살펴본다.

finger는 시스템 사용자 정보를 확인하는 서비스이다. 이 서비스가 가능하도록 설정하면 원격 서버의 사용자는 finger를 사용하여 로컬사용자 정보(계정명, 최근 로그인 시간 등)을 확인할 수 있게 된다.

사용하는 포트는 79번이다.

보통 설정값은 아래와 같다.


service finger

{

   disable = no

   socket_type = stream

   wait = no

   user = nobody

   server = /usr/sbin/in.fingerd

}



풀이 :



해당 파일은 읽기 파일임을 추측할 수 있다.

cat을 사용해 해당 파일의 내용을 확인해본다.



설정 값을 통해 

슈퍼 데몬이 관리하는 데몬 중 finger으로 접속할 경우 level5 유저의 권한으로 /home/level4/tmp/backdoor 프로그램을 실행시킴을 확인할 수 있다. 하지만 해당 경로에는 백도어 프로그램이 없기 때문에 새로 작성해주어야 한다.



위 그림과 같은 코드를 작성한뒤 gcc를 이용해 컴파일 해준다.

완료 되었다면


 cat /etc/services | grep finger 


위와 같이 입력하여 finger 의 포트를 확인한다.



기본 포트인 79를 사용함을 확인할 수 있다.


 finger @localhost


위 명령어를 사용해 finger를 접속한다.