一、ssrf漏洞定义

SSRF漏洞:SSRF是一 种由攻击者构造请求,由服务端发起请求的安全漏洞。一般情况下,ssrf攻击的目标是外网无法访问的内部系统

SSRF漏洞( 服务器端请求伪造 )也被称为跨站点端口攻击,主要用于端口扫描 。

二、ssrf漏洞产生原因

SSRF漏洞产生的原因是由于服务端提供了从其他服务器应用获取数据的功能且没有对地址和协议等做过滤和限制

三、ssrf漏洞原理

SSRF原理:大多是由于服务端提供了从其他服务器应用获取数据的功能且没有对目标地址做过滤与限制,从而导致出现了SSRF漏洞,导致本地文件泄露,可以攻击到内网,获取账号密码等信息。

四、ssrf漏洞常用函数

协议: file协议, gopher协议,dict协议,sftp协议,tftp协议,http/https协议,ldap协议

五、ssrf漏洞危害

1、可以对服务器所在的内网、本地进行端口扫描,获取一些服务的banner信息

2、攻击运行在内网或本地的应用程序(比如溢出)

3、对内网web应用进行指纹识别,通过访问应用存在的默认文件实现;

4、攻击内外网的web应用,主要是使用get参数就可以实现的攻击(比如struts2漏洞利用等)

5、利用file协议读取本地文件

6、利用Redis未授权访问,HTTP CRLF注入达到getshell

7、DOS攻击(请求大文件,始终保持连接keep alive always)等等

六、ssrf漏洞可能出现的地点

1、 通过url地址分享网页内容功能处

2、转码服务

3、在线翻译

4、图片加载与下载(一般通过url地址加载或下载图片处)

5、图片、文章收藏功能

6、未公开的api实现以及其他调用url的功能

7、云服务器商(它会远程执行一些命令来判断网站是否存活等,所以如果可以捕获相应的信息,就可以进行ssrf测试)

8、有远程图片加载的地方(编辑器之类的远程图片加载处)

9、网站采集、网页抓取的地方(一些网站会针对你输入的url进行一些信息采集工作)

