服务器端请求伪造(SSRF)攻击详解
字数 1141 2025-11-22 05:48:16

服务器端请求伪造(SSRF)攻击详解

一、SSRF攻击描述
服务器端请求伪造(SSRF)是一种安全漏洞,攻击者诱使服务器向非预期目标发起恶意请求。由于请求由服务器发出,可能绕过防火墙或访问内部资源,导致敏感信息泄露、内部服务探测甚至远程代码执行。常见于依赖外部URL参数的功能(如网页抓取、文件处理、Webhook回调等)。

二、攻击原理与危害

  1. 核心机制

    • 应用未严格校验用户提供的URL参数,直接使用服务器权限发起请求。
    • 服务器可能具备访问内网、云元数据接口(如AWS的169.254.169.254)或特殊协议(如file://、gopher://)的能力。
  2. 典型危害

    • 内网渗透:扫描内网服务(如Redis、MySQL),获取敏感数据。
    • 云环境攻击:窃取云实例的元数据(如IAM凭证)。
    • 协议滥用:利用gopher://等协议构造任意TCP流量,实现数据库或Redis未授权操作。
    • 绕过防御:通过服务器IP绕过IP白名单限制。

三、攻击步骤分解

  1. 识别注入点

    • 查找接收URL参数的功能(如在线翻译、图片下载、API代理)。
    • 示例参数:url=target=api=
  2. 探测服务器行为

    • 尝试访问公开服务(如http://example.com)确认功能正常。
    • 测试协议处理:将参数改为file:///etc/passwddict://localhost:6379/info,观察响应是否包含系统文件或服务信息。
  3. 内网服务探测

    • 使用常见内网IP段(如192.168.0.0/16)和端口扫描:
      http://192.168.1.1:80
      http://127.0.0.1:3306
      
    • 通过响应时间或错误信息判断服务是否存在。
  4. 利用云元数据接口

    • 尝试访问云服务元数据端点(如AWS):
      http://169.254.169.254/latest/meta-data/iam/security-credentials/
      
    • 成功时可获取临时访问密钥。
  5. 高级利用(协议扩展)

    • Gopher协议:构造POST请求攻击内网Redis,实现命令执行:
      gopher://127.0.0.1:6379/_SET%20key%20value
      
    • HTTP重定向:控制外部域名返回302跳转至内网地址,绕过直接URL黑名单。

四、防御措施

  1. 输入校验

    • 白名单校验域名或IP,禁止内网地址(如10.0.0.0/8、127.0.0.0/8)。
    • 禁用危险协议(如file://、gopher://)。
  2. 网络层隔离

    • 服务器出站流量限制,仅允许访问必要的公网服务。
    • 使用网络策略禁止服务器访问内网关键系统。
  3. 代理与中间层

    • 通过专用代理服务转发请求,代理层实施额外校验。
    • 避免服务器直接使用用户参数发起请求。
  4. 云环境加固

    • 配置云元数据服务为仅允许可信流量(如AWS IMDSv2需携带Token)。

五、总结
SSRF风险源于服务器对用户输入过度信任。防御需结合输入校验、网络隔离与最小权限原则,并通过持续测试(如SSRF自动化工具)验证有效性。

服务器端请求伪造(SSRF)攻击详解 一、SSRF攻击描述 服务器端请求伪造(SSRF)是一种安全漏洞,攻击者诱使服务器向非预期目标发起恶意请求。由于请求由服务器发出,可能绕过防火墙或访问内部资源,导致敏感信息泄露、内部服务探测甚至远程代码执行。常见于依赖外部URL参数的功能(如网页抓取、文件处理、Webhook回调等)。 二、攻击原理与危害 核心机制 : 应用未严格校验用户提供的URL参数,直接使用服务器权限发起请求。 服务器可能具备访问内网、云元数据接口(如AWS的169.254.169.254)或特殊协议(如file://、gopher://)的能力。 典型危害 : 内网渗透 :扫描内网服务(如Redis、MySQL),获取敏感数据。 云环境攻击 :窃取云实例的元数据(如IAM凭证)。 协议滥用 :利用gopher://等协议构造任意TCP流量,实现数据库或Redis未授权操作。 绕过防御 :通过服务器IP绕过IP白名单限制。 三、攻击步骤分解 识别注入点 : 查找接收URL参数的功能(如在线翻译、图片下载、API代理)。 示例参数: url= 、 target= 、 api= 。 探测服务器行为 : 尝试访问公开服务(如http://example.com)确认功能正常。 测试协议处理:将参数改为 file:///etc/passwd 或 dict://localhost:6379/info ,观察响应是否包含系统文件或服务信息。 内网服务探测 : 使用常见内网IP段(如192.168.0.0/16)和端口扫描: 通过响应时间或错误信息判断服务是否存在。 利用云元数据接口 : 尝试访问云服务元数据端点(如AWS): 成功时可获取临时访问密钥。 高级利用(协议扩展) : Gopher协议 :构造POST请求攻击内网Redis,实现命令执行: HTTP重定向 :控制外部域名返回302跳转至内网地址,绕过直接URL黑名单。 四、防御措施 输入校验 : 白名单校验域名或IP,禁止内网地址(如10.0.0.0/8、127.0.0.0/8)。 禁用危险协议(如file://、gopher://)。 网络层隔离 : 服务器出站流量限制,仅允许访问必要的公网服务。 使用网络策略禁止服务器访问内网关键系统。 代理与中间层 : 通过专用代理服务转发请求,代理层实施额外校验。 避免服务器直接使用用户参数发起请求。 云环境加固 : 配置云元数据服务为仅允许可信流量(如AWS IMDSv2需携带Token)。 五、总结 SSRF风险源于服务器对用户输入过度信任。防御需结合输入校验、网络隔离与最小权限原则,并通过持续测试(如SSRF自动化工具)验证有效性。