1 건의
HackerSchool FTZ 검색결과
  1. 2013.07.18 rootnix

Pwn&Play 신입  스터디를 위해

FTZ 풀이를 시작합니다.


- Level ONE -


ftz에 level1 / leve1 로 접속하면 다음과 같은 화면을 만나게 됩니다.



Last login: Thu Jul 18 16:34:32 from ***.***.***.***

[level1@ftz level1]$


level1 계정으로 로그인이 된 화면인데요, 일단 워게임형식의 진행방식이므로, 파일 목록을 살펴봅니다.



 [level1@ftz level1]$ ls

hint  public_html  tmp


아주 당연하듯이(?) hint 파일이 눈에 띕니다.

hint 파일을 열어봐야겠죠?



 [level1@ftz level1]$ cat hint


level2 권한에 setuid가 걸린 파일을 찾는다.


Level 1의 문제입니다.

Level 2 권한에 setuid 가 걸린 파일을 찾으라는 문제입니다.


즉 서버 어딘가에 있는 파일에 level2의 setuid 가 걸려있는데, 그 파일을 찾아서 실행한다면 setuid 에 의해서 권한상승이 가능하다라는 말이다.


 SetUID는 해당 파일을 실행중 SetUID가 걸려있는 해당사용자로 잠시동안 권한이 변경됨을 뜻한다. 그리고 그 파일의 실행이 끝나면 다시 원래 자신의 권한으로 돌아오게 된다.*[1]



파일을 찾기위해서 사용되는 리눅스 명령어는 "find" 명령어 이다.

우리는 find 명령어를 통해서 level2의 계정으로 setuid가 걸린 파일을 찾아서 실행하면 된다.


 find 사용법: find [경로...] [수식]

 [ find 명령어 옵션 ]

 -perm : 특정 권한과 일치하는 파일을 찾는다.
 -name : 특정 이름과 일치하는 파일을 찾는다.
 -user : 특정 유저와 일치하는 파일을 찾는다.
 -group : 특정 그룹과 일치하는 파일을 찾는다.
 -size : 특정 사이즈와 일치하는 파일을 찾는다.   
            size 추가 옵션 형태 : find / -size n[bckw]
                    -> n을 크기를 지칭하는 정수이고, 뒤에 4개의 옵션은 단위를 지칭한다.
                         default 값은 b로 b는 블록단위, c는 바이트, k는 킬로바이트, w는 2-바이트 워드를 말한다.

이 명령어를 아주 잘 써보면 되는데


level2으로 setuid가 걸린 파일.

즉 위에 명령어를 만들어보면

user가 level2면서 perm이 setuid 가 걸려있는. 그런 파일을 찾으면 된다.



find          /           -user level2             -perm -4000

명령어   검색경로        user옵션            퍼미션(권한)옵션


파일이 어디있는지 모르므로 가장 최상위부터 검색을 시도하기 위해 '/' 부터 검색하며

level2 계정과 일치하는 파일을 찾아야 하므로 '-user level2'

그리고 setuid 가 걸려있는 파일을 찾기위해 '-perm -4000' 을 옵션으로 준다.

여기서 -4000 의 의미를 알아야 하는데, '-' 는 최소값을 정의(?)한다고 생각하면 된다. 즉 -4000 이라 함은 최소 4000의 권한을 가진 파일을 찾으라는 옵션이 된다.


그리고 '4000'은 파일에 걸린 권한에 대한 문제인데.

우리가 파일을 만들고 그 파일에 권한을 지정할때 chmod 명령어를 쓰는데, 여러분도 아시다시피 chmod 를 쓸때

예로 chmod ./test 4755 이런식으로 지정을 준다.


'-rwsr-x---'    1 level2   level1      12900  2월 28 10:52 /bin/ExcuteMe

여기 파일 권한을 보면 -rw's'r-x--- 에 s가 있음을 볼 수 있다.
여기서 s 가 setuid가 걸려있음을 의미한다.
여기서 4000의 '4'가 's' 권한을 부여한것을 의미한다.


