SSRF漏洞之常见Bypass篇

本文详细介绍了SSRF(服务端请求伪造)漏洞的常见Bypass方法,包括URL Bypass、数字IP Bypass、302跳转 Bypass和DNS重绑定 Bypass。文章通过实例展示了如何利用各种编程语言的URL解析差异、IP进制转换、特殊域名和短网址等技巧绕过限制。同时,文中还总结了相应的防御策略,如设置URL白名单、限制内网IP、禁止302跳转以及考虑DNS缓存和Host白名单等。

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

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

SSRF漏洞思维导图如下,本篇主要介绍利用SSRF Bypass利用原理与方式

image-20210220151836430

SSRF漏洞形成的原因主要是服务器端所提供的接口中包含了所要请求的内容的URL参数,并且未对客户端所传输过来的URL参数进行过滤

一般的防御措施是对URL参数进行过滤,或者使得URL参数用户不可控,但当过滤方法不当时,就存在Bypass的不同方式

通过CTFHub平台的SSRF技能树中的Bypass题目来利用思维导图中绕过涉及的知识点

image-20210219111006165

URL Bypass

知识点:利用解析URL时的规则问题

一般情况下利用URL解析导致SSRF过滤被绕过基本上都是因为后端通过不正确的正则表达式对URL进行了解析

而在2017年的Blackhat大会上,Orange Thai 在blackhat中发表的演讲《A New Era of SSRF - Exploiting URL Parser in Trending Programming Languages! 》中介绍了SSRF攻击的一个新的角度———利用不同编程语言对URL的处理标准来绕过SSRF过滤,从而实施攻击

该方式主要是利用URL解析器和URL请求器之间的差异性发起攻击,由于不同的编程语言实现URL解析和请求是不一样的,所以很难验证一个URL是否合法

很难验证一个URL是否合法的原因在于:

  1. 在 RFC2396/RFC3986 中进行了说明,但是也仅仅是说明
  2. WHATWG(网页超文本应用技术工作小组)定义了一个基于RFC协议的具体实现,但是不同的编程语言仍然使用他们自己的实现

在作者的实践中,受到这种攻击的编程语言包含了cURL、PHP和PYTHON。下图展示了cURL请求函数与其他语言解析函数结合使用时,由于差异性造成的漏洞

image-20210222151203604

可以得知,NodeJS url、Perl URI、Go net/url、PHP parser_url以及Ruby addressable解析函数与cURL libcurl请求函数差异性都可能造成漏洞的产生

下图的实例中,我们看到上述所述编程语言的解析函数得到的IP是google.com,而cURL请求得到的却是evil.com:80

image-20210222151535178

题目截图:

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值