본문 바로가기
공부/리눅스

2-9. 리눅스 취약점 조치(파일 및 디렉토리 관리) - SUID, SGID, 설정 파일점검

by SLkittys 2024. 1. 30.
728x90

1. 계정관리

   1 - 1. Root 계정 원격접속 제한  * KISA 다운로드 링크 포함

   1 - 2. PW 설정

   1 - 3. 계정 잠금 임계값 설정

   1 - 4. PW 파일 보호

2. 파일 및 디렉토리 관리

   2 - 1. root 홈, 패스 디렉터리 권한 및 패스 설정

   2 - 2. 파일 및 디렉토리 소유자 설정

   2 - 3 ~ 8. /etc 하위 디렉토리 파일 소유자 및 권한 설정

   2 - 9. SUID, SGID, 설정 파일 점검 (현재글)

 

 가. SUID, SGID, 설정 파일 점검

       * SUID : 특정 작업 수행을 위해 일시적으로 파일 소유자의 권한을 얻게됨.

       * SGID : 특정 작업 수행을 위해 일시적으로 파일 소유 그룹의 권한을 얻게됨.

 

    1) 파일 중 SUID나 SGID가 있는 파일 탐색

# find / -user root -type f \( -perm -04000 -o -perm -02000 \) -xdev -exec ls –al {} \;

위의 명령어를 뜯어보자.
  • find: 파일 검색
  • /: 검색을 시작할 디렉토리(/ = root directory)
  • -user root: 파일 소유자가 root인 파일만 검색
  • -type f: 파일 타입이 일반 파일인 파일만 검색
  • \( -perm -04000 -o -perm -02000 \): SUID(-04000) 또는(-o) SGID(-02000)가 설정된 파일을 검색
  • -xdev: 현재 파일 시스템에서만 검색
  • -exec ls –al {} \;: 검색된 파일에 대해 ls -al 명령어를 실행

        아래는 실행된 결과의 마지막 부분만 가져온 것이다.

        마지막 /usr/libexec/spice-gtk-x86_64/spice-client-glib-usb-acl-helper 라는 파일이 보인다.

        해당 파일은 쉽게 설명하면, SPICE 프로토콜을 사용하여 USB를 가상머신에 연결할때 사용되는 파일이다.

        즉, 아무 문제없다.

        

        만일 KISA 가이드의 부록에 참고되어있지 않은 불필요한 SUID/SGID의 목록이

        위의 명령어를 실행시켰을 때 존재한다면

chmod -s 파일 이름

위의 명령어를 사용하여 SUID와 SGID를 제거하여 해당 파일의 소유자나 그룹이 임의로 실행하는 것을 방지하자.

 

만약 반드시 해당 파일 및 디렉토리의 사용이 필요하다면

#/usr/bin/chgrp <group_name> <setuid_file_name> 

#/usr/bin/chmod 4750 <setuid_file_name>

위와 같이 설정하여 특정 그룹에서만 사용하도록 제한하여야한다.

--------------------------------------------------------------------

아래는 SUID를 이용한 악용방법에 대한 예시이다.

# mkdir /hack      - 테스트할 디렉터리를 생성한다. 이름은 상관없다.
# cd /hack           - 생성한 디렉터리로 이동

# vi hack.c          - 테스트할 파일 생성, 아래의 내용을 입력한다.
#include
main() {
        setuid(0);
        setgid(0);
        system("/bin/bash");
}
# gcc -o hack hack.c       - hack.c를 hack 이라는 이름으로 컴파일한다.
# chmod 4755 hack        - hack 파일의 권한 수정
테스트를 위해 유저계정으로 접속 후 만들어놨던 파일을 실행시켜 root권한을 획득하였다.
본래라면 pw 알아낸 후 입력하여 권한을 취득하여야 한다.

위와 같은 취약한 파일 및 디렉터리는 필요하지 않다면 삭제 혹은 권한을 제거하도록하자

간단한 예시이지만, 위와 같이 필요 이상의 SUID, SGID가 부여되어 있다면

흔히 사용하는 more, cat 등의 명령에 root의 권한을 부여하여 일반 사용자는 볼 수 없는

/etc/shadow 파일에 접근하는 등의 악용이 가능하다.

728x90