ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • SetUID와 권한상승
    Security/System 2018.01.07 22:00

    <권한과 umask>

    * 파일과 디렉터리 생성 시 기본 권한

    - 파일 -> 644

    - 디렉터리 -> 755


    * 파일, 디렉터리의 기본 생성 최고 권한(umask 활용)

    파일 -> 666 (chmod로 실행권한 줄 수 있음 -일반 파일에 실행권한을 부여 하면 파일 색(실행 파일)이 연두색으로 변함)

    디렉터리 -> 777


    * /etc/profile 파일

    - umask 설정 돼 있음


    <SetUID>

    * SetUID

    - 프로그램 실행 시 파일 소유자의 권한으로 실행


    * /etc/shadow 파일의 접근권한

    - ---------

    - 권한 설정이 안 돼있어도 소유자(root)는 열람 가능


    * /usr/sbin/passwd 명령어의 접근권한

    - rwsr-xr-x

    - 비밀번호를 바꿀때는 /etc/shadow파일에 접근해야 하는데 SetUID를 통하여 일반 사용자들도 /etc/shadow에 접근하게 돼서 비밀번호 변경이 가능


    <User ID>

    1. UID(=RUID)

    : 계정을 식별


    2. EUID(Effective User ID)

    : 프로세스에 대한 권한을 결정


    3. SUID(Saved User ID)

    : EUID 저장, 복원


    ex) passwd 명령 실행 시 권한 전환

         EUID(500)을 SUID에 복사


        RUID:500

        EUID:0


        passwd 명령 종료 시 권한 전환

        SUID(500)을 EUID에 복사


    <권한 상승 가능한 명령어 조건>

    1. 파일 소유자 루트

    2. setuid비트가 설정

    -> 공격 대상이 됨


    -> find / -user root -perm +4000 2>/dev/null 명령으로 해당 조건을 갖고 있는 파일을 찾을 수 있음

    - 결과값 오류 메시지 나오는데 출력 안하려면 2>/dev/null

    - 0 : 표준입력, 1 : 표준출력, 2 : 표준에러

    - /dev/null : 휴지통


    <실습1>

    - 실습환경: CentOS

    1. 파일 소유자가 root인 파일을 root(uid:0)로 실행할 경우 변화 확인


    2. 파일 소유자가 root인 파일을 일반 계정(uid:500)으로 실행할 경우 변화 확인(setuid()실행여부)

    - 변화가 없음. 즉, setuid()실행 안됨

    - setuid함수는 관리자 계정에서만 실행이 가능하다는 것을 알 수 있음


    3. 파일 소유자가 root이고 SetUID가 설정되어 있는 파일을 일반 계정(uid:501)으로 실행할 경우 변화 확인

    - SetUID가 설정되어 있는 파일을 실행했기 때문에 실행 하는 동안 root권한을 얻게 되므로 setuid함수를 실행시킬 수 있음


    4. 파일 소유자가 일반 계정(uid:500)이고 SetUID가 설정되어 있을 때 결과 확인

    - 일반 계정(uid:501)로 실행

    - root(uid:0)로 실행


    <실습2>

    - 실습환경: CentOS

    - 실습을 위해 /bin/bash를 /workspace/bash로 복사 후 진행


    1. bash의 권한을 확인해보니 755이고 소유자가 root(즉, SetUID가 설정되어 있지 않음->권한 상승이 안되는 상태)


    2. bash파일에 SetUID를 줌(소유자는 그대로 root) 


    3. 일반 계정으로 bash를 실행하여 id명령으로 권한 상승이 되었는지 확인

    - 결과를 확인해보니 상승이 안된 것을 확인할 수 있음(bash는 시스템 파일로 보안 설정이 미리 돼있어서 권한상승이 안됨)


    4. 관리자 계정으로 bash를 실행할 수 있도록 우회

    [방법1]

    - 아래와 같은 코드를 bashHack.c라는 이름으로 만들고 컴파일



    - 실행 파일에 SetUID를 주어 root로 권한 상승이 가능하게 함


    - 일반 계정으로 로그인하여 만든 실행파일을 실행후 id명령으로 권한상승 된 것을 확인


    [방법 2]

    - 아래와 같은 코드를 viHack.c라는 이름으로 만들고 컴파일



    - 실행 파일에 SetUID를 주어 root로 권한 상승이 가능하게 함


    - 일반 계정으로 실행 파일을 실행하고 :!/bin/bash입력하여 쉘 실행


    - id명령으로 권한상승 된 것을 확인


    <실습3>

    - 실습환경: CentOS

    - /bin/more명령어에 SetUID를 설정


    - 일반 계정으로 more명령을 이용하여 /etc/shadow파일을 열어보니 열람이 가능한 것을 확인



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

    RET값 변조  (0) 2018.01.27
    adminstrator, root 계정 패스워드 초기화 방법  (0) 2018.01.13
    리눅스 취약점  (0) 2018.01.08
    패스워드 크래킹  (0) 2018.01.07
    SetUID와 권한상승  (0) 2018.01.07
    [Kali] 무차별 대입 공격  (0) 2017.03.20

    댓글 0

~ ^ . ^ ~