ssrf的绕过

本文探讨了SSRF漏洞的产生原因及常见防御方法,包括对URL的限制。详细介绍了四种绕过方式:URL解析规则、IP地址转换、302重定向和DNS重绑定,并通过实际实训展示了如何在限制条件下获取资源,如利用同源策略和DNS重绑定技术绕过安全限制。

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

一、绕过原理:

SSRF产生的原因为未对URL中引用的URL进行限制,使得攻击者能够利用这一漏洞使得引用的URL指向内网中的其它地址以获得本应该被拒绝外网访问的资源。因此常见的SSRF防御手段为对引用的URL进行限制。常见的限制手段有黑名单和白名单两种。

二、绕过方式:

1、url解析规则

2、ip地址进制转换

3、302跳转

4、DNS重绑定

三、实训

1、URL Bypass(运用url解析规则)

知识点:一个 url 的访问实际上是以 @符后为准的,比如说 xxxx.com@10.10.10.10,则实际上访问的是 10.10.10.10 这个地址

题目显示必须以http://notfound.ctfhub.com开头,因为http://www.baidu.com@127.0.0.1/与http://127.0.0.1请求的页面一致,考虑用这种结构来绕过本来的地址应该是http://127.0.0.1/flag.php 修改为:http://notfound.ctfhub.com@127.0.0.1/flag.php后成功

2、数字IP Bypass

知识点:1、转换为八、十、十六进制:IP地址是一个32位的二进制数,通常被分割为4个8位二进制数。通常用“点分十进制”表示成(a.b.c.d)的形式,所以IP地址的每一段可以用其他进制来转换

2、enclosed alphanumerics
① ② ③ ④ ⑤ ⑥ ⑦ ⑧ ⑨ ⑩ ⑪ ⑫ ⑬ ⑭ ⑮ ⑯ ⑰ ⑱ ⑲ ⑳ ⑴ ⑵ ⑶ ⑷ ⑸ ⑹ ⑺ ⑻ ⑼ ⑽ ⑾ ⑿
⒀ ⒁ ⒂ ⒃ ⒄ ⒅ ⒆ ⒇ ⒈ ⒉ ⒊ ⒋ ⒌ ⒍ ⒎ ⒏ ⒐ ⒑ ⒒ ⒓ ⒔ ⒕ ⒖ ⒗ ⒘ ⒙ ⒚ ⒛ ⒜ ⒝ ⒞ ⒟ ⒠ ⒡ ⒢ ⒣
⒤ ⒥ ⒦ ⒧ ⒨ ⒩ ⒪ ⒫ ⒬ ⒭ ⒮ ⒯ ⒰ ⒱ ⒲ ⒳ ⒴ ⒵ Ⓐ Ⓑ Ⓒ Ⓓ Ⓔ Ⓕ Ⓖ Ⓗ Ⓘ Ⓙ Ⓚ Ⓛ Ⓜ Ⓝ Ⓞ Ⓟ Ⓠ Ⓡ
Ⓢ Ⓣ Ⓤ Ⓥ Ⓦ Ⓧ Ⓨ Ⓩ ⓐ ⓑ ⓒ ⓓ ⓔ ⓕ ⓖ ⓗ ⓘ ⓙ ⓚ ⓛ ⓜ ⓝ ⓞ ⓟ ⓠ ⓡ ⓢ ⓣ ⓤ ⓥ ⓦ ⓧ ⓨ ⓩ ⓪ ⓫
⓬ ⓭ ⓮ ⓯ ⓰ ⓱ ⓲ ⓳ ⓴ ⓵ ⓶ ⓷ ⓸ ⓹ ⓺ ⓻ ⓼ ⓽ ⓾ ⓿

例如:127.0.0.1等同于① ② ⑦.⓿.⓿.①

3、特殊字符绕过:用。代替.或者localhost代替127.0.0.1

尝试http://127.0.0.1/flag.php查看页面回显

发现  127 172 @被ban,考虑用进制转化的方式绕过尝试

尝试十进制成功获得flag

4、302跳转 Bypass

301、302是http请求的状态码,都代表重定向,301代表永久重定向,302代表临时重定向。

通过file协议查看页面源码,发现限制了127 172 10 192

页面显示禁止内网ip,结合题目提示的302跳转,考虑通过访问302跳转页面进行访问

