Page cover image

APPRENTICE

Lab 1 - SQL injection vulnerability in WHERE clause allowing retrieval of hidden data

Link al laboratorio

This lab contains a SQL injection vulnerability in the product category filter. When the user selects a category, the application carries out a SQL query like the following:

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

To solve the lab, perform a SQL injection attack that causes the application to display one or more unreleased products.

Solución

Una vez le damos "ACCESS THE LAB" nos aparece lo siguiente:

Como pone en el enunciado, cuando le damos a Gifts por detrás selecciona todo de la tabla products donde la categoría es "Gifts".

Le damos a Gift

Categoría Gifts

Como vemos en la imagen de arriba, en la URL sale en formato GET la categoría escogida, que en este caso es Gifts.

Para comprobar si hay una SQL Injection hay diferentes maneras, a continuación mostraré varios tests:

  • Añadiendo una ' o "

    • category=gifts' | category=gifts"

  • O por ejemplo una # o --.

Pero la opción más común es la siguiente string --> "OR 1=1 -- -

Para que quede claro estamos enviando una query que hace que la expresión siempre es verdadera, después con el -- - para asegurarnos que el resto de la cadena no se interprete como SQL.

No aparece nada, a veces puede pasar que los espacios no los detecta, para ello podríamos seguir trabajando desde el navegador pero vamos a seguir con este procedimiento con BurpSuite, capturando la petición y modificando la en el repeater.

  1. Abrimos BurpSuite

  2. Encendemos el FoxyProxy

Activamos el intercept y el FoxyProxy

Intercept is on
Activamos el FoxyProxy

Una vez interceptado lo mandamos al Repeater con Ctrl + R

Como veis arriba esta URL Encodeado, para trabajar más cómodo para ver la query mejor seleccionamos el texto y le damos a Ctrl + Mayus + U

URL Encoded

Una vez ejecutado volveremos a tener de nuevo la query normal

Entonces, como hemos visto antes no funciono, eso a veces pasa por que no detecta los espacios, vamos a probar de nuevo la query ' OR 1=1 -- - con el símbolo + donde estarían los espacios.

Query --> 'OR+1=1+--+-

Cómo podéis ver en la imagen ahora con los + que son espacios, ya hemos solucionado el laboratorio.

Lab solucionado

Ahora queda explicar bien cómo quedaría por detrás con un gráfico de las querys por detrás y cómo quedaría la tal query tras la inyección:

Lab 2 - SQL injection vulnerability allowing login bypass

Link al laboratorio

This lab contains a SQL injection vulnerability in the login function.

To solve the lab, perform a SQL injection attack that logs in to the application as the administrator user.

Primera solución

Una vez accedemos al laboratorio, nos aparece lo mismo que en el lab anterior, la página que es una tienda de comprar varios tipos de productos, como podemos leer en el enunciado para poder resolver este laboratorio tenemos que realizar una inyección SQL en la aplicación que nos inicie sesión como Administrador.

Pues como queremos loguearnos como admin, procedemos a ir a My Account que está arriba a la derecha de la página principal.

Nos aparece un inició de sesión en el cuál tenemos que abusar.

Login

Podemos realizar los mismos tests que hicimos en el anterior laboratorio

  • Ponemos admin" o admin' o # --

Directamente vamos a hacer los tests en burpsuite -->

  1. Abrimos BurpSuite

  2. Encendemos el FoxyProxy

Activamos el intercept y el FoxyProxy

Intercept on
Foxy Proxy activado

Enviamos la petición dándole a Login

Una vez capturado, lo mandamos al repeater con Ctrl + R

Repeater request

Vale ahora para trabajar más cómodo selecionamos el admin%22 que está URL Encodeado para ponerlo en formato texto normal con el Ctrl + Mayus +U

Si cogemos la actual query y la mandamos nos pone "Invalid username or password"

Invalid username or password con la query admin"

Ahora probamos el test más básico que es enviarle una inyección SQL que es el que hemos utilizado en anterioridad --> " OR 1=1 --

Le vamos a añadir signos de suma por si acaso no detectase los espacios y evitarnos problemas

Cómo podéis ver en la imagen de arriba, no me sale un código OK 200 sino que el 302 que es el que te redirige a otra página y al parecer está funcionado la inyección y nos está redirigiendo al usuario administrator.

Logueados como root

Segunda solución

La primera solución está bien y funciona, pero no es la que el propio laboratorio quiere que hagas ya que es como en el primer laboratorio, pero yo lo hice así porque básicamente es el test más básico y funciono.

Pero la gracia de este login bypass es que vamos a estar abusando de que ponemos el usuario administrator y comentaremos el resto con -- ignorando por completo la contraseña y logueando directamente ya que el usuario es válido.

Logueado como administrator

Last updated