nosql-injection

Tests NoSQL backends for operator injection, authentication bypass, and blind data extraction.

Updated Jun 5, 2026
One-click install
npx skills add https://github.com/lNwNl/Praxis --skill nosql-injection-lnwnl
Or copy as Structured Prompt for Agent▼
Please help me install this Agent Skill.
Skill: nosql-injection
Source: https://github.com/lNwNl/Praxis/tree/main/skills/nosql-injection
Command: npx skills add https://github.com/lNwNl/Praxis --skill nosql-injection-lnwnl

SYSTEM DOCUMENTATION & REQUIREMENTS

What problem does it solve? Testers familiar only with SQL injection often miss NoSQL injection flaws, where injected query operators like $ne or $gt alter query logic instead of breaking string syntax. This playbook provides the payloads, operator reference, and extraction techniques needed to systematically test MongoDB, CouchDB, and Redis backends. ## Core Features & Use Cases - Authentication Bypass: JSON body and URL-encoded bracket-notation payloads (e.g., password[$ne]=invalid) for PHP, Express.js, Ruby, and Python parameter parsing. - Blind Data Extraction: Character-by-character field enumeration using $regex boolean oracles and $where timing attacks, with a Python automation template. - Engine-Specific Attacks: Aggregation pipeline injection, CouchDB unauthenticated admin API access on port 5984, and Redis command injection on port 6379. - Use Case: During a web CTF or authorized pentest, you find a login API accepting JSON. Switch Content-Type to application/json, send {"username": "admin", "password": {"$ne": ""}}, and bypass authentication. ## Quick Start Use the nosql-injection skill to test the target login endpoint for MongoDB operator injection and attempt an authentication bypass.

Frequently Asked Questions about nosql-injection

High-intent search queries and answers about installing and using this skill.

FAQPage Schema
How do I test a login form for NoSQL injection?▼

Send JSON payloads like {"username": "admin", "password": {"$ne": "invalid"}} with Content-Type application/json, or use URL-encoded bracket notation such as password[$ne]=invalid for form endpoints. A successful login with a wrong password confirms operator injection.

How to extract data blindly with MongoDB $regex injection?▼

Use $regex as a boolean oracle by testing password[$regex]=^a, ^b, and so on, observing login success versus failure per character. Automate with a script that iterates the charset position by position until the full value is recovered.

What is the difference between SQL injection and NoSQL injection?▼

SQL injection breaks out of string literals in SQL syntax, while NoSQL injection injects query operator objects like $ne, $gt, or $regex that change query logic. Auth bypass uses {"password":{"$ne":""}} instead of ' OR 1=1--.

Can $where injection lead to remote code execution?▼

$where evaluates JavaScript in the MongoDB context but only accesses the current document's fields, so it does not directly give OS command execution. It enables logic abuse and timing-based extraction, though older MongoDB builds without a tight V8 sandbox historically raised RCE concerns.

Why does NoSQL injection work on PHP and Express.js forms?▼

PHP's $_POST and the Node.js qs library parse bracket notation like password[$ne]=invalid into nested objects, so the value reaches the database driver as an operator object rather than a string. URL-encode the dollar sign as %24 when needed.

How do I check for exposed CouchDB or Redis instances?▼

For CouchDB, request port 5984 paths like /_all_dbs and /_all_docs?include_docs=true to test unauthenticated access. For Redis on port 6379, try AUTH with common passwords and check whether commands execute without authentication.