[20] SetUID와 SetGID

9/07/2017 07:20:00 오후



-----------------------------------------------------------------------------------------
[user@localhost test]$ ls -l
total 20
-rwsr-xr-x 1 root root 13923 Oct 7 21:13 test
-rw-rw-r- 1 root 88 Oct 7 21:12 test.c

[user@localhost test]$ cat test.c
#include <stdlib.h>
void main()                                 // main함수 리턴형태가 void, Format String 공격
{
setuid(0);
setgid(0);                                    // 시스템콜 인자를 0으로 줌, Race Condition 공격
system("/bin/bash");                      // /bin/bash bash 셸을 실행함, Sniffing 기법
}
-----------------------------------------------------------------------------------------


특수권한 Setuid와 Setgid
p. 264


SetUID

Setuid(0)
현재 프로세스 uid를 root의 uid로 설정한다.

SetUID 파일은 누가 실행하든지 관계없이 해당 파일이 실행될 때 파일 소유자의 권한을 갖는다는 특징이 있다.

root 권한이 필요없는 프로그램에 소유자가 root가 되어있으면 보안상 취약점을 초래한다. 그러므로 시스템 관리자는 주기적으로 SetUID가 설정된 프로그램을 확인해야한다.


SetGID

Setgid(0)
현재 프로세스의 gid를 rootdml gid로 설정

SetUID와 기능이 유사하다. SetGID가 설정된 명령 또는 프로그램은 실행 중인 프로세스의 GID의 소유쥬 그룹ID를 변경한다. 즉 SetGID가 설정되어 있다면 실행중인 프로세스는 사용자가 속한 그룹의 권한이 아닌 소유주의 그룹권한을 갖게 된다.


퍼미션에 관하여

You Might Also Like

0 개의 댓글

Translate