• 디렉토리일 경우에는 d, 일반적인 파일일 경우에는 -가 표시

 파일 허가권(Permission)

⇒ "rw-", "r--", "r--" 3개씩 끊어서 읽음 (r은 read, w는 write, x는 execute)

⇒ 첫 번째는 소유자의 파일 접근 권한

⇒ 두 번째는 그룹의 파일 접근 권한

⇒ 세 번째는 그 외의 사용자의 파일 접근 권한


그래서 우리는 'find / -user level2 -perm -4000' 을 입력하면 원하는 파일을 찾을 수 있을것이다.


[level1@ftz level1]$ find / -user level2 -perm -4000

find: /etc/default: 허가 거부됨

find: /etc/httpd/conf/ssl.crl: 허가 거부됨

find: /etc/httpd/conf/ssl.crt: 허가 거부됨

find: /etc/httpd/conf/ssl.csr: 허가 거부됨

find: /etc/httpd/conf/ssl.key: 허가 거부됨

find: /etc/httpd/conf/ssl.prm: 허가 거부됨

find: /root: 허가 거부됨

find: /usr/share/ssl/CA: 허가 거부됨

/bin/ExcuteMe

find: /home/pwnplay: 허가 거부됨

find: /home/clear: 허가 거부됨

find: /home/level10/program: 허가 거부됨

find: /home/level5/tmp: 허가 거부됨

find: /home/trainer1: 허가 거부됨

find: /home/trainer10: 허가 거부됨

find: /home/trainer2: 허가 거부됨


여기서 우리는 Level2의 setuid가 걸린 '/bin/ExcuteMe' 라는 파일을 찾았다.

다른 결과는 권한이없어서 거부당한 에러메세지 이다.


여기서 하나 더 팁을 주자면, 저런 에러메세지는 출력되지 않게 할 수 있다.


 [level1@ftz level1]$ find / -user level2 -perm -4000 2>/dev/null

 /bin/ExcuteMe

이 방법인데, 명령어 뒤에 2>/dev/null 이란 옵션을 붙였다.

이 옵션은 '2'번 메세지를 /dev/null 즉 trash 시키는 옵션인데.

2번 메세지는 에러코드(?) 를 의미한다.

반대로 성공메세지인 1번을 넣으면 '/bin/ExcuteMe'는 출력되지 않고 허가거부 되었다는 오류메세지만 출력된다.


이렇게 나온 파일을 실행해보자.


[level1@ftz level1]$ /bin/ExcuteMe




                레벨2의 권한으로 당신이 원하는 명령어를

                한가지 실행시켜 드리겠습니다.

                (단, my-pass 와 chmod는 제외)


                어떤 명령을 실행시키겠습니까?


               [level2@ftz level2]$ 




파일을 실행하면 이런 화면을 만나게 된다.

웃긴것은, level2 의 암호를 알기위해서는 my-pass 를 사용해야하는데..

치사한놈이 my-pass는 실행시켜주지않겠다고 한다.


그래서 우리는 level2의 쉘을 이용해서 my-pass를 쓰면 된다.


[level1@ftz level1]$ /bin/ExcuteMe




                레벨2의 권한으로 당신이 원하는 명령어를

                한가지 실행시켜 드리겠습니다.

                (단, my-pass 와 chmod는 제외)


                어떤 명령을 실행시키겠습니까?


                [level2@ftz level2]$ sh


sh-2.05b$ my-pass


Level2 Password is "hacker or ****".




이렇게 레벨1은 클리어할 수 있다.

참쉬운문제인데 하나하나 설명하니깐 포스팅이 은근 기네욤 ㅋ.ㅋ

'Security > System' 카테고리의 다른 글

[HackerSchool FTZ] Level 1  (0) 2013.07.18
EggShell.c:에그쉘  (0) 2011.04.07

티스토리 툴바