关键信息 漏洞概述 漏洞类型: Server-Side Request Forgery (SSRF) 导致任意文件读取 严重性: 高 受影响组件: Webhook 模块 受影响版本及下载链接 受影响版本: 21.7.6-85642 下载地址: https://www.zentao.net/download/pms21.7.6-85642.html 漏洞位置 文件: module/webhook/model.php 函数: fetchHook() (lines 635-684) 关键代码: Lines 645-676 根因分析 1. URL 验证不足: Webhook URL 配置缺少适当的协议过滤。 2. Curl 执行时无协议过滤: 函数 fetchHook() 使用 curl_exec() 发送 HTTP 请求时,未使用 CURLOPT_PROTOCOLS 选项限制允许的协议。 3. 日志中存储了完整文件内容: file:// 协议读取的本地文件内容存储在数据库并显示在 Webhook 日志界面。 攻击向量 触发动作: 任何创建系统事件的动作(例如创建项目、任务、缺陷等)。 影响评估 机密性影响: 高 完整性影响: 无 可用性影响: 无 修复措施 立即缓解: 限制 Webhook URL 协议仅允许 HTTP 和 HTTPS,实现 URL 验证,过滤或截断日志中的文件内容。 代码修复: 添加协议验证、日志过滤功能等细节描述。 安全建议 实施 IP 地址黑名单、DNS 重绑定防护、严格 URL 格式验证、限制日志内容长度等额外安全措施。