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

hunt-spa-api

Faz seu agente descobrir APIs ocultas de aplicativos web e testá-las. É útil para encontrar falhas de segurança que podem expor dados.

O que ela faz

Esta ferramenta ajuda a encontrar a 'linguagem secreta' (API) que um site usa para se comunicar com seu servidor. Ela procura por essa linguagem nos arquivos do site e verifica se há falhas de segurança, como acesso não autorizado.

Quando usar

  • ✓Quando um site parece ser uma página única e carrega muitos arquivos de código.
  • ✓Quando você vê nomes de domínio como 'admin', 'console' ou 'api'.
  • ✓Quando a página de login usa sistemas como Google ou Facebook para entrar.

Exemplo do que pedir para a IA

“Encontre a API do site exemplo.com e verifique se há falhas de segurança.”

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-spa-api/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-spa-api/SKILL.md Leia o arquivo SKILL.md desse link e siga as instruções dele na minha tarefa.
Como funciona

A ferramenta baixa os arquivos de código do site, procura por endereços e comandos da API escondidos neles e depois tenta acessar esses comandos sem permissão para ver se o site se protege corretamente.

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-spa-api

Ou baixe só o arquivo:

curl -L https://raw.githubusercontent.com/sickn33/agentic-awesome-skills/main/plugins/agentic-awesome-skills-claude/skills/hunt-spa-api/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.

Portão de confirmação obrigatório 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.

Quando usar esta habilidade

Ative quando:

  • Um host alvo retornar um pequeno shell HTML + grandes pacotes /static/js/*.js ou /_next/static/* (SPA React/Vue/Angular/Next/Svelte)
  • Você vir um subdomínio chamado console, app, dashboard, portal, admin, panel, manage, internal
  • A recon encontrar qualquer host *api*, *-api*, api.*
  • Uma página de login for controlada por OAuth/SSO (a autenticação do frontend não diz nada sobre se a API impõe autenticação)

O insight principal: uma SPA é um cliente para uma API backend e envia o mapa completo dessa API — hosts, rotas, às vezes chaves — para quem visualizar o código-fonte. A página de login protegida não diz nada sobre se a API por trás dela verifica tokens. A autenticação é frequentemente imposta no gateway/login e ausente em um grupo de rotas da API.

NÃO pule isso porque "o aplicativo precisa de login" — é exatamente quando isso compensa.


A jogada (5 passos)

1. Baixar o shell + enumerar os pacotes

curl -s https://console.target.com/ -o index.html
# React/CRA:
grep -oE '/static/js/[^"]+\.js' index.html
# Next.js:
grep -oE '/_next/static/[^"]+\.js' index.html
# generic:
grep -oiE 'src="[^"]+\.js[^"]*"' index.html

Baixe todos os pacotes (eles podem ter vários MB — tudo bem, são todos dados de rota):

mkdir bundles
for j in $(grep -oE '/static/js/[^"]+\.js' index.html | sort -u); do
  curl -s "https://console.target.com$j" -o "bundles/$(echo "$j"|tr '/' '_')"
done

2. Coletar hosts, rotas e segredos da API dos pacotes

B=bundles/*.js
# Backend API hosts (incl. dev/beta/staging variants — often weaker auth)
grep -ohiE 'https://[a-z0-9.-]*(api|console|backend|service)[a-z0-9.-]*\.target\.com[a-z0-9/_-]*' $B | sort -u
# Versioned API base paths
grep -ohiE '/api/v[0-9]+/?' $B | sort -u
# Route literals — minified bundles store routes as STRING segments, not full URLs.
# Grep for quoted "resource/action" strings:
grep -ohiE '"[a-z0-9_-]+/[a-z0-9_/-]+"' $B | tr -d '"' \
  | grep -iE '(login|user|account|order|billing|invoice|payment|deal|report|token|otp|password|reset|admin|profile|auth|upload|export|role|permission|dashboard|wallet|finance|sales)' | sort -u
# Secrets (validate before trusting — most AIza keys are Maps/analytics, not Auth)
grep -ohiE '(AIza[0-9A-Za-z_-]{35}|AKIA[0-9A-Z]{16}|sk_live_[0-9A-Za-z]+|eyJ[A-Za-z0-9_-]{10,}\.[A-Za-z0-9_-]{10,}|apiKey["'"'"']?\s*[:=]\s*["'"'"'][^"'"'"']+)' $B | sort -u

Observação: minificadores armazenam rotas como segmentos de string concatenados (por exemplo, "account/payment/list"), NÃO URLs /api/v2/... completos — então um grep ingênuo /api/v* não retorna nada. Use grep para as strings de rota com palavras de recurso e adicione a base você mesmo.

Chunks carregados preguiçosamente (assíncronos) — não pare nos pacotes referenciados pelo HTML. SPAs CRA/webpack referenciam apenas runtime+main+vendor em index.html; chunks de rota assíncronos numerados são nomeados dentro do mapa de chunks de main.js e carregados em tempo de execução, então usar grep apenas /static/js/*.js do shell trunca a cobertura de rota para chunks eager.

grep -oE '[0-9]+:"[a-f0-9]+"' bundles/*main*.js        # {chunkId:"hash"} pairs
# reconstruct /static/js/<id>.<hash>.chunk.js, download each, re-run route/host/secret harvest
# asset-manifest.json (if present) lists them all -> hunt-source-leak

3. Estabelecer um CONTROLE — encontrar um endpoint que ESTEJA restrito

Antes de declarar qualquer coisa como vulnerável, envie uma solicitação não autenticada para um endpoint que você espera que seja protegido e capture como é uma rejeição correta:

curl -s -X POST https://api.target.com/api/users -H 'Content-Type: application/json' -d '{}'
# seguro → {"error":"Missing or invalid authorization header"} ou HTTP 401

…
Perguntas frequentes

Por que eu faria isso?

Para entender como um site funciona por dentro e encontrar possíveis brechas de segurança que poderiam ser exploradas por pessoas mal-intencionadas.

Preciso de permissão para usar essa ferramenta?

Sim, é crucial ter permissão explícita e por escrito do dono do sistema antes de usar esta ferramenta em qualquer site. O uso sem autorização é ilegal.

O que é uma API?

API é como um garçom em um restaurante. Você (o site) pede algo (dados ou uma ação), e a API (o garçom) leva seu pedido para a cozinha (o servidor) e traz a resposta de volta para você.

Detalhes

Descrição original do autor

Discover a single-page-app's hidden backend API from its public JS bundle, then test that API for broken access control / missing authentication.

repo: sickn33/agentic-awesome-skills

Popularidade

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

Essa skill é útil?

0

Entre para votar.

Comentários

  • …

Mais skills deste repositório

Skills parecidas