导出Active Directory域信息的新姿势

栏目: 数据库 · SQL Server · 发布时间: 6年前

内容简介:本博文介绍了如何使用SQL Server中的T-SQL下面的T-SQL显示了ADSI提供程序是如何与OPENQUERY和OPENROWSET一起使用来查询Active Directory信息的。首先,需要为ADSI提供程序创建SQL Server链接。示例中创建了名为“ADSI”的链接。

本博文介绍了如何使用SQL Server中的 OLE DB ADSI提供程序 查询获取Active Directory的域信息。在本文中,我还将分享许多新的PowerUpSQL函数,这些函数可用于通过SQL Server自动执行常见的AD信息侦测活动。希望这对Red teamers,渗透测试人员以及数据库爱好者有用。感谢 Scott Sutherland _nullbind )在AD信息侦测功能和PowerUpSQL上所做的工作!

T-SQL

下面的T-SQL显示了ADSI提供程序是如何与OPENQUERY和OPENROWSET一起使用来查询Active Directory信息的。首先,需要为ADSI提供程序创建SQL Server链接。示例中创建了名为“ADSI”的链接。

-- Create SQL Server link to ADSI
IF (SELECT count(*) FROM master..sysservers WHERE srvname = 'ADSI') = 0
EXEC master.dbo.sp_addlinkedserver @server = N'ADSI',
@srvproduct=N'Active Directory Service Interfaces',
@provider=N'ADSDSOObject',
@datasrc=N'adsdatasource'
ELSE
SELECT 'The target SQL Server link already exists.'

导出Active Directory域信息的新姿势

如果使用OPENQUERY,请将链接与当前身份验证上下文相关联。也可以在此处指定用户名和密码。然后运行示例查询。

注意:LDAP“路径”应设置为目标域。

-- Define authentication context - OpenQuery
EXEC sp_addlinkedsrvlogin
@rmtsrvname=N'ADSI',
@useself=N'True',
@locallogin=NULL,
@rmtuser=NULL,
@rmtpassword=NULL
GO
-- Use openquery
SELECT *
FROM OPENQUERY([ADSI],'<LDAP://path>;(&(objectCategory=Person)(objectClass=user));name, adspath;subtree')

导出Active Directory域信息的新姿势

如果使用OPENROWSET,则启用点对点查询。然后使用指定的用户名和密码或默认身份验证运行示例查询。

注意:LDAP“路径”应设置为目标域。

-- Enable 'Show Advanced Options'
EXEC sp_configure 'Show Advanced Options', 1
RECONFIGURE
GO
-- Enable 'Ad Hoc Distributed Queries'
EXEC sp_configure 'Ad Hoc Distributed Queries', 1
RECONFIGURE
GO
-- Run with openrowset
SELECT *
FROM OPENROWSET('ADSDSOOBJECT','adsdatasource',
'<LDAP://path>;(&(objectCategory=Person)(objectClass=user));name, adspath;subtree')

加载 PowerUpSQL

PowerUpSQL 可以在PowerShell中以不同的方式加载。下面是一个基本示例,该示例说明了如何从GitHub下载和导入模块。

IEX(New-Object System.Net.WebClient).DownloadString("https://raw.githubusercontent.com/NetSPI/PowerUpSQL/master/PowerUpSQL.ps1")

新添加的 Active Directory Recon 功能

现在你已加载了PowerUpSQL,你可以使用新命令对域执行查询。但请注意,所有命令都需要sysadmin权限。

导出Active Directory域信息的新姿势

导出域用户示例

此示例将展示如何通过OPENQUERY使用链接服务器收集域中已启用的域用户。

Get-SQLDomainUser -Instance MSSQLSRV04\SQLSERVER2014 -Verbose -UserState Enabled

或者,可以通过OPENROWSET使用点对点查询运行该命令,如下所示。这个命令没什么特殊的,但该命令确实提供了一些选项来避免攻击检测,如果DBA正在审核链接服务器创建,而不是在审核目标环境中的点对点查询,那么就可以使用这种方式来获取域用户信息。

Get-SQLDomainUser -Instance MSSQLSRV04\SQLSERVER2014 -Verbose -UserState Enabled -UseAdHoc

这些函数还支持登录对SQL Server进行身份验证的备用SQL Server服务器,以及用于配置服务器链接的备用Windows凭据。可以在 此处 找到更多的命令示例。

身份验证和授权矩阵

根据当前用户的安全上下文或提供的凭据,用户可能没有权限访问查询AD来获取域信息。下表说明了 SQL 用户权限和相应的访问权限。

Scott Sutherland(@_nullbind)制作的OPENQUERY(链接服务器)权限认证表

导出Active Directory域信息的新姿势

Scott Sutherland(@_nullbind)制作的OPENROWSET(Ad Hoc点对点查询)权限认证表

导出Active Directory域信息的新姿势

结论

信息侦查是评估Active Directory域环境安全性的重要且首要的一步。感谢Will Schroeder ( @harmj0y )和其他人在 Powerview 中所做的一些出色工作。希望这些AD信息侦查功能能够提供另一种方式来实现同样的目的。有关新添加的AD信息侦查功能的更多信息,请查看 PowerUpSQL wiki


以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

一站式学习C编程

一站式学习C编程

宋劲杉 / 电子工业出版社 / 2011-3 / 59.00元

《一站式学习c编程》有两条线索,一条线索是以linux平台为载体全面深入地介绍c语言的语法和程序的工作原理,另一条线索是介绍程序设计的基本思想和开发调试方法。本书分为两部分:第一部分讲解编程语言和程序设计的基本思想方法,让读者从概念上认识c语言;第二部分结合操作系统和体系结构的知识讲解程序的工作原理,让读者从本质上认识c语言。 《一站式学习c编程》适合做零基础的初学者学习c语言的第一本教材,......一起来看看 《一站式学习C编程》 这本书的介绍吧!

HTML 压缩/解压工具
HTML 压缩/解压工具

在线压缩/解压 HTML 代码

RGB HSV 转换
RGB HSV 转换

RGB HSV 互转工具

HSV CMYK 转换工具
HSV CMYK 转换工具

HSV CMYK互换工具