본문 바로가기
Hack/ftz

ftz 풀이 level4

by Choraengyi 2016. 11. 23.

 ftz level4 를 풀어 보겠습니다.


우선 힌트를 조회해 보겠습니다.


조회 해보니, /etc/xinetd.d/ 에 백도어를 심어놓았다고 합니다.



본격적으로 들어가기 전에, xinetd 과 백도어를 조금 알아보겠습니다.


 xinetd 를 알아보기 전에 inetd 를 짚고 넘어 가겠습니다. 


데몬 : 주기적이고 지속적인 서비스 요청을 처리하기 위해 백그라운드로 실행되는 프로세스, 이름뒤에 d


가 붙습니다 대표적인예로 httpd 가 있습니다. 여기서 standalone과 inet 방식이 있는데, 


standalone 방식같은 경우, 항시 메모리에 상주하면서 클라이언트의 요청을 처리하고, 


반면 inet 방식은 계속 상주 하것이 아니고 요청이 들어 왔을때 프로세스를 실행하고 종료 후에 자동으


로 해당 프로세스를 종료하는 방식입니다. standalone 같은 경우 자주 사용하는 서비스에 효율적이고, 


inet은 자주 사용하지 않는 서비스에 효율적입니다. 


xinet은 이런 inet 을 확장하여 만든 것으로서 자체적으로 접근제어가 가능하고, 


ip 당 접속 수 제한, 시간대별 서비스 제한, Dos 에 대한 대응 등 많은 확장적인 기능을


 가지고 있습니다.


xinet의 구성을 대충 보겠습니다.


구성

내용 

/etc/xinetd.conf 

 전체적인 환경 설정을 담당하는 파일 

etc/xinetd.d 

 관리, 제어 되는 서비스 파일이 위치하는 디렉터리 입니다.  

/etc/rc.d/ini.d/xinetd

 데몬을 제어하는 데몬스크립트 파일입니다. 


백도어는 그대로 해석하면 뒷문이라는 뜻과 같이, 보안 인증을 거치지 않고도, 시스템 및 응용프로그램에 접근할 수 있는 코드나 프로그램 등의 형태로 존재합니다.


힌트를 해석해보면 xinet데몬이 관리 및 제어하는 디렉터리에 인증을 거치지 않고 시스템에 접근할 수 있는 파일이 있다고 해석이 가능합니다.



한줄씩 해석해 보겠습니다. xinetd.d 디렉터리 안에 있는 파일은 형식이 아래와 비슷하기 때문에 하나씩 해석하겠습니다.


service finger                                                        //finger 서비스에 대한 내용입니다,

{

        disable = no                                  //해당 서비스의 실행 유무로서 no 면 서비스 사용입니다.

        flags           = REUSE                        //계속적으로 재사용한다는 의미 입니다.

        socket_type     = stream         //네트워크 소켓 타입입니다. stream기반의 서비스를 이용합니다.

        wait            = no                    //yes인 경우 단일스레드, no 인 경우 다중 스레드 입니다.

        user            = level5            //UID를 지정하는 부분입니다. 여기서는 level5 로 지정되있습니다.

        server          = /home/level4/tmp/backdoor     //서비스를 실행하는 데몬 파일의 경로입니다.

        log_on_failure  += USERID                    //로그에 관련된 설정입니다.

}


user가 level5로 되있는 것으로 보아 finger 서비스를 실행하면 level5의 권한으로 실행된다는 것을 짐작

할 수 있습니다. 그러면 서비스를 실행하는 데몬파일을 수정해서 하는 방법을 생각해 볼 수 있습니다.

우선 server 경로에 있는 backdoor 파일을 수정하겠습니다.


우선 해당경로에 들어가서 vi backdoor.c 로 c언어 파일을 만들어 주겠습니다.


system 명령을 사용해서 사용하고 싶은 명령어 my-pass 를 입력해 주시고, 저장하고 나오시면 됩니다.


코딩 내용이 길지 않으니 따로 텍스트로 적지는 않겠습니다.



다 작성하고 나서 gcc로 -o 옵션을 사용해서 컴파일 해줍니다. 실행파일을 만드는 과정입니다.


참고로 컴파일이 완료되지 않으면 에러 메세지가 뜹니다. 오타일 가능성이 높으니 한번씩 더 확인


해보고 수정하시면 됩니다.



컴파일이 완료된 후 finger 서비스를 실행시키는데 기존 리눅스의 finger 명령이 실행되서 사용자 


계정 정보가 나옵니다.



그러면 finger 명령에 @localhost 를 붙이면 해결됩니다. 해당 사용자의 정의된 서비스를 실행하기 


때문에 실행하면 원하는 결과를 얻으실 수 있습니다.



ftz level4 를 풀어 봤습니다.




728x90
반응형

'Hack > ftz' 카테고리의 다른 글

ftz 풀이 level6  (0) 2016.11.28
ftz 풀이 level5  (0) 2016.11.27
ftz 풀이 level3  (0) 2016.11.21
ftz 풀이 level2  (0) 2016.11.19
ftz 풀이 level1  (0) 2016.11.18

댓글