[MSSQL] 확장저장프로시저 xp_cmdShell 제거

Posted by 협회장 향수코디
2007.11.12 18:10 컴퓨터 엔지니어/DATABASE

[MSSQL] 확장저장프로시저 xp_cmdShell 제거

확장프로시저에 접근이 가능하다면 다음과 같은 구문으로 신규 계정을 생성할수 있다.

이와 같이 어드민 계정이 생성되면 그 이후에는 그 서버는 마음대로 주무를수 있게 된다.


xp_cmdshell 'net user hacker1 Akld5793/add'
go
xp_cmdshell 'net localgroup administrators hacker1 /add'
go


이를 방지하기 위해 제거 해버린다.


USE master
GO
IF OBJECT_ID('[dbo].[xp_cmdshell]') IS NOT NULL BEGIN
   EXEC sp_dropextendedproc 'xp_cmdshell'
END
GO

EXEC sp_addextendedproc 'xp_cmdshell', 'xplog70.dll'
GO



USE master
GO

IF OBJECT_ID('[dbo].[xp_cmdshell]') IS NOT NULL BEGIN
   EXEC sp_dropextendedproc 'xp_cmdshell'
END
GO


재설치

sp_dropextendedproc을 해도 해당 DLL이 메모리에 남아 있다.

다음 명령어로 동적 연결 라이브러리(DLL)를 메모리에서 내리면 기존 파일이 지워진다.


dbcc xp_cmdshell(free)



---


USE MASTER

EXEC SP_HELPTEXT XP_CMDSHELL

-       여기서 나타난 DLL 이름을 기억해 둡니다. 이것은 나중에 다시 등록할 때 필요함.



USE MASTER

EXEC SP_DROPEXTENDEDPROC ‘XP_CMDSHELL’



다시 등록시

USE MASTER

EXEC SP_ADDEXTENDEDPROC ‘XP_CMDSHELL’, ‘XPLOG70.DLL’ -- 앞에서 알아냈던 DLL

신고
이 댓글을 비밀 댓글로