一个快速的NoSQL扫描器和注入器。用于发现易受NoSQL注入攻击的网站,特别是MongoDB。
我想要一个更好的NoSQL注入工具,它应该易于使用、完全基于命令行并且可配置。为此,我开始开发nosqli——一个用Go编写的简单NoSQL注入工具。
它的目标是快速、准确且高度可用,并拥有易于理解的命令行界面。
Nosqli目前支持Mongodb的NoSQL注入检测。它运行以下测试:
下载最新二进制版本适用于您的操作系统,并将其安装在您的PATH中,或者从本地文件夹运行。
我计划添加数据提取功能。如果您希望看到其他功能或配置选项,请提交拉取请求或问题!
它应该是自文档化的,只需运行命令并阅读帮助文件即可。
$ nosqli
NoSQLInjector is a CLI tool for testing Datastores that
do not depend on SQL as a query language.
nosqli aims to be a simple automation tool for identifying and exploiting
NoSQL Injection vectors.
Usage:
nosqli [command]
Available Commands:
help Help about any command
scan Scan endpoint for NoSQL Injection vectors
version Prints the current version
Flags:
--config string config file (default is $HOME/.nosqli.yaml)
-d, --data string Specify default post data (should not include any injection strings)
-h, --help help for nosqli
-p, --proxy string Proxy requests through this proxy URL. Defaults to HTTP_PROXY environment variable.
-r, --request string Load in a request from a file, such as a request generated in Burp or ZAP.
-t, --target string target url eg. http://site.com/page?arg=1
-u, --user-agent string Specify a user agent
Use "nosqli [command] --help" for more information about a command.
$ nosqli scan -t http://localhost:4000/user/lookup?username=test
Running Error based scan...
Running Boolean based scan...
Found Error based NoSQL Injection:
URL: http://localhost:4000/user/lookup?=&username=test
param: username
Injection: username='
您可以使用我的易受攻击的Node.js应用程序或其他NoSQL注入实验室来测试该工具。
在选择目标URL时,请确保所有可测试的参数都出现在URL中。例如,假设一个站点在/user/lookup处有一个带搜索表单的页面。在字段中输入一些数据后,URL会变为/user/lookup?username=。如果您只扫描/user/lookup,工具将找不到可能的注入。要正确扫描,请确保使用包含所有参数的完整URL(在本例中为/user/lookup?username=)。
如果您更喜欢从源码构建,或者没有适用于您平台的编译二进制文件,您可以通过克隆仓库、安装依赖并手动构建项目来实现。这需要较新的Go版本以及正确的GOPATH环境变量。
$ git clone https://github.com/Charlie-belmer/nosqli
$ cd nosqli
$ go get -u -d ./...
$ go install
$ nosqli -h
包含一个不错的测试套件。可以通过从根目录运行go test来执行单元测试以及简单的注入覆盖:
go test ./...
还提供了集成测试,针对本地运行的已知易受攻击的应用程序运行注入。要使用集成测试,请安装并运行易受攻击的Node.js Mongo注入应用以及我的易受攻击的PHP实验室分支,该分支来自digininja。记得浏览到每个站点并重置数据库!然后传入集成测试标志:
go test ./... -args -integrations=true
如果找不到任一环境,集成测试将被某个测试用例禁用,以加快测试运行速度。
欢迎贡献!请提交拉取请求或提出问题进行讨论。
除非您另有说明,否则即视为您向nosqli项目授予无限制、非排他性的权利,以重复使用、修改和重新许可您贡献的代码。该项目将始终以开源形式提供,但这一点很重要,因为无法重新许可代码曾给其他自由软件项目(如KDE和NASM)带来毁灭性问题。如果您希望为自己的贡献指定特殊的许可条件,请在提交时说明。