SQL (Structured Query Language) es un lenguaje diseñado para administrar bases de datos.
Cuando nos logueamos en una aplicación web, en general, interactuamos con un servidor que alberga la base de datos SQL, donde se almacena nuestra información.
Tenemos aquí la página principal de Juice Shop, una aplicación web para practicar pentesting.
Disponemos aquí de un inicio de sesión. Como cualquiera de ellos, podemos insertar un mail y una contraseña.
Esto nos da la pauta de que podría existir la inyección de código. Recordemos que, al ingresar usuario y contraseña, estamos interactuando con una base de datos SQL.
Podriamos inyectar código directamente sin utilizar un interceptor. Pero en este caso, y para más control, vamos a utilizar Burp Suite.
Lo colocamos en modo intercepción.
Colocamos cualquier cosa. Basta con interceptar la comunicación para luego alterarla.
Aquí vemos el informe de Burp sobre la solicitud de login.
Allí debajo podemos alterarlo para enviar una solicitud a la base SQL.
En la contraseña no vamos a colocar nada. Pero en el mail haremos una petición SQL. En este caso:
' or 1=1--
¿Que significa esto y por qué funciona?
El ' va a cerrar los brackets de la query al SQL.
"or" en una SQL retornara True si al menos uno de los dos estamentos a comparar es verdadero.
1=1 siempre es verdadero, por lo tanto la salida será true.
Esto hará que nos loguee con el id=0 ya que saltea el paso del email.
Por otro lado el "--" es un signo que dice que todo lo que restá de la query es un comentario (Similar al # en Python o Java)
El logueo se salta.
Estamos adentro, en este caso en la cuenta del administrador.
Similar a lo que hicimos antes, vamos a colocar un mail con el agregado de:
'--
Como dijimos:
El ' cierra los brackets de la Query.
El -- saltea todo lo que sigue porque  lo establece como comentario.
Nuevamente, estamos dentro.
Es importante la correcta sanitización de las querys que se envian, no solo a servicios SQL sinó a cualquier servicio de un servidor.
NOTA: Todas estas pruebas fueron realizado en la página TryHackMe, un sitio que ofrece entornos controlados para practicar pentesting.. 
Estos procedimientos no deben realizarse a equipos ajenos sin una previa autorización.

You may also like

Back to Top