Hacking SQL Server 2008 (Kind of…)

Como habrán visto de algo que escribí la semana pasada estoy instalando una nueva máquina de desarrollo y una de las primeras cosas que hay que ponerle es la base de datos,

Problema

Yo utilizo SQL Server Express 2008 R2 with Advance Services porque es gratis, funciona muy bien para prácticamente todo lo que hago y es lo suficientemente ligera como para que la maquina no quede destruida tratando de aparentar ser un servidor. Pues bien, durante la instalación de esta máquina no tuve precaución de habilitar la autenticación mixta, o peor aún de hacer que los administradores de la maquina se convirtieran en administradores de SQL, así que al final del día tenía una maquina corriendo un SQL server al que me podía conectar como un usuario de privilegios restringidos, es decir no podía crear bases de datos, aumentarme los privilegios, cambiar el modo de seguridad, etc.

Solución

Siguiendo estos pasos pude conectarme a la base de datos en modo de usuario único, darle al usuario administrador de mi maquina el rol de sysadmin y recuperar el control de mi base de datos.

Lo primero es detener todos los servicios de SQL

Luego abrir una consola de comandos y conectarse al SQL como un usuario único, que es básicamente utilizar el ejecutable de SQLSrv mas los parámetros –S –E con el nombre de la instancia y el modo de conexión.  Algo como C:Program FilesMicrosoft SQL ServerMSSQL10.SQLEXPRESSMSSQLBinn>sqlservr.exe -s MyInstancia -m

Cuando terminó de ejecutarse el proceso de conexión, abrí otra consola de comandos y me conecté a la base de datos con el modo de comandos (SQLCMD) también pasando el nombre de la instancia.  (C:>SQLCMD -S MyServerMyInstance –E)

Finalmente ejecuté el procedimiento almacenado  sp_addsrvrolemember  y le di permisos a mi usuario de la máquina de convertirse en administrador de SQL  exec sp_addsrvrolemember @loginame=’MyDomainMyUser’,@rolename=’sysadmin’.

Detuvé todo con un comando Shutdown y reinicié desde la consola de servicios.  Listo, ahora mi usuario de la maquina es administrador de SQL y puedo crear bases de datos, cambiar el modo de autenticación o crear otros usuarios administradores.

Hackeado?

Como lo que hice aquí fue básicamente tomar un usuario que solo es administrador de su máquina y elevar sus privilegios para que fuera administrador de SQL pues se ha configurado un ataque de elevación de privilegios que deja a un usuario con acceso a todas las bases de datos de un sistema dado en pocos minutos. Como contrarrestar esto? Yo creo que lo más importante es insistir en que los usuarios tenga cuentas de usuarios y que no sean administradores de las maquinas locales, esta es la principal vulnerabilidad de toda la plataforma Microsoft en términos de algunas personas que saben bastante de seguridad.

Referencia: http://blogs.ameriteach.com/chris-randall/2009/12/11/sql-server-2008-forgot-to-add-an-administrator-account.html

 

One reply on “Hacking SQL Server 2008 (Kind of…)”

Comments are closed.