Notice
Recent Posts
Recent Comments
«   2025/05   »
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
05-02 13:02
Today
Total
관리 메뉴

해킹공주의 일상

[D-21] 인가되지않은 GRANT OPTION 사용 제한 본문

인프라진단/진단 항목 정리

[D-21] 인가되지않은 GRANT OPTION 사용 제한

7.3.7 2023. 8. 9. 16:42
반응형

점검 내용

WITH_GRANT_OPTION이라는 옵션을 ROLE(역할) 단위로 부여하는 것이아니라 그냥 USER에게 부여되어있는지 확인하는 항목이다. 해당 옵션은 좀 중요도가 있는 옵션이라 역할 단위로 부여하지 않으면 보안상 문제가 발생할 수 있는 모양이다...

 

WITH_GRANT_OPTION이란?

한마디로 '권한을 주는 권한'이라고 보면 쉽다.

지훈이가 뷰를 만들어 성민이에게 SELECT권한을 준다고 하자. 이때 지훈이가 만든 뷰에 시영이의 테이블이 있을 경우, 성민이는 시영이의 테이블에 대한 권한이 없어 뷰를 볼수가 없다. 이때 필요한게 WITH_GRANT_OPTION이다.

점검 방법

아래와 같이 dba_tab_privs 라는 권한 테이블에서 사용자 및 role , 소유자, 권한이름을 뽑아온다. 그중에서 시스템 관리자는 제외하는 듯하다.

Select grantee, owner, table_name 
from dba_tab_privs 
where grantable='YES' and owner not in ('SYS','MDSYS','ORDPLUGINS','ORDSYS','SYSTEM', 'WMSYS','SDB','LBACSYS') and grantee not in (select grantee from dba_role_privs where granted_role='DBA') order by grantee;

 

도출된 결과에서 table name이 WITH_GRANT_OPTION 인 사용자를 확인하면 된다. 위 sql 문은 사용자와 role을 모두 뽑아오기 때문에 role 만 뽑아오도록 수정해서 점검해야한다.

 

출력했을때, 아래와 같이 PUBLIC 에 WITH_GRANT_OPTION이 부여되어있을 경우 모든 사용자에게 적용되는 거라서 취약이다.

 

PUBLIC이란?

권한이라기보다는 모든 사용자한테 적용되는 개념이라고 보면 된다. PUBLIC에 뭔가를 적용하면 모든 사용자한테 적용이 된다..

GRANTEE                        OWNER                          TABLE_NAME                     PRIVILEGE                                                                                                  
------------------------------ ------------------------------ ------------------------------ ------------------------------     
PUBLIC                         SYS                            WITH_GRANT_OPTION              EXECUTE
반응형
Comments