CraftQL SSRF 漏洞总结 漏洞概述 CraftQL 是 Craft CMS 的一个 GraphQL 插件。该插件在处理 Asset 字段远程 URL 时存在 服务端请求伪造 (SSRF) 漏洞。攻击者可以通过 GraphQL 变异(Mutations)直接利用 PHP 的 函数,且未对 URL 进行任何验证。 攻击者利用后果: 读取服务器本地文件(如 、 配置文件)。 扫描内部网络端口和服务。 窃取云服务商元数据(AWS/GCP/Azure IAM 凭证)。 访问敏感的内部网络资源。 影响范围 受影响组件: CraftQL Plugin - GetAssetsFieldSchema.php 受影响版本: Craft CMS 3.x + CraftQL <= 1.3.7 漏洞文件: (第 56 行) 攻击向量: 网络 所需权限: 无(仅需 GraphQL Token) 修复方案 1. URL 协议白名单(推荐): 仅允许 和 协议。 2. 域名白名单: 限制请求的 Host 为特定可信域名。 3. 阻止私有 IP: 解析域名后检查 IP 地址,拒绝访问私有网段(如 10.x.x.x, 192.168.x.x 等)。 4. 使用 Guzzle HTTP 客户端: 使用 Guzzle 替代 ,利用其内置的安全机制。 POC 代码与利用示例 1. 漏洞根因代码 (Root Cause) 2. 危险协议支持 3. 攻击演示 (POC) POC #1: 读取 /etc/passwd POC #2: 读取数据库凭证 POC #3: 内部端口扫描 POC #4: 云元数据窃取 (AWS) 4. 修复代码示例 Solution 1: URL Protocol Whitelist Solution 2: Domain Whitelist Solution 3: Block Private IPs Solution 4: Use Guzzle HTTP Client**