본문 바로가기

웹 보안

[웹 개발자를 위한 웹 보안] 11장.권한

11장. 권한

 

 

1. 권한 상승

악의적인 사용자가 다른 사용자의 권한을 남용한 것.

 

권한 상승 공격 

- 수직적 확대: 공격자가 자신의 계정보다 더 넓은 권한을 가진 계정에 액세스할 수 있음.

- 수평적 확대: 공격자가 자신의 계정과 유사한 권한을 가진 다른 계정에 액세스.

 

 

 

2. 접근 제어 구현

각 사용자에게 올바른 권한이 적용되도록 사이트를 보호하는 프로세스.

 

접근 제어 전략

- 인증

- 권한 부여

- 권한

 

접근 제어 전략의 세 단계

 

(1) 인증 모델 설계

권한 부여 규칙을 모델링하는 방법

a.접근 제어 목록: 시스템의 각 개체에 권한 목록을 첨부해 각 사용자 또는 계정이 개체에 수행할 수 있는 작업을 지정하는 간단한 모델링 권한 부여 방법.

예) 리눅스 파일 시스템

b. 화이트리스트 및 블랙리스트: 모델 인증을 수행하는 가장 간단한 방법.

화이트리스트: 특정 자원에 액세스할 수 있는 사용자 또는 계정을 설명하고 다른 모든 사용자를 금지함.

블랙리스트: 자원에 액세스할 수 없는 사용자/계정을 명시적으로 설명해서 다른 사용자/계정에서 자원에 액세스할 수 있어야 함.

예) 스팸 필터

c. 역할 기반 접근 제어(RBAC, Role-Based Access Control): 사용자에게 역할을 부여하거나 특정 역할을 부여한 그룹에 사용자를 추가할 수 있음.

예) 아마존 웹 서비스 ID

d. 소유권 기반 접근 제어: 각 사용자가 업로드하는 사진이나 자신이 만든 게시물을 완전히 제어할 수 있도록, 소유권 개념에 접근 제어 규칙을 구성하는 것.

 

(2) 접근 제어 구현

인증 모델을 선택하고 사이트에 액세스 규칙을 정의한 후에 코드로 규칙을 구현해야 함.

 

권한 부여 규칙 구현 방법

- 함수/메서드 데코레이터 사용

- URL 검사

- 인라인 선언을 코드에 삽입 

 

(3) 접근 제어 테스트

접근 제어 방식에서 허점 찾도록.

누가 특정 자원에 액세스할 수 있는지, 더 중요한 것은 해당 자원에 누가 액세스할 수 없는지 확인하는 유닛 테스트 작성.

 

 

 

3. 디렉터리 접근 공격

웹사이트의 URL에 파일 경로를 서명하는 매개 변수가 포함돼 있다면, 공격자는 디렉터리 접근 공격을 사용해 접근 제어 규칙을 무시할 수 있음. 디렉터리 접근 공격에서 공격자는 사용자가 액세스할 수 없도록 의도하지 않은 중요한 파일에 액세스하려고 URL 매개 변수 조작함.

 

디렉터리 접근 공격 방법

a. 파일 경로 및 상대 파일 경로

파일 경로: 각 파일의 위치. 경로 구분 문자(/)

상대 파일 경로: 현재 디렉터리에 있음을 나타냄. 마침표(.)문자로 시작

b. 디렉터리 접근 공격 분석

파일 이름 매개 변수가 안전하게 해석되지 않으면 공격자는 URL의 메뉴 파일 이름 대신 상대 경로로 스왑할 수 있음

공격자가 서버를 해킹하는 데 도움이 될 중요한 시스템 정보 노출.

디렉터리 접근 기능 해제하는 방법

- 웹 서버 신뢰: 웹서버가 정적 콘텐츠 URL 을 확인하는 방법 숙지

- 호스팅 서비스 사용: 코드베이스에 포함되지 않은 파일을 제공한다면 콘텐츠 전송 네트워크, 클라우드 스토리지/콘텐츠 관리 시스템에서 호스팅

- 간접 파일 참조 사용: 로컬 디스크에서 파일을 제공하려고 고유 코드를 작성한다면 디렉터리 접근 공격을 방지하는 가장 안전한 방법

- 파일 참조 삭제: 사이트 코드를 보호해 파일 이름 대신 임의 경로를 전달할 수 없도록. 

 

 

 

문제: 다음 중 설명으로 옳지 않은 것은?

1. 웹사이트의 URL에 파일 경로를 서명하는 매개 변수가 포함돼 있다면, 공격자는 디렉터리 접근 공격을 사용해 접근 제어 규칙을 무시할 수 없다.

2. 권한 상승 공격은 '수직적 확대'와 '수평적 확대' 로 나뉜다.

3. 권한 부여 규칙을 모델링하는 방법 중 '화이트리스트 및 블랙리스트'의 예시로 '스팸 필터'를 들 수 있다. 

4. 파일 이름 매개 변수가 안전하게 해석되지 않으면 공격자는 URL의 메뉴 파일 이름 대신 상대 경로로 스왑할 수 있다.

 

 

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

[웹 개발자를 위한 웹 보안] 10장  (0) 2025.11.05
[웹 개발자를 위한 웹 보안]7장~9장  (0) 2025.10.29