grpc
Skill1 starsChanged 12 days agoMITView on GitHub
Test gRPC services: reflection enumeration, plaintext/TLS downgrade, auth in metadata, message-level authorization gaps, and known-method fuzzing. Use when recon finds an HTTP/2 service speaking gRPC (content-type application/grpc, :status trailers, grpc-web proxies) or a mobile/microservices backend with protobuf APIs. Keywords: grpc, protobuf, grpcurl, reflection, grpc-web, HTTP/2, metadata auth, server reflection, protoset, microservices. Do NOT use for plain REST/JSON APIs (use api-abuse) or GraphQL (use graphql).
6 other projects use a version of this.
Adopted by
Most recently taken up by
- G1Joshi/Agent-Skillstheir own version, first seen Oct 13, 2026
- Abdox-menara/guard-skillstheir own version, first seen Aug 24, 2026
- conjure-3301/skillstheir own version, first seen Aug 17, 2026
- hallucinaut/skillstheir own version, first seen Jun 10, 2026
- ffsshhttiikk/opencode-agents-skillstheir own version, first seen Feb 28, 2026
- Sorcha-Platform/Sorchatheir own version, first seen Jan 24, 2026
Used with
Projects with it also use nodejs, gcp and 2 more.
Other files people use alongside this one.
Files found in the same public projects as a version of this one, more often than they turn up anywhere else. Each project counts once, large collections count for less, and this file's own repository is left out.
rogue-dev-studioSkillnodejs
Node.js development environment. Use when the project needs this capability or the user / team manifest asks for it. Use for specialized `nodejs` work when listed in TEAM.yaml or explicitly requested.
Also in 3 projects that use this
ffsshhttiikkSkillgcp
Google Cloud Platform services and best practices
Also in 3 projects that use this
JetBrainsSkillvue
Vue 3 Composition API, script setup macros, reactivity system, and built-in components. Use when writing Vue SFCs, defineProps/defineEmits/defineModel, watchers, or using Transition/Teleport/Suspense/KeepAlive.
Also in 3 projects that use this
MicrosoftSkillgithub-actions
Use when creating, editing, reviewing, or troubleshooting GitHub Actions workflows in Scope.
Also in 3 projects that use this
Other versions6 projects use a version of this.
Word for word · 0
None found.
Edited · 0
None found.
Wrote their own version · 6
- G1Joshi/Agent-Skills★ 15same name
- ffsshhttiikk/opencode-agents-skills★ 2same name
- Sorcha-Platform/Sorcha★ 2same name
- Abdox-menara/guard-skills★ 0same name
- conjure-3301/skills★ 0same name
- hallucinaut/skills★ 0same name
How matches are found. Word for word: the exact same text. Edited: shares passages with this file (“99% same” means 99% of its five-word phrases also appear here; 10% or more counts). Their own version: similar meaning, or, weakest, the same name. We can’t tell which project had it first. Projects are counted among the 200 most-starred candidates, and mentions are links to the repository we found, up to 50 per site, so both counts are a floor.
In this repository124 other files it gives its agents.
- CLAUDE.mdCLAUDE.md
- ai-agent-reconSkill
- ai-supply-chainSkill
- exfiltration-via-aiSkill
- indirect-injectionSkill
- llm-fuzzingSkill
- prompt-injectionSkill
- rag-poisoningSkill
- tool-abuseSkill
- chain-analysisSkill
- chain-auth-to-takeoverSkill
- chain-customSkill
- chain-graph-walkSkill
- chain-idor-to-mass-dataSkill
- chain-info-to-exploitSkill
- chain-multi-appSkill
- chain-ssrf-to-cloudSkill
- chain-web-to-rceSkill
- chain-xss-to-account-takeoverSkill
- email-securitySkill
- engagement-flowSkill
- finding-disciplineSkill
- http-headers-securitySkill
- oob-interactionsSkill
- opsec-disciplineSkill
- research-firstSkill
- scope-disciplineSkill
- scope-importSkill
- session-contextSkill
- 2fa-bypassSkill
- api-abuseSkill
- auth-bypassSkill
- broken-access-controlSkill
- business-logicSkill
- cache-poisoningSkill
- clickjackingSkill
- corsSkill
- credential-testingSkill
- crlf-injectionSkill
- cryptographic-oracleSkill
- csrfSkill
- css-injectionSkill
- data-exfiltration-testSkill
- deserializationSkill
- email-injectionSkill
- file-uploadSkill
- fuzzingSkill
- graphqlSkill
- host-headerSkill
- http-smugglingSkill
- idorSkill
- info-disclosureSkill
- jwtSkill
- lateral-movementSkill
- lfi-rfiSkill
- mass-assignmentSkill
- oauthSkill
- open-redirectSkill
- parameter-pollutionSkill
- password-resetSkill
- The first 60 shown.
The file
We split this skill into the rules it gives an agent
3 rules. 0 are common, 3 are distinctive, and 0 are very specific to this project.
0
Common
Most of the 5 edited versions we read keep these.
3
Distinctive
This author's own choices. Worth a look.
0
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Distinctive: line 53
Transport security: test plaintext acceptance on TLS-expecting ports and h2c exposure.
- Distinctive: line 61
Test: (a) no metadata at all — many internal-trust services answer unauthenticated.
- Distinctive: line 79
grpc-web divergence: if the app exposes BOTH grpc-web (browser) and native gRPC (partners/internal), diff their auth and rate-limit …
“Common” is measured: kept by at least 6 in 10 of the 5 edited versions of this file we could read. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
Signals
- Port serving HTTP/2 with
content-type: application/grpcresponses, or h2c (cleartext HTTP/2) on internal-exposed ports (8080, 50051 typical). application/grpc-webendpoints on the main web app (browser clients via a proxy — often with DIFFERENT auth handling than native gRPC).- Mobile app or SPA shipping
.proto-derived clients; protobuf wire format visible in proxied traffic. - Microservices architecture from app-profile — internal gRPC services sometimes surface through misconfigured ingress/gateways.
Methodology
- Enumerate via server reflection (the jackpot):
Reflection enabled in production = full API schema disclosure (finding on its own, info/low) AND the map for everything below.grpcurl -plaintext target:50051 list grpcurl -plaintext target:50051 list package.ServiceName grpcurl -plaintext target:50051 describe package.ServiceName.Method - No reflection → reconstruct the schema. Pull protos from: mobile app
decompilation, public GitHub (github-dorking skill), grpc-web JS bundles,
or guess well-known service names (health checks
grpc.health.v1, common CRUD naming). Build a protoset:protoc --descriptor_set_out=api.protoset --include_imports api.proto grpcurl -protoset api.protoset -plaintext target:50051 list - Transport security: test plaintext acceptance on TLS-expecting ports and h2c exposure. Cleartext gRPC carrying auth tokens = CWE-319.
- Auth in metadata, not messages. gRPC auth rides in metadata headers:
Test: (a) no metadata at all — many internal-trust services answer unauthenticated; (b) expired/foreign token; (c) token from a different service/audience (confused-deputy between microservices).grpcurl -H "authorization: Bearer TOKEN" -plaintext target:50051 \ package.Service/Method -d '{"id": "1"}' - Message-level authorization (the gRPC IDOR). AuthN happens at the
metadata layer; object-level checks live in handler code and are often
missing because "the gateway checks that". Swap object IDs in message
fields using the session-context discipline (same call as user_a/user_b):
grpcurl -H "authorization: Bearer USER_B_TOKEN" target:443 \ billing.Billing/GetInvoice -d '{"invoice_id": "USER_A_INVOICE"}' - Input validation on scalar/bytes fields: protobuf is typed, but string and bytes fields carry the same injection classes as REST — SQLi, SSTI, command injection, oversized messages (decompression bombs with grpc-encoding gzip). Route through the relevant hunt skill on a hit.
- grpc-web divergence: if the app exposes BOTH grpc-web (browser) and native gRPC (partners/internal), diff their auth and rate-limit behavior — proxies frequently normalize differently and one path skips checks.
Tooling
grpcurl— the core client (reflection, protoset, custom metadata).grpcui— interactive exploration once a protoset exists.protoc --descriptor_set_out— build protosets from recovered .proto files.nuclei -tags grpc— quick exposure/misconfig triage.
Validation Gate (minimum proof)
- Schema disclosure:
list/describeoutput captured from the live service (not from repo files alone). - Missing authN: a successful response to a call that per app-profile
requires authentication, with the exact
-dmessage and absent metadata documented. - Missing authZ (IDOR): identity-swapped call returning another tenant's object — session-context diff evidence applies.
- Cleartext: successful
-plaintextcall carrying real data on a port reachable from the tested network position.
Gotchas
- Reflection absent ≠ secure. State it as schema-not-enumerated (a coverage gap), never as "not vulnerable".
- Health service responding (
grpc.health.v1.Health/Check) is normal — note it, don't report it as exposure unless it leaks service internals. - Load balancers terminate HTTP/2 badly: some LBs downgrade or strip
trailers — a flaky grpcurl may be infra, not the app. Retry with
-vand note transport behavior in evidence. - Streaming methods need explicit message counts in grpcurl (
-dper message); a hanging stream is not a crash — set deadlines. - Internal gRPC exposed via misconfigured ingress is in scope only if the endpoint is reachable from your authorized network position — check scope before deep testing of an internal service surfaced by accident.
Chain Anchors
- Unauthenticated gRPC → enumerate ALL services/methods via reflection → map which mutate state (operator gate before invoking).
- Metadata-confusion possible → test cross-service token reuse for lateral movement between microservices (chain-multi-app).
- Injection in a string field → hand to sqli/rce with the working
gRPC transport as the delivery mechanism (payload via
-d).
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
No reviews yet
People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.
- It worked
- Partly
- It didn't
Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

