본문으로 바로가기

[해커스쿨 ftz - 7] level4 풀이

category 해킹/FTZ 2016. 6. 21. 20:02



level4의 힌트에 내용입니다.

/etc/xinetd.d/에 백도어를 심어놓았다고 합니다. 그럼 xinetd.d 가 뭐하는폴더인지 먼저 알아보겠습니다.


xinetd.d

: xinetd는 네트워크에 들어오는 요청을 듣고, 거기에 맞는 적절한 서비스를 실행시킨다. [4] 요청들은 식별자로서 포트 번호를 사용하여 만들어지며, 보통 요청을 다루는 다른 데몬을 실행시킨다. 이것은 특권 서비스 또는 아닌것들 둘 다를 시작시킬 때 사용될 수 있다.

xinetd는 TCP 래퍼 ACLs 같은 접근 제어 매커니즘과 확장된 로깅 역량 그리고 시간에 기반한 서비스 활성화 능력 등을 특징으로 갖는다. 이것은 시스템이 시작할 수 있는 서버들의 수를 제한할 수 있고, 포트 스캐너 같은 것들로 부터 보호할 수 있는 매커니즘을 갖는다.


- 출처) https://ko.wikipedia.org/wiki/Xinetd

- 자세한설명) http://nextline.tistory.com/55

- 참고 pdf) https://www.linux.co.kr/lecture/lec_linux_01/lec-data/13data.pdf


xinetd.d경로 에서 ls를 친결과입니다.


이것을 vi명령으로 열어보면,


이것은 위에 xinetd.d설명은 마찬가지로 여기에있습니다.

이것은 finger 명령을 실행했을떄 level5권한으로 /home/level4/tmp/backdoor 파일을 실행해준다는것과 같습니다. (하지만 이곳에는 원본 finger파일에 있습니다. 이에대한것은 나중에)

그럼 /home/level4/tmp/backdoor 를 열어보겠습니다.



그런데 파일이 없다네요! 그러므로 실행파일을만든다면 finger명령어를 실행했을때 level5권한으로 backdoor파일을 실행할 수 있을것 같습니다.

그러므로 tmp폴더에 backdoor파일을 아래내용으로 만들어줍니다.



그리고이제 finger을 쳐봅시다!



그런데 예상과다르게 그냥 원래의 finger가 실행됬습니다. 다시 xinetd.d에 들어가서 finger파일을 열어봅시다.



본다면 대표적인 차이점은 disable이 no, yes가 되있다는점이네요! 그러면 no일때 실행할 수 있는것만 실행시키면 저 backdoor가 실행될 것입니다. 기본 finger 서비스에서 disable이 yes라는것은 외부에서 접속한다면 실행이 안된다는 뜻입니다. 그렇지만 backdoor는 no이므로 외부에서 접속했을떄 실행이 됩니다. finger에서 외부서버의 유저들정보를 가져올 수 있는 기능이있는데 이것은 finger [user]@[host]입니다. (man finger 참고) 그렇다면 우리는 그냥 user랑 host에 맞춰서 입력해주면 backdoor가 실행되며 원하는 결과값을 얻을 수 있습니다.

그렇다면 finger @localhost를 실행시켜보겠습니다.



근데안되네요..? 여기서 문제점은뭘까요?? 바로 권한에있습니다. backdoor에 실행권한이 없기때문이죠. 그러므로 chmod 777 backdoor 이렇게(tmp 폴더내에서) 입력해서 backdoor에 권한을 바꿔주고 연다면??



됬네요~~


  

후기 // 으.. 확실히 난이도가 올라가니까 어렵네요.. 이번꺼는 이해하기가 어려웠습니다. 특히 finger만 쳤을떄 안되는거에서 많이 막혔습니다.