본문 바로가기
정보보안

정보보안1 4차시

by IT매니절 2024. 4. 14.

(이번에도 복습에 가깝긴한데, 아주 조금 더 심화된 내용인듯)

 

 

find / -perm -4000 

=> 시스템 전체에서 set-uid 설정된 파일들을 모두 출력 (다른 권한이 있어도 상관x)

find / -perm 4000 

=> 시스템 전체에서 set-uid만 설정된 파일들을 모두 출력

 

set-uid가 설정된 파일은 권한상승으로 보안취약점이 될 수 있으므로

주기적으로 검색하여 점검해야 한다

 

yum -y install man-pages

=> man page 설치. #include <stdlib.h> import 필요.

c언어 소스코드에서 int system(const char *command); 로 쉘 명령어를 실행할 수 있다. exit(); 도 사용 가능...
(const 상수, 변경되지 않는 값)

 

C언어 함수를 사용한 실습1

#include <sys/types.h>      //setuid, seteuid 시스템에서 사용하는 다양한 자료형들
#include <unistd.h>         //setuid, seteuid C컴파일러 헤더 파일
#include <stdlib.h>         //system 함수를 이용하기 위한 include

printf("uid = %d\n", getuid());
// uid 출력
printf("euid = %d\n", geteuid());
// euid 출력

setuid(geteuid());
// euid값을 system() 함수를 이용해 setuid하여 euid 권한 획득

system("head /etc/shadow");
// system 함수로 /etc/shadow를 읽는다

 

(자꾸 실습 실행파일 동작이 안돼서 생각해보니 지난번 실습때 /etc/fstab에 /tmp 폴더에 noexec 옵션을 주었었다.

그래서 mount -o remount rw /tmp 로 다시 remount 해주었음)

 

C언어 함수를 사용한 실습2

// system() 함수를 사용하지 않고
FILE *fp;
char buf[1000];
fp = fopen("/etc/shadow", "r"));          //file open. 값이 NULL일 경우 예외처리는 알아서...
fgets(buf, sizeof(buf)-1, fp);            //fp를 적정바이트만큼 읽어와 buf에 저장
fclose(fp);                               //file open 후에는 꼭 close 해준다
printf("/etc/shadow 1 line = %s\n", buf);
//buf 변수에 내용을 담아 printf 등으로 출력할 수도 있다

 

#include <stdio.h>
=> printf
#include <stdlib.h>
=> exit, fopen, fgets, fclose

(max 3 exit, max fopen 이런식으로 명령어를 사용하면 설명서를 볼 수 있다

man은 여러 섹션으로 나누어져 있는데, 3은 library calls (ex stdio.h)를 의미함.

3번 섹션의 exit. 다른건 그냥 3 없이도 되는데 exit는 중복이 있나보다)

 

 

실습1, 실습2

=> set-uid가 설정되어 있을 때는 일반유저로 /etc/shadow를 읽을 수 있지만,

set-uid를 삭제하면 권한상승이 일어나지 않아(set-uid가 설정되어 있을 때만 euid권한이 소유자의 권한이 된다) 일반유저로는 허가 거부가 나게 된다.

 

[ 디렉터리
r파일목록조회, w파일생성/삭제, x디렉터리내부로접근 ]

 

 

r읽기권한 실습 (cat /etc/shadow)

1) 일반파일

- (관리자root는 제약을 받지 않는다)

- 일반유저 : /etc 폴더에 들어갈 수는 있으나, /etc/shadow 파일에 대한 허가거부

+ 내용을 조회할 수 없으므로 파일 복사도 불가능하다 (wx 권한은 관계없음)

2) 디렉터리 (ex mkdir -m000 /tmp/test1/ww)

- (관리자root는 제약을 받지 않는다)

- 일반유저 : 허가 거부 ( ls: cannot open directory ww: 허가 거부 )

 

w쓰기권한 실습

1) 일반파일

- (관리자root는 제약을 받지 않는다)

- 일반유저 :

파일 수정시, 수정할 디렉토리의 w권한 또는 파일의 w권한 둘 중 하나만 있어도 수정/삭제가능. 그리고 권한이 없어도 본인소유/본인소유그룹의 파일이라면 수정/삭제할 수 있다.

(파일을 수정하고 난 뒤엔, root 소유의 파일도 수정한 사용자의 소유/소유그룹으로 자동 변경된다)

2) 디렉터리 (ex mkdir -m000 /tmp/test1/ww)

- (관리자root는 제약을 받지 않는다)

- 일반유저 : cp 명령어로 복사할 때, 복사할 파일의 r권한이 있어야 하고, 복사될 디렉터리의 other부분 w권한이 있어야 한다. 삭제&생성 : 삭제&생성할 파일의 디렉터리 other부분 w권한이 있어야 한다.

 

문제
(other 기준, 파일의 소유자는 root 소유그룹도 root 일 때)
파일이 속한 폴더의 권한 : rwx
파일의 권한 : r--
이 때 일반유저는 파일을 수정할 수있는가?
=> 폴더의 w 권한이 있으므로 파일을 수정할 수 있다.

 

 

x실행권한 실습

1) 일반파일

- (관리자root도 x권한이 없으면 실행불가능)

- 일반유저 : x 권한이 없으면 허가 거부

2) 디렉터리 (ex mkdir -m000 /tmp/test1/ww)

- (관리자root는 제약을 받지 않는다)

- 일반유저 : x 권한이 없으면 내부 목록 조회 불가능 ( ls: cannot open directory ww: 허가 거부 )

 

 

set-gid권한 실습

1) 일반파일

- (관리자root는 큰 의미가 없다)

- 일반유저 : 

 

 

파일 조회/복사 : 파일의 r권한, 파일 위치의 디렉터리 rx권한, 복사될 디렉터리의 w권한
파일 수정/삭제 : 파일의 w권한 또는 파일이 속한 디렉터리의 w권한, 소유자/소유그룹

 

디렉터리 조회/복사 : 디렉터리의 x권한, 복사될 디렉터리의 rwx권한

디렉터리 삭제 : 상위 디렉터리의 rwx권한

 

* 관리자root는 디렉터리 rwx 권한에 제약받지 않는다. 단, 파일의 x권한에는 제약받는다.

일반유저는 모든 권한에 제약받는다.

* 심볼릭링크된 파일/디렉터리의 권한은 의미가 없으며 원본 파일/디렉터리의 권한을 따른다

 

 

sticky bit 권한 실습은 다음 시간에.

'정보보안' 카테고리의 다른 글

정보보안1 6차  (0) 2024.04.21
정보보안1 5차시  (0) 2024.04.20
정보보안1 3차시  (0) 2024.04.13
정보보안1_2차시  (0) 2024.04.07
정보보안1 1차시  (0) 2024.04.06