🔬 Laboratorios de SQL Injection (1ª parte)

Aquí empieza nuestra ruta hacia la certificación BSCP, y qué mejor forma de hacerlo que en el orden que aparecen los laboratorios en la página web de Portswigger Academy.

Es por ello que comenzaré con los primeros laboratorios de SQL Injection. Espero que os sean sencillos de seguir y si tenéis cualquier duda al respecto, no dudéis en preguntarme por aquí o por redes sociales, estaré encantado de atenderos.

Laboratorio 1: Vulnerabilidad SQLi en la cláusula WHERE permitiendo la recuperación de datos ocultos.

Este laboratorio contiene una vulnerabilidad de SQL Injection en el filtro de categorías de productos. Cuando el usuario selecciona una categoría, la aplicación lleva a cabo una consulta SQL como esta:

SELECT * FROM products WHERE category = 'Gifts' AND released = 1

Para resolver el laboratorio, realiza un ataque de SQL Injection que provoque que la aplicación muestre uno o más productos no publicados.

Solución:

Usa Burp Suite para interceptar y modificar la petición que fija el filtro de la categoría de productos.

Modifica el parámetro category dándole el valor '+OR+1=1--

Envía la petición y verifica que la respuesta contiene ahora uno o más productos no publicados.

Laboratorio 2: Vulnerabilidad SQLi que permite el bypass del login.

Este laboratorio contiene una vulnerabilidad SQL Injection en la función de login.

Para resolverlo, realiza un ataque de inyección SQL que permita hacer login en la aplicación como usuario administrator.

Solución:

Usa Burp Suite para interceptar y modificar la petición de login.

Modifica el parámetro username, dándole el valor: administrator'--

Laboratorio 3:Ataque SQLi, solicitando el tipo de base de datos y la versión en Oracle.

Este laboratorio contiene una vulnerabilidad SQL Injection en el filtro de categorías de productos. Puedes realizar un ataque UNION para recuperar los resultados desde una consulta inyectada.

Para resolver el laboratorio, muestra la cadena con la versión de la base de datos.

Pista:

En las bases de datos Oracle, cada sentencia SELECT debe especificar una tabla desde la que seleccionar FROM. Si tu ataque UNION SELECT no consulta una tabla, seguirás necesitando incluir la palabra clave FROM seguida de un nombre de tabla válido.

Hay una tabla nativa en Oracle llamada dual que puedes usar para este propósito. Por ejemplo: UNION SELECT ‘abc’ FROM dual.

Solución:

Utiliza Burp Suite para interceptar y modificar la petición que fija el filtro de categoría de productos.

Determina el número de columnas que se devuelven de la consulta y qué columnas contienen datos de texto. Verifica que la consulta está devolviendo dos columnas, y que ambas contienen texto, usando un payload como el siguiente en el parámetro category:

'+UNION+SELECT+'abc','def'+FROM+dual--

Usa el siguiente payload para mostrar la versión de la base de datos:

'+UNION+SELECT+BANNER,+NULL+FROM+v$version--

Laboratorio 4: Ataque SQLi, solicitando el tipo de base de datos y versión en MySQL y Microsoft.

Este laboratorio contiene una vulnerabilidad SQL Injection en el filtro de categorías de productos. Puedes usar un ataque UNION para recuperar los resultados desde una consulta inyectada.

Para resolverlo, muestra la cadena de texto con la versión de la base de datos.

Solución:

Usa Burp Suite para interceptar y modificar la petición que fija el filtro de categorías de productos.

Determina el número de columnas que se devuelven por parte de la consulta y qué columnas contienen datos de texto. Verifica que la consulta devuelve dos columnas, ambas con texto, usando un payload como el siguiente en el parámetro category:

'+UNION+SELECT+'abc','def'#

Usa el siguiente payload para mostrar la versión de la base de datos:

'+UNION+SELECT+@@version,+NULL#

Laboratorio 5: Ataque SQLi, listando el contenido de la base de datos en bases de datos no Oracle

Este laboratorio contiene una vulnerabilidad SQL Injection en el filtro de categorías de productos. El resultado de la consulta se devuelve en la respuesta de la aplicación, por lo que puedes usar un ataque UNION para recuperar datos de otras tablas.

