2008. 5. 26. 12:59

SQL Injection 공격에 대비 저장프로시져 삭제.

SQL Injection 공격에 대해서는 이미 잘 알고 있으실거라 알고, 그 공격과 외부 침입 공격에 대한 대비로 다음의 3가지 저장 프로시져를 drop 하는 것이 좋습니다.

xp_cmdshell
-> NT 계정을 생성할 수 있으며, Injection 공격에 가장 많이 사용되는 저장 프로시져 입니다.
xp_enumgroups
-> 현재 서버 셋팅되어 있는 모든 NT 그룹을 출력합니다.
sp_OACreate
-> SQL 서버에서도 Com 구성 요소를 등록 할 수 있으며, 그것을 사용이 가능합니다.


다음 과 같이 drop 할 수 있습니다.

drop proc xp_cmdshell
drop proc xp_enumgroups
drop proc sp_OACreate


뭐 이거 한다고 해당 프로시져를 사용 못하는것은 아닙니다.
다음과 같이 복원도 가능하니까요.

use master
 exec sp_addextendedproc 'sp_oacreate','odsole70.dll'
 exec sp_addextendedproc 'xp_enumgroups','xplog70.dll'
 exec sp_addextendedproc 'xp_cmdshell','xplog70.dll'
또한 보안을 위해서 cmd.exe 파일의 권한을 제한 하고, xp_cmdshell 프로시져 사용을 위해서 생성 하였다면 해당 프로시져는 실행 되지 않습니다.  해당 프로시져가 cmd 에서 실행 되기 때문입니다.

만약 해당 프로시저가 어떤 dll 파일이 사용되는지를 모를 경우 다음과 같이 확인 해 볼 수 있습니다.
단. 프로시져를 drop 해버렸다면 안나타납니다.
use master
 exec sp_helptext xp_cmdshell