用途:对 gRPC 服务进行安全测试,重点发现“服务被当作内网可信”导致的鉴权缺失、代理信任边界绕过与内部方法外泄。
主要能力:
- 指纹与端口发现:常见端口 50051、443/8443、9090/8080 等;用 ALPN 确认 h2;通过 grpc-status trailer 识别 gRPC 服务端。
- 反射枚举:grpcurl -plaintext list / list <Svc> / describe <方法> 获取服务与方法目录,并用关键字筛选管理、内部、删除等敏感面。反射关闭时可用 -protoset。
- 未授权调用与 IDOR:不带鉴权 metadata 调用敏感方法,遍历可枚举 id;依据 grpc-status 判定:OK=已执行;16/7=鉴权生效;12=方法不存在;3=已解析输入。
- 信任边界绕过:测试伪造 JWT(alg=none)、x-user-id/x-tenant-id/x-envoy-internal 等代理注入头,以及 -bin 二进制 metadata 走私;关键是确认公网代理是否原样转发伪造头。
- 模式发现:探测 /proto、swagger.json、descriptor.pb;用 protoc 生成 descriptor set 后 grpcurl -protoset 驱动接口。
- 转码面:grpc-gateway/Envoy/Connect 暴露的 REST/JSON 路径、grpc-web+proto 手工帧、grpc-web+json 与 Connect 协议。
- HTTP/2 Rapid Reset(CVE-2023-44487):仅在有明确书面授权时使用专用 PoC;优先版本比对(nghttp2>=1.57.0、Envoy>=1.27.1 等已修复)而非打流量。
限制与注意:反射或健康检查端点常被设计为公开,单独可达至多为低/中危;必须证明同一 RPC 在无凭据下返回他人数据或执行写操作。仅能通过 SSRF/端口扫描到达的后端问题需说明外部可达路径。ghz/h2load 是压测工具,不能证明 Rapid Reset。DoS 默认不在多数项目范围内,未获授权不得实施。资料未提供官方仓库、许可或完整工具链信息。