La aplicación tiene una función de login, y la base de datos contiene una tabla que aloja los nombres de usuario y contraseñas. Has de determinar el nombre de esta tabla y las columnas que contiene, y después recuperar el contenido de la tabla para obtener el nombre de usuario y la contraseña de todos los usuarios.

Para resolver el laboratorio, haz login como usuario administrator.

Solución:

Usa Burp Suite para interceptar y modificar la petición que fija el filtro de categorías de productos.

Determina el número de columnas que se devuelven por parte de la consulta y qué columnas contienen datos de texto. Verifica que la consulta devuelve dos columnas, y que ambas contienen texto, usando un payload como el siguiente en el parámetro category:

'+UNION+SELECT+'abc','def'--

Usa el siguiente payload para recuperar la lista de tablas en la base de datos:

'+UNION+SELECT+table_name,+NULL+FROM+information_schema.tables--

Encuentra el nombre de la tabla que contiene las credenciales de los usuarios.

Usa el siguiente payload (cambiando el nombre de la tabla) para recuperar los detalles de las columnas en esa tabla:

'+UNION+SELECT+column_name,+NULL+FROM+information_schema.columns+WHERE+table_name='users_abcdef'--

Encuentra los nombres de las columnas que contienen los nombres de usuario y las contraseñas.

Usa el siguiente payload (cambiando el nombre de la tabla y las columnas) para recuperar los nombres de usuario y las contraseñas de todos los usuarios:

'+UNION+SELECT+username_abcdef,+password_abcdef+FROM+users_abcdef--

Encuentra la contraseña para el usuario administrator, y úsala para hacer login.

Laboratorio 6: Ataque SQLi, listando el contenido de la base de datos en Oracle

Este laboratorio contiene una vulnerabilidad SQL Injection en el filtro de categorías de productos. El resultado de la consulta se devuelve en la respuesta de la aplicación, por lo que puedes usar un ataque UNION para recuperar datos de otras tablas.

La aplicación tiene una función de login, y la base de datos contiene una tabla que aloja los nombres de usuario y contraseñas. Has de determinar el nombre de esta tabla y las columnas que contiene, y después recuperar el contenido de la tabla para obtener el nombre de usuario y la contraseña de todos los usuarios.

Para resolver el laboratorio, haz login como el usuario administrator.

Solución:

Usa Burp Suite para interceptar y modificar la petición que fija el filtro de categorías de productos.

Determina el número de columnas que se devuelven en la consulta y qué columnas tienen datos de tipo texto. Verifica que la consulta devuelve dos columnas y ambas contienen texto, usando un payload como el siguiente en el parámetro category:

'+UNION+SELECT+'abc','def'+FROM+dual--

Usa el siguiente payload para recuperar la lista de tablas en la base de datos:

'+UNION+SELECT+table_name,NULL+FROM+all_tables--

Encuentra el nombre de la tabla que contiene las credenciales de usuario.

Usa el siguiente payload (cambiando el nombre de la tabla) para recuperar los detalles de las columnas en la tabla:

'+UNION+SELECT+column_name,NULL+FROM+all_tab_columns+WHERE+table_name='USERS_ABCDEF'--

Encuentra los nombres de las columnas que contienen los nombres de usuario y las contraseñas.

Usa el siguiente payload (cambiando los nombres de columnas) para recuperar los nombres de usuario y contraseñas de todos los usuarios:

'+UNION+SELECT+USERNAME_ABCDEF,+PASSWORD_ABCDEF+FROM+USERS_ABCDEF--

Encuentra la contraseña para el usuario administrator y haz login con esa cuenta.


Y hasta aquí llega la primera parte de los laboratorios de SQLi de Portswigger Academy. Dentro de poco tendré listos los siguientes. Hasta entonces, espero que os haya picado el gusanillo y queráis aprender más sobre las vulnerabilidades web y el uso de Burp Suite.

1 comentario en «🔬 Laboratorios de SQL Injection (1ª parte)»

Deja un comentario

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.

Ads Blocker Image Powered by Code Help Pro

¡¡¡Ads Blocker Detectado!!!

Hemos detectado que usas extensiones para bloquear anuncios. Por favor, si te interesa el contenido, no bloquees los anuncios, que son lo que nos ayuda a poder publicar más contenido como este 😊