http://taeksu.tistory.com/entry/SQL-Server-%EB%A1%9C%EA%B7%B8%EC%9D%B8-%EB%B0%8F-%EB%B3%B4%EC%95%88
6. 위험한 확장 저장 프로시저들을 제거하라.
- Xp_cmdshell (쉘 상의 모든 명령들을 수행할 수 있다.)
USE master
GO
IF OBJECT_ID('[dbo].[xp_cmdshell]') IS NOT NULL BEGIN
EXEC sp_dropextendedproc 'xp_cmdshell'
END
GO
-
- Xp_regread, xp_regwrite (레지스트리를 읽거나 쓰기가 가능)
- Xp_makewebtask (데이터베이스 내의 정보들을 인터넷에 게시할 수 있다.)
- Xp_enumdsn (DNS 정보들을 보고자 하는 경우 사용)
- Sp_dropextendedproc 시스템 프로시저로 제거 할수 있다. Ex) sp_dropextendedproc 'xp_cmdshell'
1) master database
· 확장 프로시저 퍼미션 삭제
· REVOKE EXECUTE on xp_regread FROM public
· REVOKE EXECUTE on xp_instance_regread FROM public GO
· sp_runwebtask 접근을 통한 web task 실행 권한 획득 방지
· REVOKE EXECUTE on dbo.sp_runwebtask FROM public GO
2) msdb database
· Agent Job 접근을 통한 권한 확대 방지
· REVOKE EXECUTE on sp_add_job FROM public
· REVOKE EXECUTE on sp_add_jobstep FROM public
· REVOKE EXECUTE on sp_add_jobserver FROM public
· REVOKE EXECUTE on sp_start_job FROM public
· mswebtasks 테이블을 통한 web task 관리 권한 획득 방지
· REVOKE ALL on dbo.mswebtasks FROM public
· DTS packages 를 통한 administrator 패스워드 유출 방지
· REVOKE EXECUTE on sp_enum_dtspackages FROM public
· REVOKE EXECUTE on sp_get_dtspackage FROM public
· SQL Agent Password 노출 방지
· REVOKE EXECUTE on sp_get_sqlagent_properties FROM public
프로시저들의 Drop후에도 dll 파일은 남아 있으니 아래 쿼리를 실행하여 제거한다.
· dbcc xp_cmdshell(free)
· dbcc xp_dirtree(free)
· dbcc xp_regdeletekey(free)
· dbcc xp_regenumvalues(free)
· dbcc xp_regread(free)
· dbcc xp_regwrite(free)
· dbcc sp_makewebtask(free)
· dbcc sp_adduser(free)
다음으로 SQL Injection을 유발시킬 수 있는 시스템 DB상에 존재하는 프로시저들의 EXCUTE권한을 DENY하겠다. 해당 프로시저들을 통해 시스템의 정보를 조회하고 변경할 수 있으니 필수적으로 DENY해야 할 권한들이다.
· DENY EXECUTE on [master].[dbo].[xp_subdirs] TO [guest] CASCADE
· DENY EXECUTE on [master].[dbo].[xp_dirtree] TO [guest] CASCADE
· DENY EXECUTE on [master].[dbo].[xp_availablemedia] TO [guest] CASCADE
· DENY EXECUTE on [master].[dbo].[xp_regwrite] TO [guest] CASCADE
· DENY EXECUTE on [master].[dbo].[xp_regread] TO [guest] CASCADE
· DENY EXECUTE on [master].[dbo].[xp_regaddmultistring] TO [guest] CASCADE
· DENY EXECUTE on [master].[dbo].[xp_regdeletekey] TO [guest] CASCADE
· DENY EXECUTE on [master].[dbo].[xp_regdeletevalue] TO [guest] CASCADE
· DENY EXECUTE on [master].[dbo].[xp_regremovemultistring] TO [guest] CASCADE
· DENY EXECUTE on [master].[dbo].[xp_regaddmultistring] TO [guest] CASCADE
마지막으로 일반 User의 물리적 파일 접근을 제한하기 위해 아래 쿼리를 실행한다.
· DENY EXECUTE on [master].[dbo].[xp_fileexist] TO [guest] CASCADE
· DENY EXECUTE on [master].[dbo].[xp_fixeddrives] TO [guest] CASCADE
· DENY EXECUTE on [master].[dbo].[xp_getfiledetails] TO [guest] CASCADE
'Database > MS-SQL' 카테고리의 다른 글
[스크랩] MSSQL DATABASE SHRINK 축소 (0) | 2016.04.22 |
---|---|
[스크랩] 저장프로시저 결과에 대해 정렬/where 조건 넣기 (sp_who2, sp_lock) (0) | 2016.03.15 |
[스크랩] 2008 이상에서 MSSQL 로그 truncate only 원할시 (0) | 2016.01.20 |
[스크랩] SQL sa계정 복구 방법 (단일모드로 로그인) (0) | 2016.01.11 |
[스크랩] SA계정 이름 변경 및 비활성화 (0) | 2016.01.11 |