Command-line scanner for detecting potential NoSQL injection weaknesses in web form and endpoint workflows.
- URL validation and target reachability checks.
- Same-origin crawling with configurable depth.
- HTML form discovery and field extraction.
- Payload injection in both
application/x-www-form-urlencodedandapplication/jsonformats. - Heuristic response analysis with severity/confidence scoring.
- JSON report generation and Rich console summaries.
- Manual endpoint mode for JavaScript-driven forms.
Run from cli/.
Windows PowerShell:
py -3.13 -m venv .venv
\.venv\Scripts\Activate.ps1macOS / Linux:
python3 -m venv .venv
source .venv/bin/activateWindows PowerShell:
py -3.13 -m pip install -r requirements.txtmacOS / Linux:
python3 -m pip install -r requirements.txtpy -3.13 scanner.py --helppy -3.13 scanner.pyThe interactive menu offers:
1. Basic crawl scan (defaults)
2. Verbose crawl scan
3. Manual endpoint scan
4. Category-filtered crawl
5. Content-type filtered crawl
6. Advanced/custom scan
7. Exit
py -3.13 scanner.py --url http://localhost:3000 --output report.jsonpy -3.13 scanner.py --url http://localhost:3000 --verbose --output verbose_report.jsonpy -3.13 scanner.py --url http://localhost:3000 --endpoints "POST:/api/vuln/login:username,password" "POST:/api/vuln/search:query"py -3.13 scanner.py --url http://localhost:3000 --categories operator_injection regex_extractionpy -3.13 scanner.py --url http://localhost:3000 --content-type json--url(required unless using no-flag interactive mode): target base URL.--max-depth(default2): crawl depth limit.--timeout(default5.0): request timeout in seconds.--delay(default0.1): delay between injection requests.--output(defaultreport.json): report output path.--verbose,-v: verbose request/response logging.--content-type(both|urlencoded|json): payload submission content type.--endpoints: manual endpoint specifications, formatMETHOD:/path:field1,field2.--categories: payload category allow-list.--confirm-external: required when scanning non-localhost targets.--version: print scanner version.
Argument validation notes:
--max-depthmust be at least1.--timeoutmust be greater than0.--delaymust be greater than or equal to0.--categoriesmust match names defined inpayloads.json.
The scanner writes a JSON report with this structure:
{
"target": "http://localhost:3000/",
"scan_time": "2026-04-26T10:15:00Z",
"scan_duration_seconds": 42,
"summary": {
"pages_crawled": 3,
"forms_tested": 2,
"payloads_tested": 48,
"potential_findings": 4,
"by_severity": {
"critical": 1,
"high": 2,
"medium": 1,
"low": 0,
"info": 0
}
},
"findings": [
{
"severity": "critical",
"confidence": "confirmed",
"endpoint": "/api/vuln/login",
"form_page": "http://localhost:3000/login.html",
"method": "POST",
"content_type": "json",
"payload": {
"username": {
"$gt": ""
},
"password": {
"$gt": ""
}
},
"payload_category": "auth_bypass_combo",
"evidence": "Auth bypass detected",
"baseline_status": 401,
"actual_status": 200,
"response_snippet": "{\"ok\": true, ...}",
"response_time_ms": 37.5
}
]
}See a concrete sample in example_report.json.
- Ensure the target app is running.
- Verify URL includes scheme (
http://orhttps://). - Confirm firewall/network policy allows local connections.
- Target may submit via JavaScript instead of HTML form actions.
- Use manual endpoint mode via
--endpoints.
Run:
py -3.13 -m pip install -r requirements.txtAdd --confirm-external only when you are explicitly authorized to scan that target.
Run py -3.13 scanner.py --help to verify the flag syntax, then check category names in payloads.json.
If the scan receives Ctrl+C or SIGTERM, the scanner attempts to write a partial report to the configured --output path before exiting.
0: scan completed successfully, or interactive mode exited without starting a scan.1: runtime failure such as network, configuration, or report-writing errors.2: invalid command usage or validation failure.130: interrupted bySIGINT/Ctrl+C.143: interrupted bySIGTERM.
The CLI is not packaged as a system-wide installer. To remove it:
- delete the
cli/.venvdirectory - remove any generated report files such as
report.json - optionally uninstall dependencies from the active environment with
python -m pip uninstall -r requirements.txt -y
Use this scanner only on systems you own or where you have explicit written authorization.
Unauthorized scanning or exploitation is prohibited.