ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [HackerSchool] Level5
    오래된/HackerSchool 2011. 4. 27. 22:25

    [level5@ftz level5]$ cat hint

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

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

    [ level5 hint]

    사실 hint만 봐서는 어떤 취약점인지 알기가 많이 힘들다.
    하지만, strace 라는 프로그램을 이용하면 해당 프로그램이 어떤 명령을 수행하는지 한 눈에 볼 수 있다.
    문제는 문제를 만들기 위한 문제이다보니, strace로 확인하는 경우 password가 그대로 노출되기 때문에 좀 허무하게 끝날 수 있다.

    creat("/tmp/level5.tmp", 0600)          = 3
    write(3, "next password : \n\0", 31) = 31
    close(3)                                = 0
    rmdir("/tmp/level5.tmp")                = -1 ENOTDIR (Not a directory)
    unlink("/tmp/level5.tmp")               = 0
    [ strace /usr/bin/level5 ]

    일단 정상적인(?) 방법으로 문제에 접근해 보기로 한다.
    /usr/bin/level5 프로그램을 실행시키면 /tmp/level5.tmp 파일에 0600( -rwx------ ) 권한을 설정하여 파일을 생성하고, 패스워드 문자열을 입력 한 뒤, 파일을 닫고 동일한 이름의 디렉토리와 파일을 삭제 한다는 것을 확인 할 수 있다.

    [level5@ftz tmp]$ ls -al /usr/bin/level5
    -rwx--x---    1 level6   level5      14402  3월 29  2003 /usr/bin/level5
    [ level5 권한 ]

    권한을 보면 setuid 퍼미션 설정이 되어 있지 않음을 알 수 있다. 즉, level5 프로그램을 실행 시킨다고 해도, 해당 파일이 실행 되는 동안 권한은 level5 라는 것을 알 수 있다.

    따라서 권한 상승이 목표가 아니라, 해당 프로그램의 취약한 점을 이용한 패스워드의 추출임을 알 수 있다.

    1. symbolic link

    symbolic link 는 윈도우상에서 바로가기와 동일하다.
    이 바로가기를 이용 한다면, 우리는 우리가 원하는 내용을 확인 할 수 있음을 알 수 있다.



    -- 추가 --

    사실 이 문제는 많은 변화가 일어났던 문제중 하나이다.

    [level5@ftz tmp]$ stat /usr/bin/level5
      File: `/usr/bin/level5'
      Size: 14402           Blocks: 32         IO Block: 4096   Regular File
    Device: 802h/2050d      Inode: 341437      Links: 1   
    Access: (0710/-rwx--x---)  Uid: ( 3006/  level6)   Gid: ( 3005/  level5)
    Access: 2011-04-21 10:53:15.000000000 +0900
    Modify: 2003-03-29 12:10:20.000000000 +0900
    Change: 2010-08-31 02:20:48.000000000 +0900
    [ 2010년 8월에 수정됨 ]

    최종 2010년 8월 31일에 수정되었음을 알 수 있다.

    최초에는 Race Condition 기법을 이용한 권한 상승이 문제였는데, 이후 sticky bit 로 인한 문제로 변경 되었고,
    현재는 이렇게 프로그램의 문제를 이용한 공격으로 변경 되었다.

    1. Race Condition

    Race Condition 공격기법은 프로그램이 연산을 수행하는 중간에 끼어 들어 권한 상승을 목표로 하는 공격기법이다.

    2. sticky bit

    [level5@ftz tmp]$ ls -ald /tmp
    drwxrwxrwt    3 root     root        69632  4월 21 10:31 /tmp
    [ /tmp 디렉토리에 설정된 sticky bit ]

    기본적으로 리눅스 시스템 상에서는 쓰기 권한이 있는 디렉토리의 파일들은 삭제가 가능하다.
    하지만 sticky bit  가 설정된 경우에는 특별하게, 쓰기권한이 있는 사용자라 할지라도 소유권한이 없다면 삭제할 수 없게 하는 기능이다.

    '오래된 > HackerSchool' 카테고리의 다른 글

    [HackerSchool] Level7  (0) 2011.04.27
    [HackerSchool] Level6  (0) 2011.04.27
    [HackerSchool] Level4  (0) 2011.04.27
    [HackerSchool] Level3  (0) 2011.04.26
    [HackerSchool] Level2  (0) 2011.04.26

    댓글

Designed by Tistory.