GitHub Security Advisory: Unauthenticated SSRF in Website Preview Feature 漏洞概述 Echo 的“网站预览”功能(通过 实现)存在未授权的服务器端请求伪造(SSRF)漏洞。该路由未进行身份验证,接受完全由攻击者控制的 URL,并执行服务器端 GET 请求。 不安全配置: 出站 HTTP 客户端未设置主机白名单、未启用 SSRF 过滤器,且配置了 (跳过 TLS 验证)。 重定向风险: Go 的默认 会跟随重定向。攻击者可以利用重定向链,将请求从允许的源重定向到内部目标。 内存风险: 代码使用 将整个响应体读入内存,若响应过大可能导致拒绝服务(DoS)。 影响范围 受影响版本: 所有在修复版本 v4.2.8 之前的版本。 受影响组件: :处理 端点并接收用户控制的 URL 输入。 :处理请求并调用出站 HTTP 请求 ( )。 :执行 HTTP 请求 ( ),配置不安全(无 URL 验证、重定向启用、 )。 修复方案 1. 实施 SSRF 安全 URL 策略: 仅允许必要的协议;阻止链接本地地址、元数据地址和回环地址,除非明确需要。 2. 移除不安全配置: 移除 ,使用正常的 TLS 验证。 3. 限制重定向: 禁用重定向或限制跳转次数;在每次跳转后重新验证目标。 4. 添加限制: 添加响应大小和超时限制;在网络层可选地限制 egress(出站流量)。 POC 代码 环境设置: Echo 监听在 。 步骤 1 - 基线测试(未授权服务器端获取): 结果:HTTP 200 JSON with code: 1 and data Example Domain 步骤 2 - 影响:主机端页面 + 记录泄露 (repo PoC file) 1. 启动本地 HTTP 服务器监听: 2. 利用重定向/SSRF 获取数据 (Docker Desktop 环境): 记录到的响应(证明服务器/容器从主机拉取了页面):