Unidad 2- Tarea 2 SQL Injection

  • Entrada a la máquina virtual y obtención de la IP por el DHCP para el acceso al entorno gráfico en el navegador web.

U2T2SQLI1

  • Acceso a través del navegador.

U2T2SQLI2

  • Estableciendo el nivel de dificultad para explotar vulnerabilidades.

U2T2SQLI3

  • Elegir el método de trabajo para la búsqueda de vulnerabilidades

U2T2SQLI4

cabe destacar que en la práctica tuve un pequeño error y elegí SQL Injection (Blind), lo único que sucede es que este método no devuelve ningún error en la consulta, esto no quiere decir  que la vulnerabilidad no exista. De modo que no lo hace muy diferente, ya que si la consulta esta bien establecida se obtiene la información deseada.

  • Inyección básica, en este paso insertamos 1 en el cuadro de texto para generar la consulta en la base de datos, la cual, nos arrojará información acerca de los usuarios que estén en la base de datos y cuenten con el ID = 1. EL equivalente en código SQL para su consulta sería:

$getid = «SELECT first_name, last_name FROM users WHERE user_id = ‘$id'»;

U2T2SQLI5

  • Ahora, se introducirá en el cuadro de texto el siguiente comando: %’ or ‘0’=’0 , el cual pide que nos muestre todos los registros que son falsos y los que son verdaderos. Su equivalencia en SQL es la siguiente:

SELECT first_name, last_name FROM users WHERE user_id = ‘%’ or ‘0’=’0′;

U2T2SQLI6

  • En este punto se pondrá el siguiente comando en el cuadro de texto: %’ or 0=0 union select null, version() #, el cual se escribe de la misma manera en SQL. Dicho comando nos mostrará la versión con la que se trabaja la base de datos.

U2T2SQLI7

  • El siguiente comando nos mostrará el usuario que trabaja con la base de datos, el que se encarga de ejecutar todo el código: %’ or 0=0 union select null, user() #

U2T2SQLI8

  • Este comando nos va a dar a conocer el nombre que tiene la base de datos que nos encontramos analizando: %’ or 0=0 union select null, database() #

U2T2SQLI9

  • El siguiente comando:  %’ and 1=0 union select null, table_name from information_schema.tables # que va a colocarse en el cuadro de texto nos permite obtener la información sobre el esquema de tablas que maneja la base de datos.

U2T2SQLI10

como se observa en la imagen, con el simple hecho de leer el nombre de la tabla es posible adivinar el contenido de la información de la misma. Información que puede ser bastante útil para un intruso.

  •  A través del siguiente comando será posible obtener información sobre las tablas que cuenten e inicien con el campo que utiliza el prefijo «users» : %’ and 1=0 union select null, table_name from information_schema.tables where table_name like ‘user%’# 

U2T2SQLI11

  • Ahora, al introducir este comando: %’ and 1=0 union select null, concat(table_name,0x0a,column_name) from information_schema.columns where table_name = ‘users’ # en el cuadro de texto, obtendremos la información sobre todos los campos de las columnas con las que cuenta la tabla «users»

U2T2SQLI12

es posible observar a través de la imagen que este comando nos permitió saber que la tabla cuenta con las siguientes columnas: user_id, first_name, last_name, user, password. Ésta última la más importante para cualquiera que intente acceder a la base de datos y obtener información significativa de la misma, puesto que una vez conociendo las contraseñas de los usuarios podrá acceder con cualquier cuenta de usuario y realizar manipulaciones autenticándose como cualquiera de los mismos.

  • Finalmente, con este comando se pretende conocer todos los contenidos de las columnas en la tabla «users», para obtener dicha información debe introducirse el siguiente comando en el cuadro de texto: %’ and 1=0 union select null, concat(first_name,0x0a,last_name,0x0a,user,0x0a,password) from users #

U2T2SQLI13

como se puede observar, en esta fase ya se logró obtener toda la información acerca de todos los usuarios, incluyendo sus contraseñas. Lo cual permite tener un control total sobre los mismos.

Deja un comentario