ProcessWire CMS SSRF 漏洞总结 漏洞概述 ProcessWire CMS (v3.0.255) 的管理面板中存在 服务端请求伪造 (SSRF) 漏洞。该漏洞位于模块安装功能中,允许已认证的管理员通过“从 URL 添加模块”功能,向任意 URL 发起 HTTP 请求。 关键特征: 漏洞类型: Server-Side Request Forgery (SSRF) 严重性: Medium-High 利用条件: 需要管理员权限 (Authentication Required: Yes) 利用方式: 通过构造特定的 URL 请求,服务器会返回详细的错误信息(Verbose Error Disclosure),从而区分目标主机是“开放/可达”还是“关闭/不可达”,实现内网端口扫描。 影响范围 受影响组件: Admin Panel -> Modules -> Add Module From URL 受影响版本: ProcessWire 3.0.255 前提条件: 必须先在 中启用该功能(默认禁用): 修复方案 1. 默认禁用: 保持 为 (默认状态)。 2. 生产环境禁用: 在生产环境中,不要启用“从 URL 添加模块”功能。 3. 权限控制: 确保只有受信任的管理员可以访问模块管理界面。 4. 输入验证: 如果必须启用该功能,应对输入的 URL 进行严格的白名单验证,限制只能访问特定的、可信的模块源。 5. 错误信息处理: 避免向用户返回详细的服务器端错误信息,防止信息泄露辅助攻击。 POC / 利用代码 启用漏洞功能配置 ( ): 利用步骤 (无需代码,通过 Web UI 操作): 1. 登录 ProcessWire 管理后台。 2. 导航到 Modules -> New -> Add Module From URL。 3. 在 "Module ZIP file URL" 字段中输入目标 URL。 测试用例与结果: 测试 1: 内部可达主机 ( ) 输入 URL: 结果: 服务器成功发起请求,返回错误 。 结论: 端口开放且可达,但内容不是有效的 ZIP 文件。错误码 19 是区分可达主机的指标。 测试 2: 不存在的外部主机 ( ) 输入 URL: 结果: 返回详细的 DNS 解析失败错误: 结论: DNS 解析失败,主机不可达。详细的错误信息是区分不可达主机的指标。 测试 3: 有效的外部主机 ( ) 输入 URL: 结果: 服务器成功发起出站请求,返回错误(内容非 ZIP 文件)。 结论:** 确认服务器可以发起外部请求。