Skip to content

Utility Functions

Scott Sutherland edited this page Oct 23, 2017 · 14 revisions

These are essentially helper functions. Some of them are used by other PowerUpSQL functions, but all of them can be run independently.

Function NameDescription
Get-SQLConnectionObjectCreates a object for connecting to SQL Server.
Get-SQLFuzzObjectNameEnumerates objects based on object id using OBJECT_NAME() and only the Public role.
Get-SQLFuzzDatabaseNameEnumerates databases based on database id using DB_NAME() and only the Public role.
Get-SQLFuzzServerLoginEnumerates SQL Server Logins based on login id using SUSER_NAME() and only the Public role.
Get-SQLFuzzDomainAccountEnumerates domain groups, computer accounts, and user accounts based on domain RID using SUSER_SNAME() and only the Public role. Note: In a typical domain 10000 or more is recommended for the EndId.
Get-ComputerNameFromInstanceParses computer name from a provided instance.
Get-SQLServiceLocalReturns local SQL Server services.
Create-SQLFileXpDllUsed to create CPP DLLs with exported functions that can be imported as extended stored procedures in SQL Server. Supports arbitrary command execution.
Get-DomainSpnReturns a list of SPNs for the target domain. Supports authentication from non domain systems.
Get-DomainObjectUsed to query domain controllers via LDAP. Supports alternative credentials from non-domain system.
Get-SQLStoredProcedureSQLiReturns stored procedures using dynamic SQL and the "WITH EXECUTE AS OWNER" clause. If the stored procedure is vulnerable to SQLi it may be possible to impersonate the procedure owner.
Get-SQLServerLoginDefaultPwBased on the instance name, test if SQL Server is configured with default passwords.
Create-SQLFileXpDllUsed to generate DLLs that can be imported to create a custom stored procedure that executes OS commands
Create-SQLFileCLRDllUsed to generate DLLs that can be imported to create a CLR stored procedure that executes OS commands. It also generates a file containing TSQL code for creating the procedure without the DLL.
Get-SQLAssemblyFileReturns imported assembly file information for each database. It can also be used to export existing CLR assembly file imports back to a DLL file.
Get-SQLDomainUserUse OLE DB ADSI connections to grab a list of domain users via SQL Server links (OpenQuery) and adhoc queries (OpenRowSet).
Get-SQLDomainObjectUse OLE DB ADSI connections to grab a list of domain objects via SQL Server links (OpenQuery) and adhoc queries (OpenRowSet).

Examples:

Get-SQLFuzzServerLogin -Verbose -Instance "SQLSVR1\Instance1"
Get-SQLAssemblyFile -Verbose -Instance SQLServer1\Instance1 -ExportFolder c:\temp

Roadmap:

Get-SQLFuzzDatabase
Get-SQLFuzzSchema
Get-SQLDatabaseOrphanUser Get-SQLDatabaseUser - add fuzzing option
Get-SQLStoredProcedureEncrypted Get-SQLDecryptedStoreProcedure Get-SQLDownloadFile Get-SQLDownloadFileAdHocQuery Get-SQLDownloadFileAssembly Get-SQLDownloadFileBulkInsert Get-SQLDownloadFileServerLine Get-SQLDownloadFileXpCmdshell Get-SQLInstalledSoftware Get-SQLServerLogin - add fuzzing option Get-SQLUploadFile Get-SQLUploadFileAdHocQuery Get-SQLUploadFileAgent Get-SQLUploadFileAssembly Get-SQLUploadFileServerLink Get-SQLUploadFileXpCmdshell Invoke-SqlOSCmdServerLinkMd Invoke-SqlOSCmdAdHoQueryMd Invoke-SqlOSCmdAgentAnalysis Invoke-SqlOSCmdAgentOther Invoke-SqlOSCmdAgentSsisExecuteProcessTask Enable-FullRegRead
Disable-FullRegRead

Introduction

Cheat Sheets

PowerUpSQL Blogs

PowerUpSQL Talks

PowerUpSQL Videos

Function Categories

Related Projects

Recommended Content

Clone this wiki locally