NoSQL injection

Use Trickest to easily build and automate workflows powered by the world's most advanced community tools. Get Access Today:

Exploit

In PHP you can send an Array changing the sent parameter from parameter=foo to parameter[arrName]=foo.

The exploits are based in adding an Operator:

Basic authentication bypass

Using not equal ($ne) or greater ($gt)

SQL - Mongo

An attacker can exploit this by inputting strings like admin' || 'a'=='a, making the query return all documents by satisfying the condition with a tautology ('a'=='a'). This is analogous to SQL injection attacks where inputs like ' or 1=1-- - are used to manipulate SQL queries. In MongoDB, similar injections can be done using inputs like ' || 1==1//, ' || 1==1%00, or admin' || 'a'=='a.

Extract length information

Extract data information

SQL - Mongo

PHP Arbitrary Function Execution

Using the $func operator of the MongoLite library (used by default) it might be possible to execute and arbitrary function as in this report.

https://swarm.ptsecurity.com/wp-content/uploads/2021/04/cockpit_auth_check_10.png

Get info from different collection

It's possible to use $lookup to get info from a different collection. In the following example, we are reading from a different collection called users and getting the results of all the entries with a password matching a wildcard.

NOTE: $lookup and other aggregation functions are only available if the aggregate() function was used to perform the search instead of the more common find() or findOne() functions.

Use Trickest to easily build and automate workflows powered by the world's most advanced community tools. Get Access Today:

MongoDB Payloads

List from here

Blind NoSQL Script

Brute-force login usernames and passwords from POST login

This is a simple script that you could modify but the previous tools can also do this task.

Tools

References

Use Trickest to easily build and automate workflows powered by the world's most advanced community tools. Get Access Today:

Last updated