10、头像处(某易就喜欢远程加载头像,例如:http://www.xxxx.com/image?url=http://www.image.com/1.jpg)

11、邮件系统(比如接收邮件服务器地址)

12、编码处理, 属性信息处理,文件处理(比如ffpmg,ImageMagick,docx,pdf,xml处理器等)

13、从远程服务器请求资源(upload from url 如discuz!;import & expost rss feed 如web blog;使用了xml引擎对象的地方 如wordpress xmlrpc.php)

七、如何验证ssrf漏洞

1、排除法:浏览器f12查看源代码看是否是在本地进行了请求

比如:该资源地址类型为 http://www.xxx.com/a.php?image=URL,URL参数若是其他服务器地址就可能存在SSRF漏洞

2、dnslog等工具进行测试,看是否被访问(可以在盲打后台,用例中将当前准备请求的url和参数编码成base64,这样盲打后台解码后就知道是哪台机器哪个cgi触发的请求)

3、抓包分析发送的请求是不是通过服务器发送的,如果不是客户端发出的请求,则有可能是存在漏洞。接着找存在HTTP服务的内网地址

  3.1、从漏洞平台中的历史漏洞寻找泄漏的存在web应用内网地址

  3.2、通过二级域名暴力猜解工具模糊猜测内网地址

  3.3、通过file协议读取内网信息获取相关地址

4、直接返回的Banner、title、content等信息

5、留意布尔型SSRF,通过判断两次不同请求结果的差异来判断是否存在SSRF,类似布尔型sql盲注方法。

八、ssrf漏洞的绕过方法

1、直接攻击本地地址,127.0.0.1

2、利用[::]绕过localhost,http://[::]:80/ >>> http://127.0.0.1

3、@绕过,http://example.com@127.0.0.1

4、短地址绕过,http://dwz.cn/11SMa >>> http://127.0.0.1

5、使用特效域名绕过( DNS解析 ),http://127.0.0.1.xip.io/

6、利用DNS解析, 在域名上设置A记录,指向127.0.0.1

7、修改"type=file"为"type=url",如:上传图片处修改上传,将图片文件修改为URL

8、利用Enclosed alphanumerics

9、使用句号绕过,127。0。0。1 >>> 127.0.0.1

10、利用进制转换绕过,115.239.210.26 >>> 016373751032

方法:将这个IP地址的4位十进制数分别转换成16进制数,然后将这个16进制数转换一起转为8进制数

八进制在最前面加0,十六进制在最前面加0x

11、使用特效地址绕过,http://0/

12、使用相关协议绕过, file协议, gopher协议,dict协议等相关协议

13、30x跳转绕过

14、多种绕过方法一同组合使用, 各种绕过进行自由组合

九、SSRF新型攻击手法的流程

1. 利用服务器发起一个 HTTPS 请求。
2. 请求时会发起一个 DNS 解析请求,DNS 服务器回应一个 TTL 为 0 的结果,指向攻击者的服务器。
3. 攻击者服务器响应请求,并返回一个精心构造过的 SessionID,并延迟几秒后回应一个跳转。
4.客户端接收到这个回应之后会进行跳转,这次跳转时由于前面那一次 DNS 解析的结果为 TTL 0,则会再次发起一次解析请求,这次返回的结果则会指向 SSRF 攻击的目标

举例:例如本地的memcache数据库
5. 因为请求和跳转时的域名都没有变更,本次跳转会带着之前服务端返回的精心构造过的 SessionID 进行,发送到目标的那个端口上。
6. 则达到目的,成功对目标端口发送构造过的数据,成功 SSRF。

十、如何防御和修复ssrf漏洞

1、过滤返回信息,验证远程服务器对请求的响应是比较容易的方法。

2、在返回结果展示给用户之前先验证返回的信息是否符合标准。

3、禁用不需要的协议,仅仅允许http和https请求。

4、设置URL白名单, 对URL参数进行过滤,或者使得URL参数用户不可控

5、限制内网IP(使用gethostbyname( )判断是否为内网IP)

6、限制请求的端口为http常用的端口,比如 80、443、8080、8090

7、统一配置错误信息,避免用户可以根据错误信息来判断远程服务器的端口状态

8、 去除url中的特殊字符 ,更改ip地址写法,严格检验服务器的请求

9、 如果是域名的话,将url中的域名改为ip,对协议和地址进行验证(http改为ip,防止dns rebinding)

10、请求的url为3中返回的url

11、请求时设置host header为ip,防止以ip请求时,某些网站无法访问的问题

12、 不跟随30x跳转(跟随跳转需要从1开始重新检测)

ssrf漏洞随笔的更多相关文章

  1. WebLogic SSRF 漏洞 (简要翻译)

    [Ref]http://blog.gdssecurity.com/labs/2015/3/30/weblogic-ssrf-and-xss-cve-2014-4241-cve-2014-4210-cv ...

  2. SSRF漏洞总结

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

  3. 浅谈SSRF漏洞

    SSRF漏洞是如何产生的? SSRF(Server-Side Request Forgery:服务器端请求伪造) 是一种由攻击者构造形成由服务端发起请求的一个安全漏洞.一般情况下,SSRF是要目标网站 ...

  4. SSRF漏洞挖掘经验

    SSRF概述 SSRF(Server-Side Request Forgery:服务器端请求伪造) 是一种由攻击者构造形成由服务端发起请求的一个安全漏洞.一般情况下,SSRF攻击的目标是从外网无法访问 ...

  5. SSRF漏洞浅析

    大部分web应用都提供了从其他的服务器上获取数据的功能,如使用用户指定的URL,web应用可以获取图片,下载文件,读取文件内容等.如果服务端提供了从其他服务器应用获取数据的功能且没有对目标地址做过滤与 ...

  6. weblogic系列漏洞整理 -- 5. weblogic SSRF 漏洞 UDDI Explorer对外开放 (CVE-2014-4210)

    目录 五. weblogic SSRF 漏洞 UDDI Explorer对外开放 (CVE-2014-4210) 1. 利用过程 2. 修复建议 一.weblogic安装 http://www.cnb ...

  7. SSRF漏洞

    概念:服务端在获取攻击者输入的url时,如果这个过程中,服务端并没有对这个url做任何的限制和过滤,那么就很有可能存在ssrf漏洞. 漏洞利用:SSRF攻击的目标一般是外网无法访问的内部系统.攻击者可 ...

  8. 一个网络设备的常见功能--连通性检查SSRF漏洞--被黑客利用当做扫描器

    一.我们先来看一下很多网络设备都有的一个常见功能--连通性测试: 很多网络设备都具备与其他设备通信,联动的功能,例如网络设备联动安全设备,网络设备联动认证设备等等.此时都需要一个对端IP和对端端口号作 ...

  9. SSRF漏洞的挖掘经验

    本文转自:https://sobug.com/article/detail/11 SSRF概述 SSRF(Server-Side Request Forgery:服务器端请求伪造) 是一种由攻击者构造 ...

随机推荐

  1. Windows10 上Docker 安装运行Gitlab

    准备条件 安装好Docker For Windows客户端. 配置好Docker 阿里云加速镜像地址. 检查Docker版本,大于等于v19. 拉取Gitlab镜像 docker pull gitla ...

  2. VS 2017 RC .net core ef+ MySql 出现错误

    在di注入时会出现错误 MySql.Data.EntityFrameworkCore.Storage.Internal.MySQLCommandBuilderFactory..ctor(ISensit ...

  3. Hibernate框架(二)POJO对象的操作

    POJO对象其实就是我们的实体,这篇博客总结一下框架对POJO对象对应数据库主键的生成策略,和一些对POJO对象的简单增删改查的操作. 一,Hibernate框架中主键的生成策略有三种方式: 1,数据 ...

  4. 远程连接Linux上的MongoDB服务

    1.Linux环境上安装好MongoDB,并配置好环境变量 2.启动MongoDB 注:mongod /opt/michael/mongodb/mongodb-linux-x86_64-4.0.5/d ...

  5. DNS域名解析四种配置实验 ---Linux DNS域名解析服务

    DNS域名解析服务一.BIND域名服务基础1) DNS的定义2)域名结构3)DNS系统的作用① 正向解析:根据域名查找对应的IP地址② 反向解析:根据IP地址查找对应的域名③ DNS系统的分布式数据结 ...

  6. 如何统计自动化测试用例的ROI 【投入产出比/投资回报率】

    一. 自动化测试的投入有哪些? 1. 自动化测试的软件平台投入 自动化测试平台的开发时间,实施时间. 2.  自动化测试的框架开发投入+框架维护的投入 开发自动化测试脚本使用的框架,例如通过一些现有框 ...

  7. 根据序列号查IP

    def getIP():#得到当前电脑IP import socket s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) s.connect(( ...

  8. [刘阳Java]_MySQL数据优化总结_查询备忘录

    数据库优化是在后端开发中必备技能,今天写一篇MySQL数据优化的总结,供大家看看 一.MySQL数据库优化分类 我们通过一个图片形式来看看数据优化一些策略问题 不难看出,优化有两条路可以选择:硬件与技 ...

  9. 关于 junit4 90% 的人都不知道的特性,详解 junitperf 的实现原理

    前言 上一节介绍了 https://github.com/houbb/junitperf 的入门使用. 这一节我们从源码的角度,剖析一下其实现方式. 性能测试该怎么做? Junit Rules jun ...

  10. .NET6 preview is coming

    快速升级.NET 6.0 本文发布文章,只是证明,从5.0到6.0还是那么简单.其实官网永远是最好的老师,你可以直接看官网: https://docs.microsoft.com/zh-cn/aspn ...