SSRF防御

本文深入解析SSRF(Server-Side Request Forgery)漏洞原理,探讨其如何利用构造的链接在服务端发起请求,造成对内网服务的安全威胁。文章进一步提供了一系列防护措施,包括禁用不安全的协议、加强服务端认证、输入过滤、返回信息验证、统一错误信息、阻止重定向及设置URL白名单,旨在帮助开发者有效防御SSRF攻击。

SSRF(Server-side Request Forge, 服务端请求伪造)。
由攻击者构造的攻击链接传给服务端执行造成的漏洞,一般用来在外网探测或攻击内网服务。

漏洞防护

  • 禁用不需要的协议,仅仅允许http和https请求,可以防止类似于file://, gopher://, ftp:// 等引起的问题。
  • 服务端需要认证交互,禁止非正常用户访问服务;
  • 过滤输入信息,永远不要相信用户的输入,判断用户的输入是否是一个合理的URL地址
  • 过滤返回信息,验证远程服务器对请求的响应是比较容易的方法,如果web应用是去获取某一种类型的文件。那么在把返* 回结果展示给用户之前先验证返回的信息是否符合标准。
  • 统一错误信息,避免用户可以根据错误信息来判断远端服务器的端口状态。
  • 禁止30x跳转
  • 设置URL白名单或限制内网IP
<think> 嗯,用户想了解SSRF的绕过方法和防御策略。从引用内容看,用户已经接触过一些资料,包括防御机制、绕过技巧分类、DNS重绑定攻击等概念。用户可能是安全工程师或开发人员,需要系统性的防御方案,同时也要测试自身系统的脆弱性。 用户列出的引用资料质量不错,涵盖了关键点:引用[2]详细拆解了URL绕过手法,引用[3]提到盲SSRF的利用难点,引用[4]的DNS重绑定和引用[5]的多种进制转换技巧都很有实战价值。不过用户似乎更关注如何整合这些信息,而非零散案例。 在构建回答时,我会把绕过方法按技术原理分层:从基础的URL变形到网络层攻击,再到应用层欺骗。防御部分则强调层次化——既要堵漏洞也要降危害。特别要注意引用[1][^1]和引用[3][^3]强调的"深度防御"理念,比如网络隔离和响应过滤同样重要。 用户可能隐含的需求是:如何设计代码层面的验证逻辑?所以防御策略里会重点展开白名单校验的细节,比如引用[5][^5]提到的域名正则优化方案。另外考虑到用户引用中多次出现"盲SSRF",需要单独说明这种场景的特殊检测手法。 最后生成的问题要引导用户深入:DNS重绑定实战案例、云环境下的SSRF特殊性、以及近年新型绕过技术(如引用[4][^4]提到的IPv6滥用),这些都可能切中用户后续的研究方向。 </think> 以下是基于引用资料的SSRF绕过方法与防御策略的全面总结,整合了关键技术和实践建议: --- ### **一、SSRF常见绕过方法** 1. **URL混淆技术** - **进制转换**:`127.0.0.1` → 八进制 `0177.0.0.1`、十六进制 `0x7f.0.0.1`、十进制 `2130706433`[^5]。 - **特殊域名**:利用DNS解析规则,如 `127.0.0.1.xip.io` 解析为 `127.0.0.1`[^5]。 - **IPv6格式**:`http://[::169.254.169.254]` 绕过`localhost`限制[^5]。 2. **间接请求绕过** - **短网址服务**:提交百度短链(如 `https://dwz.cn/xxx`),后端解析时暴露真实恶意URL[^5]。 - **重定向漏洞**:利用开放重定向的第三方服务跳转至内部地址(如 `http://trusted.com/redirect?url=http://192.168.1.1`)[^2]。 3. **协议滥用** - **非常规协议**:使用 `gopher://`、`dict://` 或 `file://` 协议访问本地文件或发送TCP请求[^3]。 - **JSON参数注入**:通过嵌套JSON数据传递恶意URL(如 `{"url":"http://attacker.com?redirect=file:///etc/passwd"}`)[^3]。 4. **DNS重绑定攻击** - **绕过同源策略**:控制DNS响应,使同一域名短时间解析为外网IP(首次请求)和内网IP(第二次请求),绕过IP黑名单[^4]。 - **工具利用**:使用 `rbndr.us` 等公共服务快速生成恶意域名[^4]。 --- ### **二、SSRF防御策略** 1. **输入严格校验** - **白名单校验**:仅允许访问预设的域名或IP(如只放行 `*.example.com`)[^1]。 - **协议限制**:禁用高风险协议(`gopher`、`file`、`dict`),仅允许 `HTTP/HTTPS`[^2]。 2. **网络层隔离** - **出口防火墙**:限制服务器出站流量,阻止访问内网段(如 `192.168.0.0/16`、`10.0.0.0/8`)[^1]。 - **云环境防护**:在AWS/Azure中利用IMDSv2(元数据服务)替代易受攻击的v1版本[^3]。 3. **响应过滤与沙箱** - **内容检查**:拦截响应中含敏感信息(如 `root:x:0:`、`AWS_SECRET_KEY`)的请求[^3]。 - **沙箱代理**:通过中间代理转发请求,隔离服务器与目标网络,阻断非预期响应[^1]。 4. **深度防御措施** - **盲SSRF防护**:监控异常日志(如长时间连接、非常规端口访问),设置请求超时阈值[^3]。 - **DNS加固**:配置DNS缓存最小TTL,降低重绑定攻击成功率[^4]。 --- ### **关键实践示例** ```python # 白名单校验示例(Python) allowed_domains = ["api.example.com", "cdn.safe.org"] def validate_url(url): domain = urlparse(url).hostname if not any(domain.endswith(d) for d in allowed_domains): raise ValueError("非法域名") if url.startswith(("file://", "gopher://")): raise ValueError("危险协议") ``` --- ### **三、为什么部分防御会失效?** - **黑名单缺陷**:攻击者通过进制编码、特殊域名绕过静态IP过滤[^5]。 - **DNS动态性**:传统IP校验无法应对DNS重绑定攻击[^4]。 - **依赖响应结果**:盲SSRF无直接回显,依赖延迟/错误日志判断,难以实时检测[^3]。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值