[ftz] hackerschool level1 풀이
- 보안/HackerSchool-ftz
- 2019. 9. 25. 02:15
l hackerschool level1 풀이
실행 환경 : VMware Workstation 14 Player, Red Hat Linux 9.0
참고 도서 : 문제 풀이로 배우는 시스템 해킹 테크닉
** 공부를 하면서 기록하는 내용이다 보니 틀린 내용이 있을 수도 있습니다. 틀린 부분이 있다면 댓글로 알려주시면 감사드리겠습니다. **
login as: level1 level1@192.168.146.128's password: |
level1 문제의 아이디인 level1 과 password인 level1 을 입력하여 level1의 유저로 접속합니다.
[level1@ftz level1]$ ls -l total 12 -rw-r--r-- 1 root root 47 Apr 4 2000 hint drwxr-xr-x 2 root level1 4096 Dec 7 2003 public_html drwxrwxr-x 2 root level1 4096 Jan 16 2009 tmp |
ls -l 명령어를 사용하여 현재 위치( /home/level1 ) 아래에 있는 디렉터리의 목록을 확인합니다.
목록들 중 hint 파일을 읽어 어떤 식으로 문제를 풀어야 하는지 보도록 하겠습니다.
[level1@ftz level1]$ cat hint level2 권한에 setuid가 걸린 파일을 찾는다. |
cat 명령어를 사용하여 hint 파일을 확인해본 결과 'level2 권한에 setuid가 걸린 파일을 찾는다.'라는 힌트를 볼 수 있습니다.
l setuid 란?
더보기
보통 setuid의 경우 실행파일에 사용됩니다. 실행파일에 setuid가 걸려있을 경우 현재 접속해있는 user의 권한이 아닌 파일 소유자의 권한으로 실행이 됩니다. -rwsr-xr-- 2 root level1 4096 Jan 16 2009 tmp
예를 들어, ls -l을 했을 때 나왔던 tmp 디렉터리의 허가권을 약간 수정하여 위와 같을 때, level1의 사용자가 tmp 파일을 실행하게 되면 파일의 소유권을 가진 root의 권한으로 실행을 하는 것입니다.
|
[level1@ftz level1]$ find / -user level2 -perm -4000 2>/dev/null /bin/ExecuteMe |
위의 힌트를 참고하여 level2 권한에 setuid가 걸린 파일을 찾기 위해서는 find 라는 명령어를 사용해야 합니다.
find 명령어에 대해 궁금하신 분들은 man find 명령을 사용하여 확인하실 수 있습니다.
find / -user level2 -perm -4000 2>/dev/null이라는 명령어에 대해서 알아보도록 하겠습니다.
1. / : / 아래에 있는 모든 것을 검사하라는 것입니다.
2. -user level2의 : 파일의 소유권이 level2인 파일만 검색하라는 옵션입니다.
3. -perm -4000 : 부가적인 설명을 밑에 같이 해두었습니다.
4. 2>/dev/null : 숫자 2가 나타내는 의미는 표준 에러 즉, stderr를 의미합니다. /dev/null의 의미는 간단히 휴지통 의 역할을 한다고 생각하면 됩니다. 즉 error를 모두 휴지통으로 버려서 출력을 하지 말아라의 의미입니다. 추가로 숫자 1의 경우 표준 출력 즉, stdout을 의미합니다. 따라서 2 대신 1을 넣고 실행할 경우 /bin/ExecuteMe를 제외한 Permission 에러들을 확인할 수 있습니다.
l 허가권에 대한 간단한 설명
더보기
허가권에 대해 간단하게 설명하기 위해 위에서 보았던 tmp 파일을 사용하겠습니다. -rwsr-xr-- 2 root level1 4096 Jan 16 2009 tmp
tmp 파일에서 허가권은 -rwsr-xr-- 이 부분이며 맨 앞의 -을 제외하고 앞에서부터 3개씩 묶어서 총 3 부분으로 나눌 수 있습니다.
처음에 나오는 rws는 파일의 소유권을 가진 사용자가 할 수 있는 권한을 의미합니다. 즉 root의 경우 읽기, 쓰기(수정), 실행의 권한을 가지고 있습니다.
r-x의 경우 level1 그룹에 속한 사용자들의 권한을 의미하며 그 그룹에 속한 사용자들은 읽기, 실행의 권한을 가집니다.
r--의 경우 그 이외의 사용자들 즉, other를 의미하며 읽기의 권한만 있습니다.
참고로 rwx는 숫자로 각각 4, 2, 1을 의미합니다. 즉 -rw-r--r--의 경우 644를 의미하고, -rwxrwr--의 경우 764를 의미합니다.
|
l perm옵션이란?
더보기
man find를 이용해서 find 명령어 옵션 중 -perm 부분이 나올 때까지 enter키를 이용하여 아래로 내려갑니다. -perm 명령어를 확인해보면 mode, -mode, +mode 이렇게 세 가지가 있는 것을 볼 수 있습니다. mode 부분에는 허가권에 대한 정보가 들어가며 허가권에 대해 잘 모르시는 분들을 위해 간단하게 설명을 위에 적어두었습니다.
mode, -mode, +mode의 설명 페이지를 보면 mode의 경우 정확한 허가권의 값을 가지는 파일만 출력으로 이해하기 쉽지만 -와 +의 경우 무슨 의미지 싶을 수 있습니다. 따라서 아래에 두 개의 차이를 설명하겠습니다.
위와 같이 touch 명령어로 5개의 파일을 만들고 chmod를 이용하여 각각 파일에 100, 200, 300, 400, 700의 허가권을 주도록 하겠습니다. 위의 결과를 출력하게 되면 아래와 같습니다.
이 결과를 바탕으로 find / -user level1 -perm -300 과 find / -user level1 -perm +300 의 명령어를 입력했을 때 어떤 차이가 있는지 확인해보겠습니다.
위의 결과가 +를 했을 때의 결과이고, 아래가 -를 했을 때의 결과입니다. 허가권으로 표시를 했을 때 300은 --wx-----입니다. +를 했을 경우 1, 2, 3, 5가 출력이 되었고, -를 했을 경우 3, 5가 출력되었으며, 4는 어느 것에도 출력되지 않았습니다.
+를 먼저 살펴보면 1, 2, 3, 5 모두 300이 나타내는 wx 둘 중 하나라도 가지고 있습니다. 즉, 1의 경우 wx 중 x를 2의 경우 wx 중 w를 3의 경우 wx 둘 다, 5의 경우 wx 둘 다 가지고 있습니다. 4의 경우는 r만 가지고 있으므로 wx 둘 중 어느 것도 없습니다. 이 결과로 볼 수 있듯이 +의 경우 내가 찾고자 하는 허가권과 파일의 허가권 중 겹치는 것이 하나 이상일 경우 출력해주는 것을 알 수 있습니다.
그럼 이제 -의 경우 어떤 것이 출력되는지 아실 겁니다. 허가권 300에는 wx가 들어가 있고, 3, 5번 파일 모두 wx가 들어가 있습니다. 즉, 내가 찾고자 하는 허가권과 파일의 허가권이 모두 겹쳐야 출력이 되는 것을 알 수 있습니다.
|
[level1@ftz tmp]$ ls -l /bin/ExecuteMe -rwsr-x--- 1 level2 level1 12868 Sep 10 2011 /bin/ExecuteMe |
실행파일을 확인해보면 setuid가 설정되어 있는 것을 볼 수 있고, 따라서 level1 사용자가 level2 사용자의 권한으로 파일을 실행시킬 수 있습니다.
[level1@ftz tmp]$ /bin/ExecuteMe 레벨 2의 권한으로 당신이 원하는 명령어를 한가지 실행시켜 드리겠습니다. (단, my-pass와 chmod는 제외) 어떤 명령을 실행시키겠습니까? [level2@ftz level2]$ sh |
/bin/ExecuteMe 라고 명령을 입력하게 되면 사용자가 level2로 바뀐 것을 확인할 수 있습니다. sh의 경우 셸을 실행하는 명령어로 이외에도 /bin/bash, bash 등이 있습니다.
sh-2.05b$ id uid=3002(level2) gid=3001(level1) groups=3001(level1) sh-2.05b$ whoami level2 |
셸을 취득한 후에 id 나 whoami 명령어를 사용하여 사용자가 누구인지 등 정보를 확인할 수 있고, level2라고 나오는 것으로 보아 level2 권한의 셸을 획득한 것을 알 수 있습니다.
그 후 my-pass라는 명령어를 입력하게 되면 level2로 넘어가는 비밀번호를 알 수 있습니다.
l level2 비밀번호
Level2 Password is "hacker or cracker".
'보안 > HackerSchool-ftz' 카테고리의 다른 글
[ftz] hackerschool level6 풀이 (0) | 2019.11.04 |
---|---|
[ftz] hackerschool level5 풀이 (0) | 2019.10.05 |
[ftz] hackerschool level4 풀이 (0) | 2019.10.03 |
[ftz] hackerschool level3 풀이 (0) | 2019.09.29 |
[ftz] hackerschool level2 풀이 (0) | 2019.09.27 |
이 글을 공유하기