SSRF漏洞:URL绕过方法以及原理案例详细讲解
字数 1509 2025-08-19 12:41:46
SSRF漏洞:URL绕过方法及原理详解
0x00 内容概述
本文档详细讲解SSRF漏洞的URL绕过方法及原理,包含以下核心内容:
- SSRF场景绕过方式(URL by Pass)
- 盲注SSRF
- SSRF漏洞判断方法
- 靶场示例
- 防御方法
0x01 漏洞概述
SSRF(Server-Side Request Forgery:服务器端请求伪造)主要针对Web应用中的跳转功能。当网站存在"url跳转"场景时,可能存在SSRF漏洞。
核心机制:攻击者传递恶意参数,服务器代替攻击者访问目标资源。
利用场景:
- 读取服务器内部/外部数据(如/etc/passwd)
- 获取源码内容(如PHP文件)
- 作为跳板攻击其他服务器
- 实现远程代码执行
0x02 漏洞危害
- 服务器内网交互渗透
- 作为跳板机攻击其他服务器(隐藏攻击源)
- 获取敏感服务器信息
- 可能导致远程代码执行
0x03 漏洞发现与验证
查找位置
- HTTP请求重定向/URL跳转处理逻辑
- 文件导入转换功能(HTML/PDF/图像等)
- 远程服务器数据获取功能
- 外部链接业务处理功能
验证方法
- 初步验证:使用http://www.dnslog.cn/测试,查看是否有访问记录
- 限制绕过:尝试各种绕过技术
- 深入利用:确认漏洞后进行深度利用
0x04 URL绕过技术(byPass)
1. 基本绕过方法
- 直接文件协议:
http://<TARGET>/load?q=file:///etc/passwd - 单斜线绕过:
http://<TARGET>/load?q=index.html/{file:///etc/passwd}
2. @符号绕过
原理:@符号在URL中用于分隔认证信息和实际域名
示例:
https://www.baidu.com@www.bing.cn→ 实际访问https://bing.cnftp://username:password@127.0.0.1→ FTP认证访问
注意:
- 协议头取自@前的协议
- 带路径的URL可能无法正确解析
3. IP地址转换
当存在IP限制时,可使用多种IP表示形式:
| 类型 | 示例 |
|---|---|
| 十进制 | http://2130706433 (127.0.0.1) |
| 十六进制 | http://0x7f000001 |
| IPv6 | http://[::ffff:7f00:1] |
| IPv6简化 | http://[::ffff:127.0.0.1] |
| 简化形式 | http://127.1 或 http://127.0.1 |
| 特殊IP | http://0.0.0.0 |
4. 短域名服务
利用在线短域名生成服务绕过URL检测
0x05 常见协议利用
Gopher协议
gopher:// - 早期Internet信息检索协议,可用于构造复杂请求
0x06 防御方法
-
输入验证:
- 严格校验用户输入的URL
- 禁止file://、gopher://等危险协议
-
白名单限制:
- 仅允许访问预定义的合法域名/IP
- 限制访问内网地址
-
URL解析:
- 规范化URL后再处理
- 解析并验证最终请求的目标
-
网络层防护:
- 限制服务器出站连接
- 使用网络隔离
-
其他措施:
- 禁用不必要的URL处理功能
- 使用安全的库处理URL请求
总结
SSRF漏洞危害严重,攻击者可利用多种技术绕过防护。防御需要从输入验证、协议限制、网络隔离等多方面入手,建立纵深防御体系。开发人员应特别注意所有涉及URL跳转或远程资源获取的功能点。