보안 공부하는 꼬깔이

FTZ level4 풀이





level4의 홈디렉터리 내용이다. 여전히 hint 파일과 폴더 2가지가 존재한다.


hint 파일을 확인해보자.





hint 파일에는 /etc/xinetd.d/ 디렉터리에 백도어가 심어져있다는 내용이 들어있었다.


TIP.BACKDOOR?

- 백도어는 시스템에 존재하게 되면 공격자가 일반 보안 엑세스 컨트롤을 우회하고 시스템에 엑세스 할 수 있는 악성 코드의 유형.






실제로 /etc/xinetd.d/ 디렉터리의 파일중에 친절하게 이름부터 backdoor 이라는 파일이 존재했다.


권한은 -r--r--r-- 읽기 권한만 주어져 있으며 level4 유저가 파일소유주로 되어있다.


cat으로 backdoor 파일의 내용을 확인해보자




backdoor 파일의 내용을 확인해니 리눅스의 사용자 정보 확인 명령어인 finger의 데몬 설정정보가 나왔다.


우선 finger 데몬 설정의 각각 내용들이 어떤것을 의미하는지 해석해보자.




여기서 생각해볼점은 finger 서비스를 실행하게 되면 level5의 권한으로 서비스가 실행된다. 이러한 점을 통해 level5의 셸을 흭득할수 있을 것 같다. 


finger 서비스를 실행하면 xinetd에 의해 실행될 데몬파일이 /home/level4/tmp/backdoor/ 디렉터리에 위치한다고 나와있다. 




해당 디렉터리로 이동해 파일목록을 출력해봤는데 아무런 파일도 존재하지 않았다. 이상태에서 finger 서비스를 구동하게되면 xinetd에 의해 실행될 파일이 없기때문에 에러가 출력될 것이다. 


그렇다면 finger 서비스 구동시 xinetd에 의해 실행될 데몬의 파일을 backdoor 역할을 하도록 임의로 만들어 주게 되면 어떨까?





system 함수를 사용해 backdoor 실행시 level5의 권한으로 실행되므로 my-pass 명령어를 통해 level5의 패스워드를 출력하는 역할을 하는 backdoor.c 파일을 임의로 만들었다.


backdoor 파일을 gcc 명령어로 컴파일 해주자.



컴파일 완료




finger 서비스 구동시 xinetd가 실행할 파일 backdoor를 만들었으니 finger 서비스를 실행시켜보자.





finger 서비스를 구동하자 level5의 권한으로  my-pass 명령이 실행되어 level5의 패스워드가 출력됬다.


level4 clear ~




'System Hacking > FTZ' 카테고리의 다른 글

FTZ level6 풀이  (0) 2017.06.30
FTZ level5 풀이  (1) 2017.06.30
FTZ level3 풀이  (0) 2017.06.30
FTZ level2 풀이  (0) 2017.06.30
FTZ level1 풀이  (0) 2017.06.30

FTZ level3 풀이







level3의 홈디렉토리 내용을 확인했다. 역시나 hint와 폴더 2개가 존재


hint 파일을 cat으로 확인해보자.





hint 파일을 cat으로 열어보니 c언어로 이루어진 소스코드가 출력되었다.


그리고 동시에 여러 명령어를 사용하려면? 이라는 문구와 문자열 형태로 명령어를 전달하려면? 이라는 문구도 힌트로 주어졌다.


우선 c언어 소스코드를 해석해보자.




힌트의 소스코드는 이정도의 내용을 나타낸다.


우선 힌트의 소스코드로 컴파일된 문제 파일을 찾기위해 find 명령어를 수행시켜보자.




/bin/autodig 라는 파일을 찾아냈다.





autodig 파일은 setuid가 걸려있고 level4의 소유주로 되어있다.

 

autodig 파일을 실행시켜보자




소스코드 해석을 참조해보면 우리가 autodig를 실행할때 인자값을 전달하지 않았기 떄문에 몇가지 출력문이 출력되고 코드가 종료된다.

그러면 어떤 인자값을 넣어 autodig를 실행시켜야 할지 생각해보자.


우리는 hint 파일에 소스코드 이외에 힌트 2가지를 받았다. 이 힌트를 해석해보자.


- 동시에 여러 명령어를 사용하려면?     리눅스에서는 ;(세미콜론) 을 사용하면 명령어를 동시에 사용할 수 있다.

- 문자열 형태로 명령어를 전달하려면?  문자열 형태로 전달하려는 값을 " " (큰따옴표) 로 묶으면 문자열 형태로 전달이 가능하다.



그렇다면 level4의 권한으로 setuid걸려있는 autodig 파일을 실행하면서 bash 쉘과 my-pass 명령어를 ;(세미콜론) 으로 연결해 동시에 

실행시켜주면서 "bash;my-pass" 이런식으로 문자열 형태로 전달하면 어떻게 될까?




bash 쉘이 level4의 권한으로 실행됨과 동시에 my-pass 명령어가 수행되어 level4의 password가 나왔다.


level3 clear ~








'System Hacking > FTZ' 카테고리의 다른 글

FTZ level6 풀이  (0) 2017.06.30
FTZ level5 풀이  (1) 2017.06.30
FTZ level4 풀이  (0) 2017.06.30
FTZ level2 풀이  (0) 2017.06.30
FTZ level1 풀이  (0) 2017.06.30

FTZ level2 풀이





level2 의 홈디렉터리의 내용을 ls 명령어로 확인했더니, level1과 같이 hint 파일과 폴더 2개가 있다.


hint를 cat명령어로 확인해보자





hint 파일에는 텍스트 파일 편집 중 쉘의 명령을 실행시킬수 있다는 구문이 있었다.


텍스트 파일 편집은 리눅스의 vi 기능을 의미한다.  결과적으로 vi 편집기 사용 중 쉘의 명령을 실행하는 방법을 생각해봐야 할것같다.


우선 파일의 소유주가 level3인 파일을 find 명령어로 찾아보자.





find 명령의 결과로 /usr/bin/editor 파일이 도출됬다. /usr/bin 디렉토리로 이동해 editor 파일을 확인해보자




editor 파일에 setuid가 걸려있고 파일의 소유주는 level3 인것을 확인할수 있다.


우선 ediotr 파일을 실행시켜보자




editor 파일을 실행시키니까 vi 편집기가 실행됬다...!?


그렇다는 것은 vi editor 실행중 셸을 실행하면 setuid가 걸려있기 떄문에 level3의 권한으로 셸이 실행될것이다.


vi 편집기 사용중 리눅스 명령어 사용에 대한 방법구글링 한결과 vi 편집중 command 모드상태일떄 느낌표를 사용하면 리눅스 명령어가 실행된다는 것을 알게되었다. (ex : !ls , !pwd)




command 모드상태에서 !pwd 실행




실제로 pwd 명령어가 수행되어 editor 파일이 위치한 디렉토리를 출력해줬다.


이제 쉘을 실행시켜보자.




bash 쉘 실행!



쉘이 성공적으로 실행되었고. my-pass 명령어로 level3의 패스워드를 흭득했다!


level2 clear!










'System Hacking > FTZ' 카테고리의 다른 글

FTZ level6 풀이  (0) 2017.06.30
FTZ level5 풀이  (1) 2017.06.30
FTZ level4 풀이  (0) 2017.06.30
FTZ level3 풀이  (0) 2017.06.30
FTZ level1 풀이  (0) 2017.06.30