漏洞概述 漏洞名称: SourceCoder SEO Meta Tag Extractor 1.0 - Server-Side Request Forgery via URL Parameter 漏洞类型: Server-Side Request Forgery (SSRF) (CWE-918) 影响组件: 入口端点: (POST handler) 漏洞函数: Sink #1: at Sink #2: at 参数: (application/x-www-form-urlencoded, POST) 描述: 在 SourceCoder SEO Meta Tag Extractor 1.0 中发现了一个服务器端请求伪造(SSRF)漏洞。该漏洞影响了 文件中的 函数。应用程序接受用户提供的 URL 作为 POST 参数,并直接将其传递给 和 ,没有限制对私有、回环或链接本地 IP 范围的访问。唯一的验证是 ,它仅检查 URL 的语法有效性,而不阻止内部地址。此外, 默认遵循 HTTP 重定向,允许攻击者控制的 URL 将服务器端请求重定向到内部端点,绕过任何简单的 hostname/IP 黑名单。 根本原因是缺乏对攻击者控制的 URL 的网络层验证。 影响范围 未认证的远程攻击者可以: 探测内部/私有网络服务,这些服务从公共互联网不可达(回环、RFC 1918、链接本地)。 通过回显的 meta-tag 输出读取来自内部 HTTP 服务的响应(完全可读的 SSRF)。 通过比较 URL 不可达与成功响应分支来枚举主机和相邻网络上的开放端口。 在没有 IMDSv2 强制的云部署中,检索云实例元数据(例如,AWS IMDS 在 169.254.169.254),包括临时 IAM 凭证,从而升级到云账户妥协。 绕过基于 IP 的访问控制,信任 127.0.0.1 或主机的主接口。 通过使用攻击者控制的 HTTP 重定向来击败简单的 URL 黑名单。 修复方案 推荐的修复措施包括在 中结合四种控制: 1. 方案白名单: 仅接受 和 (现有的 正则也允许 / )。 2. 主机名解析 + IP 白名单: 解析主机名并使用 拒绝任何位于私有、回环、链接本地或多播范围内的地址(RFC 1918, 127.0.0.0/8, 169.254.0.0/16, ::1, fc00::/7 等)。 3. 禁用 HTTP 重定向: 使用自定义流上下文,设置 为 0,并在每次跳转时重新验证目标是否符合白名单。 4. 设置请求超时和最大内容长度: 限制滥用进行端口扫描和拒绝服务。 示例补丁代码: POC 代码 模拟内部服务 漏洞 HTTP 请求 cURL PoC 重定向绕过 PoC(击败简单 IP 黑名单) 遵循 302 并重定向到内部资源,即使输入 URL 通过任何黑名单检查。 云元数据攻击(部署相关) → 应用程序的响应泄露了 IAM 角色名称,可以与第二个请求结合以检索临时凭证。