本文选自《内网安全攻防:红队之路》
扫描二维码五折购书
域环境MSSQL枚举
在渗透测试过程,如果我们获取了一个普通域用户权限,或者针对域环境执行假定入侵渗透测试,我们通常需要枚举域环境是否集成了MS SQL数据库,并测试是否存在漏洞或者误配置可以利用进行权限提升。
传统的方法是使用nmap之类的工具扫描开放的1433端口来定位MSSQL数据库服务器,但是一些数据库实例可能配置运行在非默认端口,比如命名的MS SQL实例,此时使用网络扫描工具就无法发现。
当MSSQL使用域用户账户上下文运行时,通常会和一个SPN(Service Principal Name)绑定。SPN存储在活动目录中,并将服务账户与SQL服务及其关联的Windows服务器联系起来。因此,我们可以通过向域控查询和MS SQL相关的SPN,来定位MS SQL实例。
普通域用户可以使用setspn命令查询注册的SPN,-T参数指定域或者林,-Q指定SPN通配符。下面以普通域用dave进行查询:
setspn -T dev.ms08067.cn -Q MSSQLSvc/*
使用setspn枚举SQL实例
从输出可以看到,dev.ms08067.cn域存在两个MS SQL实例,分别运行在dev-dc01和appsrv01主机。
除了使用setspn,我们也可以使用PowerShell脚本GetUsersSPNs.ps1进行枚举,下载地址为https://github.com/nidem/kerberoast/blob/master/GetUserSPNs.ps。该脚本默认会查询根域,我们可以使用GCName参数指定子域。运行脚本,可以看到和setspn输出类似:
. .GetUserSPNs.ps1 -GCName 'DC=dev,DC=ms08067,DC=cn'
使用GetUsersSPN枚举SQL实例
通过上面setspn和GetUsersSPN的输出,我们可以获得域内MS SQL服务器的主机名和TCP端口,以及运行SQL服务的账户等信息。上面例子中,两个SQL实例都是运行在域账户SQLSvc的上下文,且该域账户是服务器本地管理员组成员。
域环境MSSQL认证
在我们通过枚举获得目标SQL服务器的基本信息后,接下来我们学习下MS SQL在集成到域环境时的认证过程。
MS SQL认证分为两个步骤。第一步先执行一个传统的登录,通常为SQL服务器登录或者Windows账户基于的登录。SQL服务器登录在每个单独的数据库服务上使用本地账户登录,比如使用sa登录。Windows认证通过Kerberos进行,允许任何域用户使用TGS(Ticket Granting Service)票据进行认证。
第二步是认证成功后,将登录账户映射到数据库账户。比如,我们使用内置的SQL服务器sa账户登录,将会映射到dbo用户账户。如果我们登录的账户和SQL用户账户没有关联,则会自动映射到guest用户账户。高权限账户如sa,映射到dbo用户时,将会获得sysadmin角色,有权限对SQL服务器进行管理。而映射到guest用户的登录,将获得public角色。
在SQL服务器和活动目录集成时,通常会启用Windows认证。此时我们可以使用Kerberos认证,而无需提供密码。
我们可以使用PowerUpSQL.ps1脚本进行测试,看当前用户对数据库是否有访问权限,以及对应的角色。脚本下载地址为:
https://github.com/NetSPI/PowerUpSQL/blob/master/PowerUpSQL.ps1,
首先导入脚本:
. .PowerUpSQL.ps1
我们也可以使用PowerUpSQL枚举域内存在的SQL server实例:
Get-SQLInstanceDomain
测试可访问性:
Get-SQLInstanceDomain -Verbose | Get-SQLConnectionTestThreaded -Verbose -Threads 10 | Where-Object {$_.Status -like "Accessible"}
使用PowerUpSQL测试数据库可访问性
从输出可以看到当前用户对两个数据库都有访问权限。我们也可以使用Get-SQLServerInfo函数收集单个服务器信息:
Get-SQLServerInfo -Instance dev-dc01.dev.ms08067.cn
使用PowerUpSQL枚举单个服务器信息
可以看到我们当前以域用户DEVdave登录数据库,但不是Sysadmin角色。
上面介绍了域环境MS SQL的枚举和认证过程后,接下来,我们将学习针对MS SQL常用的攻击手段。
— 实验室旗下直播培训课程 —
推荐站内搜索:最好用的开发软件、免费开源系统、渗透测试工具云盘下载、最新渗透测试资料、最新黑客工具下载……
还没有评论,来说两句吧...