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

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

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

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

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

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请求函数与其他语言解析函数结合使用时,由于差异性造成的漏洞

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

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

题目截图:

开启题目后,访问题目链接与提示相同

对其进行web目录扫描,发现flag.php

提示只可以使用127.0.0.1才可以访问,结合题目提示和前面的知识点实例,很快啊,可以意识到后端cURL请求函数验证如果不是notfound.ctfhub.com即返回Just View From 127.0.0.1

此时若想办法使PHP解析函数parser_url得到的值为127.0.0.1就可以成功绕过限制拿到flag,payload如下

http://notfound.ctfhub.com@127.0.0.1/flag.php

数字IP Bypass

知识点:IP进制转换/Enclosed Alphanumerics/特殊地址

  • IP进制转换:将点分十进制的IP格式转为其他【八进制】【十六进制】等格式

http://127.0.0.1  >>>  http://0177.0.0.1/
http://127.0.0.1  >>>  http://2130706433/
http://192.168.0.1  >>>  http://3232235521/
http://192.168.1.1  >>>  http://3232235777/
  • Enclosed Alphanumerics:由英文字母数字组成的Unicode字符集,位于圆圈,括号或其他未封闭的封闭空间内,或以句号结尾。如下
ⓔⓧⓐⓜⓟⓛⓔ.ⓒⓞⓜ  >>>  example.com
①②⑦.⓿.⓿.①  >>> 127.0.0.1

  • 特殊地址:
http://0/  # 0.0.0.0可以直接访问到本地
http://127。0。0。1  # 绕过后端正则规则
http://localhost/

题目截图:

同样web目录下存在flag.php,必须从本地访问,尝试本地访问flag.php

多次尝试提示127|172|@|\.被禁止,结合题目提示和上述知识点,不讲wood,马上使用十进制整数格式拿到flag

同样,特殊地址也成功

经过验证,以下url值也都可以绕过爆出flag

http://0x7f000001/flag.php
http://localhost/flag.php

302跳转 Bypass

知识点:特殊域名xip.io/短网址

如果后端服务器在接收到参数后,正确的解析了URL的host,并且进行了过滤,这个时候可以尝试使用302跳转的方式来进行绕过

What is xip.io?
xip.io is a magic domain name that provides wildcard DNS
for any IP address. Say your LAN IP address is 10.0.0.1.
Using xip.io,即以如下规则进行域名解析

       10.0.0.1.xip.io   resolves to   10.0.0.1www.10.0.0.1.xip.io   resolves to   10.0.0.1
mysite.10.0.0.1.xip.io   resolves to   10.0.0.1

foo.bar.10.0.0.1.xip.io resolves to 10.0.0.1

短网址:顾名思义就是在形式上比较短的网址,借助短网址您可以用简短的网址替代原来冗长的网址,让使用者可以更容易的分享链接

访问短网址会自动跳转到原来冗长的网址,利用短网址这个特性,我们可以绕过URL参数检测的黑名单

题目截图:

同样的,web目录下存在flag.php,必须从本地访问

提示此内网IP被禁止,尝试使用特殊域名xip.io

观察到应该是对127.0.0.1本身做了过滤,尝试数字IP Bypass中的方式,成功拿到flag

http://0.xip.io/flag.php

我们也可以尝试使用短网址进行转化

# 短网址工具域名: https://www.985.so/
http://127.0.0.1/flag.php ---> http://r6d.cn/b2mk6

使用转化后的短网址访问得到flag

DNS重绑定 Bypass

知识点:DNS重绑定攻击

对于常见的IP限制,后端服务器通过下图的流程进行IP过滤:

根据流程图:对于用户请求的URL参数,首先服务器端会对其进行DNS解析,然后对于DNS服务器返回的IP地址进行判断,如果在黑名单中,就pass掉

但是在整个过程中,第一次去请求DNS服务进行域名解析到第二次服务端去请求URL之间存在一个时间差,利用这个时间差,我们可以进行DNS 重绑定攻击。我们利用DNS Rebinding技术,在第一次校验IP的时候返回一个合法的IP,在真实发起请求的时候,返回我们真正想要访问的内网IP即可

要完成DNS重绑定攻击,我们需要一个域名,并且将这个域名的解析指定到我们自己的DNS Server,在我们的可控的DNS Server上编写解析服务,设置TTL(TTL表示DNS记录在DNS服务器上缓存时间)时间为0,这是为了防止有DNS服务器对第一次的解析结果进行缓存

完整的DNS重绑定攻击流程为:

  1. 服务器端获得URL参数,进行第一次DNS解析,获得了一个非内网的IP
  2. 对于获得的IP进行判断,发现为指定范围IP,则通过验证
  3. 接下来服务器端对URL进行访问,由于DNS服务器设置的TTL为0,所以再次进行DNS解析,这一次DNS服务器返回的是内网地址
  4. 由于已经绕过验证,所以服务器端返回访问内网资源的内容

题目截图:

通过题目附件阅读,结合知识点~,使用测试dns重绑定漏洞的工具,可以让一个域名随机的绑定两个IP

# 工具域名: https://lock.cmpxchg8b.com/rebinder.html# 使用两个IP地址,分别为
163.177.151.109 # 作用:第一次DNS解析后IP判断在指定范围内(随意一个可访问的公网地址)
127.0.0.1       # 作用:第二次DNS解析,不用判断直接访问内网flag.php

设置好两个地址,就会自动生成域名7f000001.a3b1976d.rbndr.us

测试ping域名随机返回两个IP中的一个

到这,我们可以利用Burpsuite中Repeater模块或者爆破模块批量短间隔时间进行请求,当其中两次请求的顺序为:先返回163.177.151.109通过IP验证,后返回127.0.0.1即可获取flag内容

