利用URL特性绕过域名白名单检测

本文探讨了URL跳转漏洞的几种常见攻击手法,包括使用特殊字符绕过防护机制,如'@','','?','#'等,并分析了这些手段如何影响到URL白名单检测,适用于多种应用场景。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

以URL跳转举例:URL跳转漏洞主要是利用浏览器对URL特性的支持,绕过一些正则匹配不严谨的防护。

1.“@”
http://www.target.com/redirecturl=http://whitelist.com@evil.com

2.“\”
http://www.target.com/redirecturl=http://evil.com\a.whitelist.com

3.“?”
http://www.target.com/redirecturl=http://evil.com?a.whitelist.com

4.“#”
http://www.target.com/redirecturl=http://evil.com#a.whitelist.com

以上问题不单单会影响URL跳转漏洞的防护,只要涉及到对URL白名单检测的地方都可能存在此问题,比如:微信、QQ等对聊天内容中对URL的检测;检测文章/论坛帖子等中是否插入了外部图片;[远程]文件包含/读取;等等

<think>嗯,用户想了解SSRF漏洞中通过域名重定向绕过防御的技术。首先,我需要回忆一下SSRF的基本概念,以及常见的绕过方法。记得SSRF是攻击者让服务器发起请求到内部或其他受限制的资源,而域名重定向可能用于绕过服务端的过滤机制。 用户提到的域名重定向绕过,可能涉及利用服务端在处理URL时的某些特性,比如允许重定向到内网IP或域名。比如,攻击者可能先提供一个合法的外网URL,但这个URL最终重定向到内网地址,从而绕过黑名单或白名单检查。 根据引用[2],SSRF结合重定向漏洞可以绕过白名单过滤。例如,如果服务器允许用户控制的参数进行重定向,攻击者可以构造一个URL,先指向允许的域名,然后重定向到目标内网地址。需要详细说明这种攻击的具体步骤,比如如何构造这样的URL,以及服务端在处理时的流程。 另外,引用[3]提到SSRF利用服务端发起请求的特点,可以访问内部系统。结合重定向,攻击者可能利用HTTP 302跳转,将初始请求指向合法地址,但实际重定向到内网。比如,攻击者控制一个网站,当服务器请求该网站时,返回302跳转到内网IP,从而绕过直接请求内网的限制。 还需要考虑DNS重绑定技术,这可能与域名重定向有关。攻击者可能配置域名在短时间内解析到不同的IP,第一次解析为合法IP,第二次解析为内网IP,从而绕过检查。这需要服务端在处理请求时不重新验证解析后的IP是否在黑名单中。 另外,引用[1]提到更改IP写法,比如使用十六进制或八进制格式,但这里用户关注的是域名重定向,所以可能需要分开讨论。不过,某些情况下,域名解析到非常规IP格式可能也有帮助,但主要应集中在重定向流程上。 要确保回答涵盖技术原理、具体方法、示例和防御措施。例如,攻击者构造一个重定向链接,服务端在第一次请求时检查通过,但重定向后的请求不再检查,导致访问内网。需要验证这种场景是否可行,以及如何实现。 可能还需要提到如何检测和防御这类攻击,比如服务端应禁止跟随重定向,或者在每次重定向后再次进行过滤检查。同时,使用白名单时,不仅要检查初始URL,还要检查重定向后的URL是否符合要求。 总结步骤:1. 攻击者提供恶意URL,该URL会返回302跳转到内网地址。2. 服务端请求该URL,获得302响应。3. 服务端跟随重定向,请求内网地址,导致SSRF成功。防御方法是禁用自动重定向或对重定向后的地址进行严格校验。</think>### SSRF漏洞中域名重定向绕过技术解析 SSRF(服务器端请求伪造)漏洞常被用于绕过网络边界限制,攻击者通过构造特殊请求使服务端发起非预期请求。**域名重定向**是绕过SSRF过滤的重要手段之一,其核心原理是**利用服务端对重定向目标的二次请求缺乏验证**。 --- #### 一、技术原理 1. **HTTP重定向机制** 当服务端请求一个URL时,若该URL返回`302`或`301`状态码并指定`Location`头,服务端可能自动跳转到新地址。若跳转后的地址是内网IP或受限域名,且服务端未对重定向后的地址二次过滤,则攻击成功[^2]。 2. **绕过逻辑** - 攻击者提供一个合法的外网URL(如`http://example.com/redirect`),该URL返回重定向到内网地址(如`http://192.168.1.1`)。 - 服务端在首次请求时检查外网URL合法,但未对重定向后的地址进行二次校验[^3]。 --- #### 二、具体方法 1. **直接重定向绕过** - 构造一个可控的HTTP服务,返回`302`跳转到目标内网地址: ```http GET /malicious-path HTTP/1.1 Host: attacker.com Location: http://192.168.1.1/admin ``` - 服务端请求`attacker.com/malicious-path`后自动跳转到内网地址。 2. **结合开放重定向漏洞** - 利用目标站点已有的开放重定向漏洞(如`https://victim.com/redirect?url=http://192.168.1.1`),将SSRF请求指向该漏洞接口[^2]。 3. **DNS重绑定(高阶绕过)** - 配置域名解析记录,首次解析为合法IP,后续解析为内网IP(如TTL设为0)。服务端在首次请求时通过校验,但实际访问时解析到内网地址[^1]。 --- #### 三、示例场景 假设服务端存在以下SSRF漏洞代码: ```python import requests def fetch_url(url): response = requests.get(url, allow_redirects=True) # 默认允许重定向 return response.content ``` 攻击者可构造: ```plaintext fetch_url("http://attacker.com/redirect-to-internal") ``` 其中`attacker.com/redirect-to-internal`返回: ```http HTTP/1.1 302 Found Location: http://192.168.1.1/secrets ``` --- #### 四、防御措施 1. **禁用自动重定向** 在代码中设置`allow_redirects=False`(如Python的`requests`库)。 2. **二次校验重定向地址** 对`Location`头中的地址进行黑名单/白名单过滤。 3. **强化DNS解析策略** 禁止使用非常规DNS解析(如短TTL域名)[^1]。 ---
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值