mirror of
https://github.com/carlospolop/hacktricks
synced 2024-11-23 13:13:41 +00:00
161 lines
8.3 KiB
Markdown
161 lines
8.3 KiB
Markdown
# gRPC-Web渗透测试
|
||
|
||
<details>
|
||
|
||
<summary><strong>从零开始学习AWS黑客技术,成为专家</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE(HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
||
|
||
支持HackTricks的其他方式:
|
||
|
||
- 如果您想看到您的**公司在HackTricks中被广告**或**下载PDF格式的HackTricks**,请查看[**订阅计划**](https://github.com/sponsors/carlospolop)!
|
||
- 获取[**官方PEASS & HackTricks周边产品**](https://peass.creator-spring.com)
|
||
- 探索[**PEASS家族**](https://opensea.io/collection/the-peass-family),我们的独家[**NFTs**](https://opensea.io/collection/the-peass-family)
|
||
- **加入** 💬 [**Discord群组**](https://discord.gg/hRep4RUj7f) 或 [**电报群组**](https://t.me/peass) 或 **关注**我们的**Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**。**
|
||
- 通过向[**HackTricks**](https://github.com/carlospolop/hacktricks)和[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github仓库提交PR来分享您的黑客技巧。
|
||
|
||
</details>
|
||
|
||
## **操纵gRPC-Web负载**
|
||
gRPC-Web在请求中使用Content-Type: `application/grpc-web-text`,这种形式类似于base64编码的protobuf,您可以使用[gprc-coder](https://github.com/nxenon/grpc-pentest-suite)工具,也可以安装其[Burp Suite扩展程序](https://github.com/nxenon/grpc-pentest-suite)。
|
||
|
||
### **使用gGRPC Coder工具手动操作**
|
||
1. 首先解码负载:
|
||
```bash
|
||
echo "AAAAABYSC0FtaW4gTmFzaXJpGDY6BVhlbm9u" | python3 grpc-coder.py --decode --type grpc-web-text | protoscope > out.txt
|
||
```
|
||
## 2. 编辑解码后的有效负载内容
|
||
|
||
在拦截和解码 gRPC 流量后,攻击者可以编辑有效负载内容以尝试执行各种攻击。这可能包括更改请求参数、注入恶意代码或修改数据以触发应用程序中的漏洞。编辑有效负载内容是一种常见的渗透测试技术,可帮助发现应用程序中的安全漏洞。
|
||
```
|
||
nano out.txt
|
||
2: {"Amin Nasiri Xenon GRPC"}
|
||
3: 54
|
||
7: {"<script>alert(origin)</script>"}
|
||
```
|
||
3. 编码新的有效载荷
|
||
```bash
|
||
protoscope -s out.txt | python3 grpc-coder.py --encode --type grpc-web-text
|
||
```
|
||
4. 在Burp拦截器中使用输出:
|
||
```
|
||
AAAAADoSFkFtaW4gTmFzaXJpIFhlbm9uIEdSUEMYNjoePHNjcmlwdD5hbGVydChvcmlnaW4pPC9zY3JpcHQ+
|
||
```
|
||
### **使用 gRPC-Web Coder Burp Suite 扩展的手册**
|
||
您可以在 [gRPC-Web 渗透测试套件](https://github.com/nxenon/grpc-pentest-suite) 中使用 gRPC-Web Coder Burp Suite 扩展,这样更容易。您可以在其存储库中阅读安装和使用说明。
|
||
|
||
## **分析 gRPC-Web JavaScript 文件**
|
||
每个 gRPC-Web 应用程序中至少有一个 JavaScript 文件。您可以分析该文件以查找新消息、端点和服务。尝试使用 [gRPC-Scan](https://github.com/nxenon/grpc-pentest-suite) 工具。
|
||
1. 下载 JavaScript gRPC-Web 文件
|
||
2. 使用 grpc-scan.py 进行扫描:
|
||
```bash
|
||
python3 grpc-scan.py --file main.js
|
||
```
|
||
3. 分析输出并测试新的端点和新的服务:
|
||
```
|
||
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 |
|
||
+--------------+----------------+--------------+
|
||
```
|
||
## 参考资料
|
||
|
||
* [Amin Nasiri的《入侵 gRPC-Web 文章》](https://infosecwriteups.com/hacking-into-grpc-web-a54053757a45)
|
||
* [gRPC-Web 渗透测试套件](https://github.com/nxenon/grpc-pentest-suite)
|
||
|
||
<details>
|
||
|
||
<summary><strong>从零开始学习 AWS 黑客技术,成为专家</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE(HackTricks AWS 红队专家)</strong></a><strong>!</strong></summary>
|
||
|
||
支持 HackTricks 的其他方式:
|
||
|
||
* 如果您想在 HackTricks 中看到您的 **公司广告** 或 **下载 PDF 版本的 HackTricks**,请查看 [**订阅计划**](https://github.com/sponsors/carlospolop)!
|
||
* 获取 [**官方 PEASS & HackTricks 商品**](https://peass.creator-spring.com)
|
||
* 探索 [**PEASS 家族**](https://opensea.io/collection/the-peass-family),我们的独家 [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||
* **加入** 💬 [**Discord 群组**](https://discord.gg/hRep4RUj7f) 或 [**电报群组**](https://t.me/peass) 或 **关注** 我们的 **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**。**
|
||
* 通过向 [**HackTricks**](https://github.com/carlospolop/hacktricks) 和 [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github 仓库提交 PR 来分享您的黑客技巧。
|
||
|
||
</details>
|