
Ferramenta CLI de injeção NoSql, para encontrar sites vulneráveis usando MongoDB.
Um scanner e injetor NoSQL rápido. Para encontrar sites vulneráveis a injeção NoSQL, especialmente no Mongo.
Eu queria uma ferramenta de injeção nosql melhor que fosse simples de usar, totalmente baseada em linha de comando e configurável. Com esse objetivo, comecei a trabalhar no nosqli - uma ferramenta simples de injeção nosql escrita em Go.
Ela visa ser rápida, precisa e altamente utilizável, com uma interface de linha de comando fácil de entender.
Atualmente, o Nosqli suporta detecção de injeção nosql para MongoDB. Ele executa os seguintes testes:
Baixe a versão binária mais recente para seu sistema operacional e instale-a em seu PATH, ou execute a partir de uma pasta local.
Pretendo adicionar funcionalidades de extração de dados. Se você gostaria de ver outras funcionalidades ou opções de configuração, por favor abra um pull request ou uma issue!
Deve ser auto-documentado simplesmente executando o comando e lendo os arquivos de ajuda.
$ 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='
Você pode testar a ferramenta usando meu app node js vulnerável, ou outros laboratórios de injeção nosql.
Ao selecionar a URL alvo, certifique-se de que todos os parâmetros testáveis estão presentes na URL. Por exemplo, suponha que um site tenha uma página em /user/lookup com um formulário de busca. Após inserir alguns dados no campo, a URL muda para /user/lookup?username=. Se você escanear apenas /user/lookup, a ferramenta não encontrará possíveis injeções. Para escanear corretamente, garanta que a URL completa com todos os parâmetros seja usada (/user/lookup?username= neste caso).
Se você preferir compilar a partir do código-fonte, ou se não houver um binário compilado para sua plataforma, você pode fazer isso clonando o repositório, instalando as dependências e compilando o projeto manualmente. Isso exigirá uma versão recente do Go e a variável de ambiente GOPATH adequada.
$ git clone https://github.com/Charlie-belmer/nosqli
$ cd nosqli
$ go get -u -d ./...
$ go install
$ nosqli -h
Há um conjunto de testes decente incluído. Testes unitários juntamente com cobertura simples de injeção podem ser executados usando go test a partir do diretório raiz:
go test ./...
Testes de integração também estão disponíveis, que executam injeções contra aplicativos vulneráveis conhecidos rodando localmente. Para usar os testes de integração, instale e execute o app Node.js vulnerável com injeção Mongo e meu fork do lab PHP vulnerável do digininja. Lembre-se de navegar para cada site e reiniciar o DB! Em seguida, passe a flag de integrações:
go test ./... -args -integrations=true
Se algum dos ambientes não for encontrado, os testes de integração serão desabilitados por um dos casos de teste, para acelerar a execução.
Contribuições são bem-vindas! Por favor, envie um pull request ou abra uma issue para discussão.
A menos que você especifique o contrário, entende-se que você está oferecendo ao projeto nosqli o direito ilimitado e não exclusivo de reutilizar, modificar e relicenciar o código que você contribui. Este projeto sempre estará disponível como Open Source, mas isso é importante porque a incapacidade de relicenciar código causou problemas devastadores para outros projetos de Software Livre (como KDE e NASM). Se você deseja especificar condições especiais de licença para suas contribuições, basta dizê-lo ao enviá-las.