top of page
Buscar

DVWA. SQL Injection.

  • manuelbgomar
  • 4 may 2016
  • 3 Min. de lectura

Primera entrada de este blog de seguridad informática en el cual veremos DVWA (Damn Vulnerable Web App), una buena herramienta que nos permitirá entender diferentes ataques web sin correr riesgos. Haremos el ataque conocido como SQL Injection.

SQL injection es un tipo de ataque a una base de datos en el cual, por la mala filtración de las variables se puede inyectar un código creado por el atacante al propio código fuente de la base de datos.

Para empezar nos bajaremos la iso de metasploitable, una iso de fácil instalación que nos permitirá arrancar el DVWA, entre otras opciones.

https://sourceforge.net/projects/metasploitable/files/Metasploitable2/

Lo instalaremos en una máquina virtual y accederemos por web:

le damos a DVWA y nos pedirá claves de acceso:

Usuario: admin

Password: password

Lo primero que haremos es bajar el nivel de la plataforma. Nos vamos a la opción "DVWA Security" y pondremos la opción "low" (bajo) y le damos a submit.

Pasemos al ataque, nos vamos a la pestaña SQL Injection:

Una buena prueba para saber si una página web es vulnerables a ataques SQL injection es buscar un número en la url la cual pondremos un apostrofe ( ' ) y comprobamos que genera un error SQL

http://192.168.119.134/dvwa/vulnerabilities/sqli/?id='q&Submit=Submit#

Visto que la página es vulnerable a SQL vamos a pasar a investigarla, de momento vemos que podemos buscar usuarios a través de su ID.

Podríamos seguir con el ID 2, ID 3, así hasta que se acaben. Como las bbdd puede ser de grandes usuarios, y sabemos que es vulnerable a SQL utilizamos la sentencias para intentar sacar todos los usuarios.

1 ' OR 1=1--'

La sentencia que se envia es:

SELECT first_name, last_name FROM users WHERE user_id = '1' OR 1=1--'

y se cumple la condición de que 1 = 1, con lo cual siempre se va a mostrar lo solicitado. Para conocer más sobre los ataques de este tipo, es recomendable conocer el lenguaje de programación SQL ya que nos permitirá conocer más.

Por ejemplo:

' union all select 1,@@datadir-- '

Nos mostrará la ruta donde este alojado el servidor.

Ahora vamos a cambiar la seguridad a nivel Medium y vemos el código fuente.

Vemos que ID es filtrado con la función mysql_real_scape_string() con lo cual la opción de caracteres raros no son permitidos, si lo probamos 1' OR 1=1--' nos dará error.

pero... ¿ y si probamos sin ' ?

Vemos que si que nos sigue sacando todos los usuarios de la bbdd, con lo cual podremos seguir usando consultas SQL, esta vez sin ' o caracteres. Por ejemplo, sacar las contraseñas de usuarios, sabiendo de ante mano que la contraseña se almacena en la tabla "password"

1 UNION ALL SELECT first_name, password from dvwa.users;

Vemos que en Surname se muestra la password, esto es debido a que la si revisamos el código lo que debería mostrar es el apellido, pero en la sentencia hemos puesto que sacara la password. Vemos que nos da un número largo, quizás impensable que alguien se acuerde esta contraseña, esto es debido a que se almacenan las contraseñas encriptadas, en este caso MD5. Nos podemos ir a cualquier página donde se pueda desfricar un md5, por ejemplo: http://www.md5online.es/

y pegaremos el hash y nos dará la contraseña real:

Conclusión

SQL Injection es una de las más peligrosas vulnerabilidades, ya que pone en riesgo la privacidad de usuarios en bases de datos.

Si volvemos a configurar la seguridad del DVWA a high veremos en el código fuente como se añaden diferentes funciones PHP para el filtrado de datos.

Para acabar os dejo el articulo de "magic quotes php" y como corregirlo.

http://php.net/manual/es/security.magicquotes.what.php

Saludos !


 
 
 

Comments


bottom of page