저장 프로시저는 SQLServer에 저장된 미리 작성된 SQL 문들의 집합으로, 그중 가장 위험한 확장 저장 프로시저가 xp_cmdshell로, 운영체제의 모든 명령어를 실행할 수 있습니다. SA는 Microsoft SQLServer의 관리자 계정으로, 최고 권한을 가지고 확장 저장 프로시저를 실행할 수 있고, 실행과 같은 반환 값을 얻을 수 있습니다:
대장님.. xp_cmdshell 'net user test 1234 /add' 및 exec master: xp_cmdshell 'net localgroup administrators test /add'
이렇게 하면 사용자 이름의 test, 비밀번호 1234, 관리자 권한이 상대방 시스템에 추가되며, 이는 그림 1에 나타난 것입니다.
이제 왜 SA 비밀번호를 얻고 시스템의 최고 권한을 받는지 이해할 수 있을 겁니다. 많은 네트워크 관리자들이 이 상황을 모르고 SA 사용자용 간단한 비밀번호를 1234, 4321 정도 설정하거나, 아예 비밀번호를 설정하지 않아 네트워크 침입자가 해킹 도구로 SA 비밀번호를 쉽게 스캔하고 컴퓨터를 제어할 수 있도록 합니다.
xp_cmdshell 외에도 침입자가 악용할 수 있는 저장 프로시저들도 있습니다:
1. xp_regread (이 확장 저장 프로시저는 레지스트리에 지정된 키에 지정된 값을 읽을 수 있음), 사용 방법(머신 이름 가져오기):
선언@testVarchar(50) 임원장.. xp_regread @rootkey='HKEY_LOCAL_MACHINE', @key='system\controlset001\control\computername\computername', @value_name='computername', @value=@test 출력 선택 @test
2. xp_regwrite (이 확장 저장 프로시저는 레지스트리에서 지정한 키에 지정된 값을 쓸 수 있음), 그리고 사용법(키에 bbb HKEY_LOCAL_MACHINE\SOFTWARE\aaa\aaaaValue를 쓰기):
임원님.. xp_regwrite @rootkey='HKEY_LOCAL_MACHINE', @key='SOFTWARE\aaa', @value_name='aaaValue', @type='REG_SZ', @value='bbb'
침해된 컴퓨터의 관리자 사용자가 레지스트리 내 HKEY_LOCAL_MACHINE\SAM\SAM\ 정보를 탐색할 수 있다면, xp_regread와 xp_regwrite 두 개의 저장 프로시저를 사용해 관리자 사용자를 복제하고 관리자 권한을 얻을 수 있습니다. xp_regdeletekey xp_regdeletevalue은 시스템에 보안 위험을 초래할 것입니다. 3. OLE 관련 저장 절차의 일련으로, 이 저장 절차는 sp_OACreate, sp_OADestroy, sp_OAGetErrorInfo, sp_OAGetProperty, sp_OAMethod, sp_OASetProperty, sp_OAStop, 사용법을 가집니다:
'wscript.shell'SP_OACREATE @shell INT EXEC 선언, @shell EXEC SP_OAMETHOD @shell, 'run', null, 'c:\WINNT\system32\cmd.exe /c net user test 1234 /add'--
이렇게 하면 다른 시스템은 test라는 이름의 사용자와 비밀번호 1234를 가진 사용자를 추가한 후, 다음을 실행합니다:
@shell INT EXEC SP_OACREATE 'wscript.shell'을 선언하고, @shell OUTPUT EXEC SP_OAMETHOD @shell,'run',null, 'c:\WINNT\system32\cmd.exe /c net localgroup administrators tests /add '--
사용자 테스트, 관리자 그룹에 추가됨. 해결책: SA에 사이버 공격자가 해킹하기 어려울 만큼 복잡한 비밀번호를 부여하세요. 안전을 위해 SQLS sp_addextendedproc sp_dropextendedproc erver의 쿼리 분석기에서 저장된 프로시저를 사용해 xp_cmdshell 같은 저장 프로시저를 삭제sp_dropextendedproc 필요 시 sp_addextendedproc 복구를 사용해야 합니다. OLE과 관련된 저장 프로시저를 삭제하면 Enterprise Manager의 일부 기능이 사용 불가능해질 수 있으므로, 저자는 여기서 삭제를 권장하지 않습니다.
이제 SP_OACREATE 사용법을 알게 되었으니, \WINNT \system32로 가서 cmd.exe, net.exe, net1.exe 세 개의 파일을 찾아 "속성" - "보안"에서 접근 가능한 모든 사용자를 삭제할 수 있습니다. 이렇게 하면 시스템 사용자 수를 늘리기 위해 SP_OACREATE을 사용하지 못하고, 필요할 때 접근 사용자를 추가할 수 있습니다.
|