
NoSql Injection CLI 도구, MongoDB를 사용하여 취약한 웹사이트를 찾기 위한 도구입니다.
빠른 NoSQL 스캐너 및 주입기입니다. 특히 Mongo에서 NoSQL 인젝션에 취약한 사이트를 찾기 위한 도구입니다.
저는 사용하기 간편하고, 완전히 명령줄 기반이며, 설정 가능한 더 나은 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 ./...
통합 테스트도 사용 가능하며, 로컬에서 실행 중인 알려진 취약 앱에 대해 인젝션을 수행합니다. 통합 테스트를 사용하려면 취약한 nodejs Mongo 인젝션 앱과 digininja의 제 취약한 PHP 랩 포크를 설치하고 실행하세요. 각 사이트에 접속하여 DB를 리셋하는 것을 잊지 마세요! 그런 다음 통합 플래그를 전달하세요:
go test ./... -args -integrations=true
어느 한 환경이 발견되지 않으면, 테스트 케이스 중 하나에 의해 통합 테스트가 비활성화되어 테스트 실행 속도를 높입니다.
기여를 환영합니다! 풀 리퀘스트를 제출하거나 논의를 위해 이슈를 열어주세요.
별도로 명시하지 않는 한, 귀하가 기여한 코드에 대해 nosqli 프로젝트가 무제한, 비독점적으로 재사용, 수정 및 재라이선스할 수 있는 권리를 제공하는 것으로 간주됩니다. 이 프로젝트는 항상 오픈 소스로 제공되지만, 코드 재라이선스가 불가능하면 다른 자유 소프트웨어 프로젝트(KDE, NASM 등)에 심각한 문제를 초래했기 때문에 이는 중요합니다. 기여에 대해 특별한 라이선스 조건을 지정하려면, 기여를 보낼 때 그렇게 말씀해 주십시오.