ssoL2 TISTORY

[FTZ] LEVEL 4 완벽 분석 본문

challenge/pwn

[FTZ] LEVEL 4 완벽 분석

ssoL2 2020. 11. 16. 03:12

 

login and ls

 

 

hint => /etc/xinetd.d에 backdoor 가 있다!!

 

backdoor란 몰래 설치된 뒷문, 즉 해킹 위험!!!

 

주소 가보니까 정말 backdoor가 있다!

 

잠깐 !!! 위치 /etc/xinetd.d 에서 xinetd를 알아보자.

 

xineted는 인터넷 슈퍼데몬으로 "여러 서비스"를 "통합관리"하는 것이다.

 

xinetd 중 telnet 서비스를 이용할 때의 전체적인 흐름단계이다. 이해 가지 않는 다면 5단계만 알고 넘어가자.

 

앞에서 예를 들었던 telnet 서비스 일 때, 위의 5단계에서처럼 server행의 파일을 즉, /usr/sbin/in.telnetd 파일을 읽어 들여서 연결 시키는 것이다.

 

다시 돌아와서 backdoor를 읽어보자.

 

backdoor에 있는 내용은 위와 같음! 위의 예시인 telnet 서버처럼 생각해보자. finger이라는 서비스는 level5의 권한을 갖고 있으며 /home/level4/tmp/backdoor의 파일을 읽어 들인다. 

 

server 행의 주소 /home/level4/tmp/backdoor는 디렉토리가 아님. 해당 주소의 파일을 읽어들이는 것이므로 첫번째 줄처럼 다가가면 안된다. 

 

그러나 아무것도 없다... 그니까 backdoor 파일이 없는 것임. ????  /etc/xinetd.d/backdoor에 따르면 finger 서비스로 level5권한으로 /home/level4/tmp/backdoor 파일을 실행시키는 것인데 실행시킬 파일이 없다는 것이다. 그렇다면 backdoor c파일을 만들어서 my-pass를 실행시키면 level5의 my-pass가 나올 것이다

 

vi backdoor.c를 한 후 vim에서 쉘을 실행시키는 system 함수 이용하자.

 

gcc 컴파일 시키면 backdoor 완성! 이제 /home/level4/tmp/backdoor 파일을 만들었으니 finger을 실행시키면 된다.

 

띠용? 원래는 level5의 password가 나와야 하는데 뭔가 이상한 내용이 나옴.

 

해당 finger는 어디서 나온 명령어인지 알아보기위해 환경변수를 찾아보았다 ( 모든 명령어는 일종의 실행파일이므로, 명령어 입력 시 환경변수에 잡혀있는 path를 따라가서 파일이 실행된다. )  : 으로 구분되어 있는 주소를 find 명령어를 통해 finger 파일을 찾는데, /usr/bin에서 finger파일을 찾았다. 

 

/usr/bin/ 주소로 가서 finger 파일을 실행시켜보니 이전 결과와 같았다. 즉, finger 명령어를 치면 /etc/xinetd.d/backdoor의 finger가 아닌 /usr/bin/finger가 실행되는 것이었다.

 

즉, finger는 1. /etc/xineted.d/backdoor 에서 사용되는 finger 

                2. /usr/bin/finger 

두가지가 있는 것이다. 

 

그렇다면 1. /etc/xineted.d/backdoor 에 있는 finger를 작동시키려면 어떻게 해야 할까?

xineted 특성상 A 서버의 사용자가 B 서버로 접속 시 이용하는 서비스이다. 여기서 1번 finger가 작동되지 않은 이유는 결국 local에서 했기 때문에 반응하지 않았다.

따라서, 인터넷을 통해 나에게 접속하도록 하면 된다. finger @localhost를 함으로써 네트워크를 통해 finger를 호출하기 때문에 1번 finger가 호출 될 것이다.

 

 

샤샷

 

 

 

 

추가로 /etc/xinetd.d/finger도 존재했는데

disable = yes 이므로 서비스가 작동되지 않았다. ( disable = no여야 작동 가능 )

 

사실상 finger는 3가지였다.

1. /etc/xineted.d/backdoor 에서 사용되는 finger

2. /etc/xineted.d/finger 

3. /usr/bin/finger 

 

 

 

 

 

 

 

참고 내용

Xinetd의 자세한 설명 !! 

 

finger protocol은 원격 서버에 대한 인터페이스 제공 프로토콜로, 그 호스트를 이용중인 사용자에 대한 정보를 출력한다.

 

알고보니 finger라는 명령어가 있는데, 계정 정보 ( uid, 사용자명, 위치, 사용 쉘 등 ) 을 출력해주는 명령어이다. 명령어 위치는 /usr/bin/finger이다. 즉, /etc/xinetd.d/backdoor 안의 finger 서비스와는 다른 것이다.

 

1. finger 은 "현재 서버"에 로그인 이용자 출력 2. finger user 는 로컬 접속 3. finger @host 는 해당 "host서버"에 접속한 모든 유저 출력 4. finger user @host 는 "host서버"의 user 계정 정보 출력

출처

dany-it.tistory.com/260

 

보안용어 - 백도어(Back door)에 대한 설명

오늘은 백도어(Back door)에 대한 설명을 해보도록 하겠습니다. 보안을 공부하거나 컴퓨터에 대해 관심이 있으시다면 백도어를 한 번쯤은 들어보셨을 것입니다. 백도어는 뉴스 기사에서도 자주 접

dany-it.tistory.com

www.linux.co.kr/home/lecture/?leccode=10731

 

리눅스포털

  XINETD 수퍼데몬관리 작성자 : (주)수퍼유저코리아, http://www.superuser.co.kr 서버팀 XINETD 수퍼데몬 관리 1. 리눅스 서버의 서비스 흐름도 2. 인터넷 수퍼데몬 XINETD란? 3. xinetd서비스와 standalone서비스 4

www.linux.co.kr

m.blog.naver.com/koromoon/120201091232

 

Finger 프로토콜

( 1 ) Finger User Information Protocol 원격 사용자정보 프로그램에 대한 인터페이스를 제공하는 프...

blog.naver.com

 

'challenge > pwn' 카테고리의 다른 글

[FTZ] trainer 총정리  (0) 2021.01.28
[FTZ] LEVEL 5 풀이  (0) 2021.01.28
[FTZ] LEVEL 3 풀이  (0) 2020.11.15
[FTZ] LEVEL 2 풀이  (0) 2020.11.14
[FTZ] LEVEL 1 풀이  (0) 2020.11.14
Comments