参考:CTFHub技能树 Web-SSRF 302跳转 Bypass-CSDN博客知道可以将目标地址转变成短连接的形式达到302跳转的目的

尝试后发现无法打开页面,考虑用localhost,绕过成功

4、DNS重绑定 Bypass

DNS重绑定攻击:
同源策略

1、同源策略/SOP(Same origin policy)是一种约定,由 Netscape 公司 1995 年引入浏览器,它是浏览器最核心也最基本的安全功能,现在所有支持 JavaScript 的浏览器都会使用这个策略。如果缺少了同源策略,浏览器很容易受到 XSS、 CSFR 等攻击。

2、在这个策略下,web浏览器允许第一个页面的脚本访问第二个页面里的数据,但是也只有在两个页面有相同的源时。源是由URI,主机名,端口号组合而成的。这个策略可以阻止一个页面上的恶意脚本通过页面的DOM对象获得访问另一个页面上敏感信息的权限。

3、同源策略是为了安全,确保一个应用中的资源只能被本应用的资源访问 

原理:

当我们发起域名解析请求的时候,第一次访问会返回一个ip地址A,但是当我们发起第二次域名解析请求的时候,却会返回一个不同于A的ip地址B。

(在一个域名中写入两个地址,服务器会向DNS服务器发送两次解析请求,目的就是要让第一次解析出来是个外网ip,第二次解析出来是个内网ip。)

打开题目发现提示说附件链接有帮助,打开了rbndr.us dns rebinding service,理解原理后知道dns重绑定需要再同一个域中写入两个ip地址,其中一个为内网ip

尝试后得到flag

