블로그 이미지
잡초 개발자의 좌충우돌 이야기 yysvip

카테고리

분류 전체보기 (211)
Java Programing (24)
Web Programing (20)
Database (36)
Tool (46)
까칠한 IT (27)
까칠한 정보 (42)
까칠한 Strory (16)
까칠한 Project (0)
Total1,164,586
Today4,553
Yesterday4,153

달력

« » 2018.12
            1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31          

공지사항

권한 및 롤 관리

  까칠한 남자 Strory       yysvip.tistory.com       잡초 개발자 까찰한 쑤의 좌충우돌 개발 이야기

 

 

# 권한 및 롤 관리 
 

-- 계정 및 패스워드 정보

SELECT NAME, PASSWORD
  FROM SYS.USER$
 WHERE TYPE#=1; 

 

 

-- DBA 권한 사용자 조회

 
SELECT DISTINCT * --A.NAME
   FROM SYS.USER$ A, SYS.SYSAUTH$ B
  WHERE A.USER# = B.GRANTEE#
      AND B.PRIVILEGE# = 4 -- DBA 권한;

 

 

- 시스템 권한


 시스템 권한은 데이터베이스 내에서 데이터를 대상으로 하는 작업들을 제외한 나머지 영역에서 유저가 실행할 수 있는 모든 액션을 대상으로 한다.
실제 이러한 시스템 권한은 두가지로 소분류가 가능한데, 첫 번째로 특정 객체가 아니라 객체 종류 전체에 걸쳐 실행되는 권한으로 정의할 수 있으며, 흔히 'ANY' 권한으로 정의할 수 있다.
이러한 ANY 권한은 100개 이상이 존재한다.
ANY 권한의 예로서 EXECUTE ANY PROCEDURE 등을 생각해 볼 수 있으며, 이때 주의할 점은 ANY 권한을 할당받았다고 하여 SYS 소유의 객체까지 자동으로 대상이 되지는 않는다는 것이다.
이것은 07_DICTIONARY_ACCESSIBILITY 파라미터의 값을 TRUE 로 설정하였을 시에 적용되며, 보안상 심각한 문제를 유발할 수 있기에 항상 디폴트 값인 FALSE 를 유지해야만 한다.


 

SELECT NAME
  FROM SYS.SYSTEM_PRIVILEGE_MAP ;

 

SELECT NAME 
  FROM SYS.TABLE_PRIVILEGE_MAP ;

 

 

# 중요한 시스템 권한


부적절한 관리가 이루어졌을 경우, 데이터베이스 서버 상의 전체 통제권을 획득할 수 있는 중요한 시스템 권한들이 있다.

 

권한 명

설명

EXECUTE ANY PROCEDURE 가장 중요한 시스템 계열 권한 중 하나이며, 이 권한이 잘못 허가되었을 경우, DBA 권한을 순식간에 획득할 수 있다.
SELECT ANY DICTIONARY SELECT ANY DICTIONARY 권한을 가진 유저는 데이터 딕셔너리 내의 모든 테이블을 조회할 수 있다.
예를 들어 SYS.USERS$ 테이블에서 각 유저별 패스워드의 해시 값을 획득하는 것이 가능하다.
일반적인 경우에 이 권한을 가진 유저가 DBSNMP 유저 계정이다.
이 유저 계정은 디폴트를 구축되는 계정 중 하나로서, DBA 권한이 없음에도 불고하고 데이터 딕셔너리를 조회할 수 있는 유저 계정으로서 이 유저 계정을 활용하여 DBA 권한을 획득하는 것이 가능하다.
GRANT ANY PRIVILEGE
GRANT ANY ROLE
GRANT ANY OBJECT PROVILEGE
이 중 어떠한 권한이라도 유저에게 할당될 경우, 해당 유저 계정은 데이터베이스의 통제권을 획득하는 것이 가능하다.
CREATE LIBRARY 만약 유저가 CREATE LIBRARY나 기타 LIBRARY 관련 권한을 할당받을 경우, 해당 유저는 외부저장 프로시저 내에 공격 코드를 심어 실행하는 것이 가능해 진다.



출처 : 데이터베이스 보안 - 조은백

 

 

Posted by yysvip

최근에 달린 댓글

최근에 받은 트랙백

글 보관함