APPRENTICE
Last updated
Last updated
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.
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
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.
Abrimos BurpSuite
Encendemos el FoxyProxy
Activamos el intercept y 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
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.
Cómo podéis ver en la imagen ahora con los + que son espacios, ya hemos solucionado el laboratorio.
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:
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.
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.
Podemos realizar los mismos tests que hicimos en el anterior laboratorio
Ponemos admin" o admin' o # --
Directamente vamos a hacer los tests en burpsuite -->
Abrimos BurpSuite
Encendemos el FoxyProxy
Activamos el intercept y el FoxyProxy
Enviamos la petición dándole a Login
Una vez capturado, lo mandamos al repeater con Ctrl + R
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"
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.
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.