<think>嗯,用户问的是如何绕过相对路径进行SSRF,也就是服务器端请求伪造。首先,我得回忆一下SSRF的基本概念,攻击者利用服务器发起未经授权的请求,通常针对内部系统。相对路径绕过可能涉及到如何让服务器解析URL时访问非预期的资源。 首先,可能需要考虑URL解析的差异。不同的库或框架处理URL的方式可能不同,比如有的会处理路径标准化,或者处理特殊字符。比如,使用../这样的目录遍历可能会被某些解析器处理,从而访问上级目录或其他资源。例如,http://example.com/../../etc/passwd 这样的请求,如果服务器没有正确过滤,可能会访问到系统文件。 然后,想到可能用到的编码或特殊字符。比如对斜杠进行编码,比如%2e%2e%2f代表../,或者使用双重编码,比如%252e%252e%252f。有些服务器可能在解码后处理这些路径,导致绕过。 还有,可能利用协议处理的不同。比如,使用file://协议直接访问本地文件,但通常相对路径是相对于当前目录的。如果结合目录遍历,可能构造如file:///etc/passwd,但如何让服务器解析相对路径可能需要更多的技巧。 另外,想到一些Web服务器在处理URL重定向时的行为,比如如果应用允许用户提供重定向的URL,攻击者可能构造一个相对路径的重定向,导致服务器访问内部资源。例如,Location头中的相对路径可能会被服务器解析为内部地址。 还有,考虑使用@符号来绕过。比如http://example.com@internal/resource,但这种情况更多用于身份验证部分,可能和相对路径绕过关系不大,但需要确认是否有其他利用方式。 再考虑一些特定的框架或库的漏洞,比如某些旧版本的库可能对URL的解析存在缺陷,允许通过特定的字符组合绕过路径检查。例如,使用反斜杠\代替正斜杠,或者混合使用大小写,但现代服务器通常会对这些进行标准化处理。 另外,可能需要结合其他漏洞,比如文件名注入或者路径拼接问题。如果应用将用户输入拼接到路径中,而没有正确清理,攻击者可以利用../跳出限制目录,访问其他路径。 比如,假设应用允许用户输入一个路径参数,如http://example.com/api?file=user/data.txt,攻击者可能修改为file=../../../../etc/passwd,从而读取系统文件。这种情况下,相对路径绕过是通过目录遍历实现的。 但问题是如何绕过相对路径的限制,可能用户指的是服务器本身限制了使用相对路径来访问某些资源,而攻击者需要找到方法绕过这种限制,让服务器发起对非预期地址的请求。 可能想到使用绝对URL来替代相对路径,但绝对URL可能被过滤。或者,利用URL解析器中的差异,比如将绝对URL编码或拆分,使得检查机制失效。 比如,使用http://attacker.com#@internal.resource 这样的构造,可能某些解析器会将其解释为访问internal.resource,而其他部分视为片段标识符。 或者,利用DNS重绑定技术,使得域名解析为内部IP,但这种方法可能属于另一种SSRF绕过方式,而非直接处理相对路径。 再想,是否有其他方法可以让服务器在处理相对路径时,解析到攻击者控制的地址。例如,通过控制Host头或Referer头,诱导服务器生成包含相对路径的URL,从而指向内部服务。 或者,结合某些API的参数,比如通过控制参数值,使得服务器在拼接URL时,生成指向内部资源的绝对路径,例如将参数值设置为@internal:8080,导致生成类似http://example.com/api/@internal:8080的请求,从而访问内部服务。 可能还需要考虑不同的协议处理,比如使用gopher://、dict://等协议,结合相对路径构造特定的请求,但这类协议通常需要绝对路径,所以相对路径可能不适用。 总结一下,可能的绕过方法包括: 1. 目录遍历(使用../或编码后的形式) 2. 利用URL解析差异(如特殊字符、编码) 3. 协议处理不当(如file://结合路径遍历) 4. 参数注入或拼接漏洞 5. 利用重定向或HTTP头控制 6. DNS重绑定(间接相关) 需要验证这些方法的可行性,并给出具体的例子。比如,构造一个包含编码后的../的URL,或者利用服务器拼接URL时的漏洞,将用户输入的部分作为路径的一部分,通过目录遍历跳出限制。 同时,防御措施方面,应该对用户输入的URL进行严格校验,禁止使用file://等危险协议,过滤或标准化路径中的特殊字符,使用白名单机制允许的域名和协议,以及设置网络层防护,限制服务器访问内部服务。</think>--- ### 如何绕过相对路径进行SSRFSSRF(服务器端请求伪造)是一种攻击技术,攻击者诱导服务器向非公开的内部资源发起请求。绕过相对路径限制是SSRF绕过的一种常见手段,以下是逐步分析及典型方法: --- #### **1. 理解相对路径解析机制** 相对路径(如`/api/../admin`)会被服务器解析为绝对路径(如`/admin`)。但若服务器未正确规范化路径,攻击者可构造特殊路径访问受限资源。 --- #### **2. 绕过方法及示例** ##### **方法1:目录遍历(Path Traversal)** - **原理**:利用`../`跳转至上级目录,绕过路径限制。 - **示例**: ```plaintext http://example.com/api?url=http://attacker.com/../../etc/passwd ``` 若服务器拼接路径时未过滤`../`,可能读取系统文件。 ##### **方法2:URL编码绕过** - **原理**:对特殊字符(如`/`、`.`)进行编码,绕过黑名单过滤。 - **示例**: ```plaintext http://example.com/api?url=http://attacker.com/%2e%2e%2f%2e%2e%2fetc/passwd ``` 解码后为`../../etc/passwd`。 ##### **方法3:协议结合路径遍历** - **原理**:利用`file://`协议直接访问本地文件,结合相对路径。 - **示例**: ```plaintext http://example.com/api?url=file:///var/www/../../etc/passwd ``` ##### **方法4:参数注入拼接** - **原理**:利用服务器拼接URL时的逻辑漏洞,注入路径。 - **示例**: ```plaintext http://example.com/api?path=@internal-host:8080/admin ``` 若服务器拼接为`http://user:@internal-host:8080/admin`,可能访问内网服务。 ##### **方法5:利用重定向** - **原理**:诱导服务器跟随重定向至内部地址。 - **示例**: ```plaintext http://example.com/api?url=http://attacker.com/redirect?target=http://127.0.0.1 ``` --- #### **3. 防御措施** 1. **输入校验**: - 禁止用户输入包含`file://`、`localhost`、`127.0.0.1`等敏感协议或地址。 - 使用正则表达式严格匹配白名单域名(如`^https?://example\.com/`)。 2. **路径规范化**: - 解析URL前,标准化路径(如移除`../`)。 3. **网络层防护**: - 限制服务器出站流量,禁止访问内部IP段。 4. **使用SSRF防护库**: - 如Python的`requests`库结合`urlparse`进行安全解析。 --- #### **总结** 绕过相对路径的核心是**利用路径解析差异**和**输入过滤缺陷**。防御需结合多层级校验、规范化处理及网络隔离。实际渗透测试中,需根据目标服务器的解析特性构造Payload。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值