hunt-grpc
Ajuda seu agente a encontrar falhas de segurança em gRPC. É útil para proteger sistemas que usam essa tecnologia.
O que ela faz
Esta ferramenta ajuda a encontrar falhas de segurança em sistemas que usam gRPC, um tipo de comunicação entre programas de computador. Ela verifica se há configurações inseguras ou acessos não autorizados.
Quando usar
- ✓Ao testar a segurança de um novo sistema que usa gRPC.
- ✓Para verificar se serviços internos estão expostos indevidamente.
- ✓Durante uma auditoria de segurança autorizada.
Exemplo do que pedir para a IA
“Verifique o servidor gRPC em [endereço IP ou URL] para vulnerabilidades 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
Mensagem pronta para colar
Como funciona
A ferramenta envia requisições específicas para o sistema gRPC e analisa as respostas. Ela procura por sinais de configuração incorreta ou falhas de autenticação.
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-grpcOu baixe só o arquivo:
curl -L https://raw.githubusercontent.com/sickn33/agentic-awesome-skills/main/plugins/agentic-awesome-skills-claude/skills/hunt-grpc/SKILL.md -o SKILL.mdConteú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:
- Peça ao usuário para declarar o URL, IP, conta ou recurso exato do alvo.
- Peça ao usuário para confirmar a autorização por escrito e o escopo permitido.
- Mostre o(s) comando(s) exato(s) e explique seu efeito esperado.
- 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-GRPC — Segurança gRPC
Alvos de Joias da Coroa
Reflexão gRPC habilitada = enumeração completa do catálogo de serviços sem código-fonte. Os bugs gRPC de maior valor vêm da suposição arquitetônica de que um serviço é "interno" — a autenticação é aplicada no proxy de borda e o backend confia em qualquer chamador que o alcance. Uma vez que você alcança o backend diretamente (porta exposta, SSRF, bypass de proxy), essa confiança desmorona.
Achados de maior valor:
- Reflexão habilitada em produção —
grpc.reflection.v1alpha.ServerReflection/grpc.reflection.v1.ServerReflectionlista todos os métodos, mensagens e serviços internos. Habilitador de enumeração, não uma vulnerabilidade por si só (veja Validação). - Falta de autenticação em serviço interno — um serviço projetado para tráfego de microsserviços leste-oeste exposto externamente sem mTLS e sem autorização por método → chamar métodos privilegiados diretamente.
- Apenas autenticação de borda / remoção de metadados — o proxy autentica o usuário, mas o backend confia novamente em cabeçalhos injetados pelo proxy (
x-user-id,x-tenant-id,x-forwarded-*); se você alcançar o backend ou puder injetar esses cabeçalhos através do proxy, você se passará por qualquer inquilino. - gRPC em texto puro — gRPC h2c (HTTP/2 em texto claro) em uma porta não padrão → interceptação de credenciais/metadados.
- HTTP/2 Rapid Reset DoS (CVE-2023-44487) — quadros HEADERS intercalados + RST_STREAM imediatos ignoram a contabilidade
MAX_CONCURRENT_STREAMS→ esgotamento de recursos. DoS está no escopo em quase nenhum programa — obtenha autorização explícita por escrito antes de enviar um único burst.
Fase 1 — Descoberta de Impressão Digital e Portas
# Common gRPC ports (50051 native; 443/8443 via TLS+ALPN h2; 9090/8080 h2c)
nmap -sV -p 50051,50052,443,9090,8080,8443,6565,9000 $TARGET 2>/dev/null | grep open
# ALPN must negotiate h2 — gRPC cannot run on HTTP/1.1
echo | openssl s_client -alpn h2 -connect $TARGET:443 2>/dev/null | grep -i "ALPN.*h2"
# Native-gRPC fingerprint: an HTTP/2 POST to a bogus method returns a grpc-status
# trailer (12 = UNIMPLEMENTED) even when the path is wrong — strong signal it's gRPC.
curl -s --http2-prior-knowledge -X POST "http://$TARGET:9090/x.Y/Z" \
-H "content-type: application/grpc" -o /dev/null -D - | grep -i grpc-status
# TLS-fronted h2 (port 443): look for grpc-status trailer / grpc content-type
curl -s --http2 -X POST "https://$TARGET/grpc.health.v1.Health/Check" \
-H "content-type: application/grpc-web+proto" -o /dev/null -D - | grep -i "grpc-status\|content-type"
grpc-status presente no trailer ⇒ um servidor gRPC (ou grpc-gateway/Envoy) está por trás dessa porta. UNIMPLEMENTED em um caminho aleatório é normal e apenas confirma o transporte — não é uma descoberta.
Fase 2 — Enumeração de Serviços via Reflexão
brew install grpcurl # ou: go install github.com/fullstorydev/grpcurl/cmd/grpcurl@latest
# Listar serviços — -plaintext para h2c, -insecure para TLS autoassinado, plain para TLS válido
grpcurl -plaintext $TARGET:50051 list
grpcurl -insecure $TARGET:443 list
# Saída típica quando a reflexão está ativada:
# grpc.reflection.v1.ServerReflection
# grpc.health.v1.Health
# user.UserService
# admin.AdminService
# payment.PaymentService
# Listar + descrever cada método de cada serviço
grpcurl -plaintext $TARGET:50051 list admin.AdminService
grpcurl -plaintext $TARGET:50051 describe admin.AdminService.DeleteUser
grpcurl -plaintext $TARGET:50051 describe .admin.DeleteUserRequest # esquema da mensagem
# Despejar todo o catálogo para triagem de superfícies interessantes
for SVC in $(grpcurl -plaintext $TARGET:50051 list); do
echo "== $SVC =="; grpcurl -plaintext $TARGET:50051 list "$SVC"
done | tee grpc-catalog.txt
…
Perguntas frequentes
O que é gRPC?
gRPC é uma forma eficiente de programas de computador se comunicarem entre si, especialmente em ambientes de nuvem.
O que é 'Reflection Enabled'?
Significa que o sistema gRPC pode listar todos os seus serviços e métodos disponíveis, o que pode ser útil para um atacante se não for bem protegido.
Posso usar isso em qualquer sistema?
Não. O uso é restrito a fins educacionais ou testes de segurança com permissão explícita e por escrito do proprietário do sistema. O uso indevido é ilegal.
Detalhes
Popularidade
- Estrelas no GitHub
- 48 mil
- Posição no ranking
- #3261
- Licença
- MIT
- Atualizada em
- 15/10/2026
Comentários
- …
Mais skills deste repositório
00-andruia-consultant
Ajuda seu agente a iniciar ou melhorar projetos de IA. Ele analisa código, sugere ferramentas e cria planos de ação em espanhol.
sickn33/agentic-awesome-skills
007
Faz seu agente realizar auditorias de segurança e modelagem de ameaças. É útil para proteger projetos contra ataques e vulnerabilidades.
sickn33/agentic-awesome-skills
10-andruia-skill-smith
Ajuda seu agente a criar ou melhorar ferramentas de IA. Ele define como as ferramentas funcionam, escreve a documentação e valida a estrutura.
sickn33/agentic-awesome-skills
20-andruia-niche-intelligence
Faz seu agente criar um resumo sobre um setor específico. É útil para entender o contexto, regras, padrões de uso e riscos de um projeto, usando fontes confiáveis.
sickn33/agentic-awesome-skills
Skills parecidas
django-security
Ajuda seu agente a implementar práticas de segurança em aplicações Django. Ele foca em autenticação, autorização e prevenção contra ataques comuns, garantindo um código mais seguro.
affaan-m/ECC
laravel-security
Ajuda seu agente a proteger aplicações Laravel contra ameaças. Implementa práticas de segurança para autenticação, autorização e prevenção de ataques comuns.
affaan-m/ECC
module-regression
Ajuda seu agente a gerenciar mudanças em projetos grandes. Garante que alterações em uma parte do código não quebrem outras partes.
affaan-m/ECC