Skip to content

Commit 20a4f5c

Browse files
committed
added grpc docs
1 parent 095c848 commit 20a4f5c

File tree

3 files changed

+90
-105
lines changed

3 files changed

+90
-105
lines changed

src/content/blog/demo-post/index.md

Lines changed: 0 additions & 105 deletions
This file was deleted.
Lines changed: 65 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,65 @@
1+
---
2+
title: "gRPC Goat - An intentionally vulnerable gRPC Security Lab"
3+
description: "A comprehensive Lab for learning and testing gRPC security vulnerabilities."
4+
publishDate: 2025-09-17
5+
tags: ["grpc-goat", "vulnerable-lab", "tutorial", "security-lab"]
6+
draft: false
7+
comment: true
8+
---
9+
10+
# Launching gRPC Goat
11+
12+
Hi, I'm JS aka @rootxjs launching **gRPC Goat** - an intentionally vulnerable gRPC application for learning and testing gRPC security vulnerabilities.
13+
14+
## Background
15+
16+
gRPC has become increasingly popular in microservices architectures, but security testing approaches differ significantly from traditional REST APIs. The binary protocol format and HTTP/2 transport layer introduce specific challenges:
17+
18+
- Standard web testing tools require adaptation for Protocol Buffers
19+
- HTTP/2 multiplexing creates different attack vectors than HTTP/1.1
20+
- gRPC reflection services can inadvertently expose service definitions
21+
- Authentication and authorization patterns vary across implementations
22+
23+
## Repository
24+
25+
https://github.com/rootxjs/grpc-goat/
26+
27+
## Documentation
28+
29+
https://rootxjs.github.io/docs/grpc_goat_docs/getting-started/
30+
31+
## Labs Overview
32+
33+
The project includes 9 labs covering common gRPC security vulnerabilities:
34+
35+
- gRPC Reflection Enabled
36+
- Plaintext gRPC
37+
- Insecure TLS
38+
- Arbitrary mTLS
39+
- mTLS Subject Validation
40+
- Unix Socket World Writable
41+
- SQL Injection
42+
- Command Injection
43+
- Server-Side Request Forgery
44+
45+
Each lab contains a realistic vulnerability with detailed exploitation documentation and mitigation guidance.
46+
47+
## Motivation
48+
49+
While excellent vulnerable applications exist for web security learning (DVWA, WebGoat), the gRPC ecosystem lacked a comprehensive security lab. During penetration testing engagements, I encountered gRPC services but had limited resources for practicing attack techniques specific to this protocol.
50+
51+
gRPC Goat addresses this gap by providing hands-on experience with vulnerabilities commonly found in production gRPC implementations - from basic misconfigurations to complex implementation flaws.
52+
53+
## Getting Started
54+
55+
```bash
56+
git clone https://github.com/rootxjs/grpc-goat.git
57+
cd grpc-goat
58+
docker-compose up -d
59+
```
60+
61+
Each lab runs on a dedicated port with comprehensive documentation covering exploitation techniques and defensive measures.
62+
63+
Whether you're conducting gRPC security assessments or exploring modern API security, gRPC Goat provides practical experience with real-world vulnerability scenarios.
64+
65+
Keep Learning!

src/content/docs/grpc_goat_docs/getting-started.mdx

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,11 @@ Before you begin, ensure you have the following tools installed on your system:
4040
# https://github.com/fullstorydev/grpcurl/releases
4141
```
4242

43+
3. **Protocol Buffer Files** (for labs 002-009)
44+
- All required `.proto` files are provided in the `protos/` directory
45+
- Lab 001 uses gRPC reflection, so no proto file is needed
46+
- See `protos/README.md` for usage instructions
47+
4348
### Additional gRPC Testing Tools
4449

4550
**Command Line Tools:**
@@ -160,6 +165,26 @@ grpcurl -plaintext -d '{"admin_token": "fake"}' \
160165

161166
**Congratulations!** You should see a response containing your first flag: `GRPC_GOAT{reflection_enabled_service_discovery}`
162167

168+
## Testing Other Labs
169+
170+
For labs 002-009, you'll need to use the corresponding proto files from the `protos/` directory:
171+
172+
```bash
173+
# Example: Lab 002 - Auth Service
174+
grpcurl -plaintext -proto protos/lab-002-auth.proto \
175+
-d '{"username": "admin", "password": "password"}' \
176+
localhost:8002 auth.AuthService/Login
177+
178+
# Example: Lab 007 - SQL Injection
179+
grpcurl -plaintext -proto protos/lab-007-user-directory.proto \
180+
-d '{"username": "admin"}' \
181+
localhost:8007 userdirectory.UserDirectory/SearchUsers
182+
```
183+
184+
<Aside type="note">
185+
**Proto Files**: Each lab (except 001) requires its corresponding proto file for client interaction. All proto files are available in the `protos/` directory with detailed usage examples.
186+
</Aside>
187+
163188
## Next Steps
164189

165190
Now that you have your environment set up and have captured your first flag:

0 commit comments

Comments
 (0)