Scavalcare l’autenticazione di MS SQL Server

Come altri articoli riguardanti la sicurezza informatica, anche questo può essere interpretato sia come documentazione di un fatto sia come spiegazione di come si può agire in maniera illegale.

Ovviamente l’intento non è di promuovere o incitare alcun comportamento contro la legge, ma di avvertire gli amministratori di sistema di un comportamento del software che hanno installato sulle loro macchine.

Un secondo e, forse, più comune utilizzo di questa procedura è accedere ai propri dati registrati da un applicativo i cui gestori o installatori non sono più disponibili o che rifiutano di dare accesso ai dati di proprietà dell’utente.

Come molti database, anche Microsoft SQL Server ha un sistema per bypassare la sicurezza inegrata.

Innanzi tutto bisogna procurarsi PSEXEC.EXE, un programma della Sysinternals Suite di Mark Russinovich pensato per eseguire un programma su un altro computer, ma che torna utile anche in questo contesto.

Ecco, quindi, la procedura per aprire SQL Server con privilegi amministrativi senza conoscere la password di sa o di un utente con privilegi analoghi.

  1. Copiare PSESEC.EXE nel server dove risiede SQL
  2. Eseguire CMD.EXE come Administrator
  3. Eseguire psexec -s -I "C:\Programmi (x86)\Microsoft SQL Server\100\Tools\Binn\VSShell\Common7\IDE\Ssms.exe"

Questo dovrebbe essere il risultato:

Il path di SSMS.EXE potrebbe variare a seconda della versione installata e del tipo di installazione.

In questo caso il trucco sta nell’eseguire l’utility di amministrazione con l’utente NT-AUTHORITY\SYSTEM, che ha sempre privilegi amministrativi su SQL Server.

Questo trucco non funziona con le vecchie versioni di SQL Server che sono state installate in modo tale da utilizzare solamente la sicurezza interna di SQL Server. Questa opzione non è più disponibile sulle nuove versioni che ammettono solamente la sicurezza integrata di Windows oppure un misto tra la sicurezza di Windows e quella integrata di SQL server. (via Infosec Island)

Autore: Luigi Rosa

Consulente IT, sviluppatore, SysAdmin, cazzaro, e, ovviamente, geek.

3 pensieri riguardo “Scavalcare l’autenticazione di MS SQL Server”

  1. Non capisco quale sia il punto: per poter lanciare processi come LocalSystem (risultato di psexec -s), devi essere già Administrator della macchina e LocalSystem è l’equivalente di root. Se si vuole proteggere un database in modo che gli amministratori non possano accedervi è necessario utilizzare la crittografia dove un chiave risieda su un dispositivo diverso.

    1. Innanzi tutto contestualizziamo la cosa in Italia, dove un sacco di fornitori installano SQL per i gestionali in mixed mode, tolgono i privilegi di DOMINIO\Administrator al database e chiedono soldi per la conversione dei dati di proprieta’ dell’azienda o per elaborarli.

      Altra premessa: l’accesso fisico alla macchina e’ l’accesso ‘root’. Questo e’ un assunto inconfutabile della sicurezza informatica (se n’e’ accorto pure chi ha redatto il famoso allegato B alla prima legge sulla privacy)

      Questo trucco permette di rientrare in possesso con poco sforzo dei propri dati anche se un fornitore esterno non e’ piu’ reperibile o e’… poco collaborativo.

      Da ultimo: l’articolo vuole anche illustrare come si fa in MS SQL quello che (ad esempio) in MySQL si fa con –skip-grant-tables

  2. Così è più chiaro: è un suggerimento rivolto ai DBA-per-caso più che agli esperti Windows o SQL Server… e in ogni caso non è un “buco di sicurezza” come si poteva equivocare dal titolo.

Spazio per un commento