ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Running Command with Privilege
    운영체제보안 2024. 10. 12. 22:39

    권한이 정상적으로 상승하는 경우

    1. set-uid program

    2. sudo

    3. POSIX capabilities *(Portable Operating System InterFace for Unix)

    * POSIX capabilities

    루트한테 권한이 너무 많으니 권한을 캐이퍼빌리티로 쪼갬

    getcap / setcap


    SetUID / SetGID

    퍼미션에서 실제로 사용되는 비트는 12개

    s 두개랑 스티키 비트

     

    passwd 명령

    -rwsr-xr-x 1 root root ..

    누구나 명령 실행이 가능하지만 setuid 비트가 켜져 있어서 실행 중에는 권한이 오너의 것으로 상승됨

    passwd의 오너는 루트이니 루트의 권한으로 실행됨

    그 잠깐의 실행 중에는 일반 사용자의 uid가 0으로 바뀜

    * 정확히는 euid가 바뀜

     

    -rwsr-xr-x의 표현

    4755

    4: 2진수 100 => setuid 비트 켜짐

    7: rwx .. 기본적으로 setuid 프로그램은 실행 가능

    5: r-x .. 4 + 1

    5: r-x .. 4 + 1

     

    chmod 4744 setuid1 # -rwsr--r--
    chmod u+s setuid2 # -rwSr--r--

    위랑 아래의 차이

    아래는 x비트가 안켜져서 대문자 S.. 문제 있다는 뜻

    8진수로 나타내면 4644 임


    2. sudo

    1. /etc/sudoers 에 %sudo ALL=(ALL:ALL) ALL 설정 되어 있어야 함

    2. /etc/group 에 sudo:x:27:name 그룹에 들어가 있어야 함

    새 사용자한테 sudo 권한 줄 때는 : 붙이고 이름 추가하기

    * sudoers에 가끔 # 처리해서 주석처리 되어있는 경우도 있어 확인 필요

     

    루트 쉘 가는 법

    sudo -s

    sudo bash

    sudo su

    그런데 루트쉘 쓰는 건 추천되지 않음. sudo 쓰자

     

    다른 사용자의 권한으로 실행하는 법

    sudo -u UName CommadName


    Capabilities Overview

    도입되기 전에는 루트가 모든 걸 했음

    공격자가 루트 권한 탈취 시 방어가 안 됨

    => 루트 권한을 더 작은 권한으로 분할

    Fine-grained..

     

    Capability Description
    CAP_CHOWN 파일의 uid 또는 gid를 제한 없이 변경
    CAP_DAC_OVERRIDE rwx 권한 체크 없이 접근
    CAP_DAC_READ_SEARCH rwx 권한 우회만으로도 너무 강해서 존재
    읽기 권한만 패스
    CAP_IPC_LOCK 메모리 락 제한을 무시하고, 메모리 매핑을 위한 큰 TLB 플래그를 허용합니다.
    IPC 시 레이스 컨디션 발생 가능 > 락 필요.. 제한없이 우선 락 가능
    CAP_KILL any 프로세스에 시그널 보내기
    시그널 받을 준비가 안된 프로세스는 반드시 종료됨
    CAP_NET_ADMIN 네트워크 관련 작업 수행
    CAP_NET_RAW 네트워크 패킷 캡쳐 가능
    ping이 사용
    CAP_SETFCAP 파일 캐이퍼빌리티 설정
    SET_SETPCAP 프로세스 캐이퍼빌리티 설정
    CAP_SYS_ADMIN 다양한 시스템 관리 작업에 대한 포괄적인 권한.
    CAP_SYS_BOOT 시스템 재부팅
    CAP_SYS_CHROOT chroot 사용
    가상의 루트 시스템을 만들 때 사용
    CAP_SYS_MODULE 커널 모듈 로드, 언로드
    CAP_SYS_NICE 스케줄러 정책 및 nice 값 설정
    CAP_SYS_PTRACE ptrace로 임의의 프로세스 추적
    CAP_SYS_RESOURCE 리소스 제한 관리
    CAP_SYS_TIME 시스템 날짜 및 시간 세팅

     

    프로세스 캐이퍼빌리티 셋

    - 프로세스와 관련된 캐이퍼빌리티들

    - Effective : 프로세스가 현재 커널에 제시하는 권한

    - Permitted : 프로세스가 활성화할 수 있는 기능

     

    프로세스가 허용된 캐이퍼빌리티를 얻는 방법 : 밑에 거 체크

    파일 캐이퍼빌리티 셋

    Permitted (강제 허가) : 프로세스의 permitted 셋에 추가

    Inheritable (상속 시킴) : 자식 프로세스의 상속 가능 권한에 있으면 permitted 권한을 줌

    Effective: 1비트짜리

    0: exec 이후 그냥 0됨

    1: Permitted 셋에 있으면 1됨

     

    파일에 +e 비트가 설정되어 있으면 즉시 권한 활성화 및 실행 가능

    sudo setcap "cap_sys_time=pe" date
    sudo setcap cap_net_bind_service+ep /path/to/the/file

    p 설정: 최대 권한 범위에 설정

    e 설정: 실제로 활성화되도록 설정

    만약 i까지 설정했으면 상속도 가능했을 것

     

     

     

    '운영체제보안' 카테고리의 다른 글

    리눅스 매뉴얼, 커맨드  (0) 2024.10.14
    User Authentication  (0) 2024.10.14
    File permissions  (0) 2024.10.12
    리눅스 보안 introduction  (0) 2024.10.12
    Trusted OS  (0) 2024.10.12
Designed by Tistory.