# Pentesting gRPC-Web
Lernen Sie AWS-Hacking von Grund auf mit htARTE (HackTricks AWS Red Team Expert)!
Andere Möglichkeiten, HackTricks zu unterstützen:
* Wenn Sie Ihr **Unternehmen in HackTricks bewerben möchten** oder **HackTricks als PDF herunterladen möchten**, überprüfen Sie die [**ABONNEMENTPLÄNE**](https://github.com/sponsors/carlospolop)!
* Holen Sie sich das [**offizielle PEASS & HackTricks-Merchandise**](https://peass.creator-spring.com)
* Entdecken Sie [**The PEASS Family**](https://opensea.io/collection/the-peass-family), unsere Sammlung exklusiver [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Treten Sie der** 💬 [**Discord-Gruppe**](https://discord.gg/hRep4RUj7f) oder der [**Telegram-Gruppe**](https://t.me/peass) bei oder **folgen** Sie uns auf **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* **Teilen Sie Ihre Hacking-Tricks, indem Sie PRs an die** [**HackTricks**](https://github.com/carlospolop/hacktricks) und [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) GitHub-Repositories senden.
## **Manipulation von gRPC-Web-Payloads**
gRPC-Web verwendet Content-Type: `application/grpc-web-text` in Anfragen, was einer Art von protobuf in base64-kodierter Form entspricht. Sie können das [gprc-coder](https://github.com/nxenon/grpc-pentest-suite)-Tool verwenden und auch die [Burp Suite-Erweiterung](https://github.com/nxenon/grpc-pentest-suite) installieren.
### **Manuell mit dem gGRPC Coder Tool**
1. Dekodieren Sie zuerst den Payload:
```bash
echo "AAAAABYSC0FtaW4gTmFzaXJpGDY6BVhlbm9u" | python3 grpc-coder.py --decode --type grpc-web-text | protoscope > out.txt
```
2. Bearbeiten Sie den Inhalt der decodierten Nutzlast
Manchmal müssen Sie möglicherweise den Inhalt der decodierten Nutzlast bearbeiten, um bestimmte Angriffe durchzuführen oder Informationen zu ändern. Hier sind einige Schritte, um den Inhalt der decodierten Nutzlast zu bearbeiten:
1. Decodieren Sie die Nutzlast: Verwenden Sie die entsprechenden Tools oder Techniken, um die Nutzlast zu decodieren und den Inhalt sichtbar zu machen.
2. Bearbeiten Sie den Inhalt: Öffnen Sie die decodierte Nutzlast in einem Texteditor und bearbeiten Sie den Inhalt nach Bedarf. Stellen Sie sicher, dass Sie die Syntax und Struktur der Nutzlast beibehalten, um Fehler zu vermeiden.
3. Speichern Sie die Änderungen: Speichern Sie die bearbeitete Nutzlast und stellen Sie sicher, dass sie im richtigen Format gespeichert wird, um sie später verwenden zu können.
Es ist wichtig zu beachten, dass das Bearbeiten der Nutzlast bestimmte Risiken mit sich bringen kann. Stellen Sie sicher, dass Sie die Auswirkungen Ihrer Änderungen verstehen und die erforderlichen Vorsichtsmaßnahmen treffen, um unerwünschte Folgen zu vermeiden.
```
nano out.txt
2: {"Amin Nasiri Xenon GRPC"}
3: 54
7: {""}
```
3. Kodieren Sie die neue Nutzlast
```bash
protoscope -s out.txt | python3 grpc-coder.py --encode --type grpc-web-text
```
4. Verwenden Sie die Ausgabe im Burp-Interceptor:
```
AAAAADoSFkFtaW4gTmFzaXJpIFhlbm9uIEdSUEMYNjoePHNjcmlwdD5hbGVydChvcmlnaW4pPC9zY3JpcHQ+
```
### **Handbuch mit gRPC-Web Coder Burp Suite Erweiterung**
Sie können die gRPC-Web Coder Burp Suite Erweiterung in der [gRPC-Web Pentest Suite](https://github.com/nxenon/grpc-pentest-suite) verwenden, was einfacher ist. Die Installations- und Verwendungshinweise finden Sie im entsprechenden Repository.
## **Analyse von gRPC-Web Javascript-Dateien**
In jeder gRPC-Web-Anwendung gibt es mindestens eine Javascript-Datei. Sie können die Datei analysieren, um neue Nachrichten, Endpunkte und Dienste zu finden. Versuchen Sie es mit dem Tool [gRPC-Scan](https://github.com/nxenon/grpc-pentest-suite).
1. Laden Sie die Javascript gRPC-Web-Datei herunter.
2. Scannen Sie sie mit grpc-scan.py:
```bash
python3 grpc-scan.py --file main.js
```
3. Analysiere die Ausgabe und teste die neuen Endpunkte und neuen Services:
```
Output:
Found Endpoints:
/grpc.gateway.testing.EchoService/Echo
/grpc.gateway.testing.EchoService/EchoAbort
/grpc.gateway.testing.EchoService/NoOp
/grpc.gateway.testing.EchoService/ServerStreamingEcho
/grpc.gateway.testing.EchoService/ServerStreamingEchoAbort
Found Messages:
grpc.gateway.testing.EchoRequest:
+------------+--------------------+--------------+
| Field Name | Field Type | Field Number |
+============+====================+==============+
| Message | Proto3StringField | 1 |
+------------+--------------------+--------------+
| Name | Proto3StringField | 2 |
+------------+--------------------+--------------+
| Age | Proto3IntField | 3 |
+------------+--------------------+--------------+
| IsAdmin | Proto3BooleanField | 4 |
+------------+--------------------+--------------+
| Weight | Proto3FloatField | 5 |
+------------+--------------------+--------------+
| Test | Proto3StringField | 6 |
+------------+--------------------+--------------+
| Test2 | Proto3StringField | 7 |
+------------+--------------------+--------------+
| Test3 | Proto3StringField | 16 |
+------------+--------------------+--------------+
| Test4 | Proto3StringField | 20 |
+------------+--------------------+--------------+
grpc.gateway.testing.EchoResponse:
+--------------+--------------------+--------------+
| Field Name | Field Type | Field Number |
+==============+====================+==============+
| Message | Proto3StringField | 1 |
+--------------+--------------------+--------------+
| Name | Proto3StringField | 2 |
+--------------+--------------------+--------------+
| Age | Proto3IntField | 3 |
+--------------+--------------------+--------------+
| IsAdmin | Proto3BooleanField | 4 |
+--------------+--------------------+--------------+
| Weight | Proto3FloatField | 5 |
+--------------+--------------------+--------------+
| Test | Proto3StringField | 6 |
+--------------+--------------------+--------------+
| Test2 | Proto3StringField | 7 |
+--------------+--------------------+--------------+
| Test3 | Proto3StringField | 16 |
+--------------+--------------------+--------------+
| Test4 | Proto3StringField | 20 |
+--------------+--------------------+--------------+
| MessageCount | Proto3IntField | 8 |
+--------------+--------------------+--------------+
grpc.gateway.testing.ServerStreamingEchoRequest:
+-----------------+-------------------+--------------+
| Field Name | Field Type | Field Number |
+=================+===================+==============+
| Message | Proto3StringField | 1 |
+-----------------+-------------------+--------------+
| MessageCount | Proto3IntField | 2 |
+-----------------+-------------------+--------------+
| MessageInterval | Proto3IntField | 3 |
+-----------------+-------------------+--------------+
grpc.gateway.testing.ServerStreamingEchoResponse:
+------------+-------------------+--------------+
| Field Name | Field Type | Field Number |
+============+===================+==============+
| Message | Proto3StringField | 1 |
+------------+-------------------+--------------+
grpc.gateway.testing.ClientStreamingEchoRequest:
+------------+-------------------+--------------+
| Field Name | Field Type | Field Number |
+============+===================+==============+
| Message | Proto3StringField | 1 |
+------------+-------------------+--------------+
grpc.gateway.testing.ClientStreamingEchoResponse:
+--------------+----------------+--------------+
| Field Name | Field Type | Field Number |
+==============+================+==============+
| MessageCount | Proto3IntField | 1 |
+--------------+----------------+--------------+
```
## Referenzen
* [Hacking in gRPC-Web Artikel von Amin Nasiri](https://infosecwriteups.com/hacking-into-grpc-web-a54053757a45)
* [gRPC-Web Pentest Suite](https://github.com/nxenon/grpc-pentest-suite)
Lernen Sie AWS-Hacking von Null auf Held mit htARTE (HackTricks AWS Red Team Expert)!
Andere Möglichkeiten, HackTricks zu unterstützen:
* Wenn Sie Ihr **Unternehmen in HackTricks bewerben möchten** oder **HackTricks als PDF herunterladen möchten**, überprüfen Sie die [**ABONNEMENTPLÄNE**](https://github.com/sponsors/carlospolop)!
* Holen Sie sich das [**offizielle PEASS & HackTricks Merchandise**](https://peass.creator-spring.com)
* Entdecken Sie [**The PEASS Family**](https://opensea.io/collection/the-peass-family), unsere Sammlung exklusiver [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Treten Sie der** 💬 [**Discord-Gruppe**](https://discord.gg/hRep4RUj7f) oder der [**Telegram-Gruppe**](https://t.me/peass) bei oder **folgen** Sie uns auf **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* **Teilen Sie Ihre Hacking-Tricks, indem Sie PRs an die** [**HackTricks**](https://github.com/carlospolop/hacktricks) und [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) GitHub-Repositories senden.