当然也可以直接在浏览器中使用插件(HackBar)或拼手速~

总结

通过4道题目的实践,对常见的Bypass原理与方式有了一定了解,也就可以简单总结下对应防御方法

  • 对于URL Bypass,设置URL白名单,使用URL解析器和URL请求器时避免存在差异性
  • 对于数字IP Bypass,限制内网IP或设置白名单
  • 对于302跳转 Bypass,禁止跳转
  • 对于DNS重绑定 Bypass,考虑使用DNS缓存或者Host白名单,或者设置DNS查询的请求间隔小于TTL值

参考

Web安全基础学习之SSRF漏洞利用

SSRF绕过方法总结

SSRF漏洞中绕过IP限制的几种方法总结

DNS TTL 值理解及配置

SSRF攻击的新角度–利用编程语言中的URL parser

SSRF漏洞之常见Bypass篇相关推荐

  1. SSRF漏洞详解 一文了解SSRF漏洞

    前言 本篇总结归纳SSRF漏洞 1.什么是SSRF 服务器端请求伪造(Server-Side Request Forgery, SSRF) 攻击的目标是从外网无法访问的内部系统 Web应用脚本提供了从 ...

  2. SSRF漏洞原理攻击与防御(超详细总结)

    SSRF漏洞原理攻击与防御 目录 SSRF漏洞原理攻击与防御 一.SSRF是什么? 二.SSRF漏洞原理 三.SSRF漏洞挖掘 四.产生SSRF漏洞的函数 五.SSRF中URL的伪协议 六.SSRF漏 ...

  3. 分享SSRF漏洞的学习和利用

    前言 本文主要记录一次我们在复盘嘶吼网站渗透报告时遇到的一个SSRF漏洞.此漏洞并结合腾讯云的API接口,可以获取大量嘶吼服务器的敏感信息.利用这些敏感信息,又可以进行更为深入的渗透. 这篇文章将会发 ...

  4. weblogic ssrf漏洞复现

    采用的虚拟机环境为ubuntu16.04,在虚拟机上搭建好docker环境.采用的vulhub来进行复现. 使用git来下载,命令为git clone https://github.com/vulhu ...

  5. ssrf漏洞内网渗透_渗透技巧之SSRF

    SSRF--服务端请求伪造,上一篇,我谈到了CSRF客户端请求伪造,这个是我们通过攻击用户,引诱客户点击我们伪造好的表单,从而达到我们攻击的目的,是从客户端发起的,那么SSRF服务端请求伪造当然是通过 ...

  6. web安全---SSRF漏洞

    简介 SSRF:服务器请求伪造,是一种攻击者构造形成由服务端发起请求 的一个安全漏洞.一般情况下,SSRF攻击的目标是从外网无法访问的内部系统(正是因为它是由服务端发起的,所以它能够请求到与它相连而与 ...

  7. SSRF 漏洞危害大,应避免被利用攻击内网应用!| 原力计划

    作者 | Qwzf 责编 | 夕颜 头图 | CSDN付费下载自视觉中国 出品 | CSDN博客 前言 SSRF漏洞和CSRF漏洞有一些相似之处:CSRF跨站请求伪造,基于客户端的请求伪造:SSRF服 ...

  8. VMWare 认证软件存在SSRF漏洞,可用于访问用户数据

     聚焦源代码安全,网罗国内外最新资讯! 编译:代码卫士 VMware 认证软件多个版本中存在一个服务器端请求伪造 (SSRF) 漏洞 (CVE-2021-22056),可导致攻击者获得管理员 JSON ...

  9. PHP代码审计8—SSRF 漏洞

    文章目录 一.SSRF漏洞基础 1.漏洞原理与防御方法 2.引发函数与漏洞场景 3.常见的利用场景 4.常见的防御绕过方法 二.SSRF-labs分析利用 1.file_get_content() 2 ...

最新文章

  1. asp.net 2.0防止同一用户同时登陆
  2. mysql删除开放用户权限
  3. 中国基础软件历史性突破!Gartner最新报告:阿里云进入全球数据库领导者象限
  4. 推荐一简单易用的脑图制作工具
  5. 直方图 (histogram)
  6. 2012 定制化产品探讨(周金根).pdf
  7. eclipse中如何搜索带\的字串
  8. pip卸载旧版本后安装新版本(我是Python3)
  9. R中输出常见位图和矢量图格式总结
  10. 观远数据带你乘云驾“务”,让决策更智能
  11. html制作唯品会登陆页面,唯品会网页登陆页面高清,唯品会网页版登陆页面,唯品会网页登陆页面...
  12. 解决百度云下载缓慢问题
  13. Nginx之——负载均衡、限流、缓存、黑名单和灰度发布
  14. Dev c++无法新建项目解决方法
  15. Codeforces 786A Berzerk(博弈论)
  16. Android电子书阅读器开发笔记(1):创建电子书阅读器项目
  17. Excel工具箱-方方格子
  18. word公式格式排版
  19. 数据库基础原理知识复盘
  20. nlp中mask的意义及如何使用

热门文章

  1. 什么是内存屏障?,为什么需要内存屏障?
  2. 计算机一级wps表格函数,WPS表格函数学习之公式大全(字母顺序).pdf
  3. Sharding-JDBC(二)- Sharding-JDBC介绍
  4. 提前揭秘CJ八大看点
  5. 微信小程序 向下跳动箭头
  6. 如何做出一个微信小程序
  7. OOM系列之一:java.lang.OutOfMemoryError: Java堆空间问题详解
  8. Tensorflow2.0 自定义网络
  9. 2021年中式烹调师(中级)考试内容及中式烹调师(中级)实操考试视频
  10. airbnb房东_麻烦找房东侵入式监视筛查方法可能是罪魁祸首