본문 바로가기

컴퓨터 엔지니어/운영체제/컴퓨터

SQL공격의 주범 xp_cmdshell 죽이기

SQL공격의 주범 xp_cmdshell 죽이기


출처 : http://support.microsoft.com/kb/891984 

윈도우서버

MSSql에서 스토어드 프로시져를 통해 Command Shell 을 실행시킬수 있다. 
이걸 이용해 외부에서 디렉토리 접근등 해킹에 이용될수 있기 때문에 
xp_cmdshell 의 사용을 중지시켜 해킹에 대비할수 있다. 

Stored procedure Purpose 
sp_ActiveDirectory_SCP Add, change, or delete Active Directory directory service objects  
sp_adddistpublisher Replication  
sp_adddistributiondb Replication  
sp_attachsubscription Replication  
sp_changedistpublisher Replication  
sp_copysubscription Replication  
sp_MScopysnapshot Replication  
sp_MScopyscriptfile Replication install 
sp_MSget_file_existence Replication install 
sp_MSremove_userscript Replication install 
sp_replicationoption Replication 
sp_vupgrade_replication Replication install 
sp_MSreplremoveuncdir Replication called from distribution database 
sp_MSdeletefoldercontents Replication called from distribution database 
sp_resolve_logins Log shipping  
Sp_set_local_time MSDB 
sp_msx_defect MultiServer administration 
sp_msx_enlist MultiServer administration 

위자료는 xp_cmdshell로 실행시킬수 있는 명령어들.. 

xp_cmdshell 해제법. 


exec sp_dropextendedproc 'xp_cmdshell' 

재등록 


exec sp_addextendedproc 'xp_cmdshell', 'xplog70.dll' 

혹시라도 다른 방식으로 서버가 해킹을 당할수도 있다. 
그럴경우 xp_cmdshell 을 재등록 할수 있기 때문에 xplog70.dll 파일을 
삭제하는것도 좋은 방법이다. 

하지만 xplog70.dll 파일이 없을경우 


• Xp_sscanf 
• Xp_sprintf 
• Xp_msver 
• Xp_msver 
• Xp_enumgroups 
• Xp_logevent 
• Xp_loginconfig 


이 명령어들이 작동하지 않을수 있으므로 주의가 필요함. 
  
  
  
xplog70.dll을 삭제하고서 SQL Server Restart하면 더이상 sp_addextendedproc를 사용해서 등록할 수 없다. 
쿼리분석기에서 다시 sp_addextendedproc 'xp_cmdshell', 'xplog70.dll'을 실행하면 정상적으로 실행되지만, 
xp_cmdshell 'dir' 와 같이 실행하면, 
ODBC: 메시지 0, 수준 16, 상태 1 
xplog70.dll DLL 또는 이 DLL이 참조하는 DLL 중 하나를 로드할 수 없습니다. 이유: 126(지정된 모듈을 찾을 수 없습니다.). 라는 메세지를 뿌리면서 실패하게 된다.