一、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. 最佳实践丨使用Rancher轻松管理上万资源不是梦!

    前 言 Rancher 作为一个开源的企业级 Kubernetes 集群管理平台.你可以导入现有集群,如 ACK.TKE.EKS.GKE,或者使用 RKE.RKE2.K3s 自定义部署集群. 作为业界 ...

  2. 8、ITSM基本概念(1)

    ITSM即是信息技术服务管理: 8.1.什么是服务: 8.2.RACI模型: 谁负责(R =n Resposible),即负责执行任务的角色,他/她具体负责操控项目.解决问题. 谁批准(A = Acc ...

  3. NoSql非关系型数据库之MongoDB应用(一):安装MongoDB服务

    业精于勤,荒于嬉:行成于思,毁于随. 一.MongoDB服务下载安装(windows环境安装) 1.进入官网:https://www.mongodb.com/,点击右上角的 Try Free  , 2 ...

  4. Docker | Docker常用命令学习笔记

    @ 目录 前言 1. 帮助命令: version.info.help 2. 镜像命令: images.search pull.rmi 3. 容器命令: pull.run ps.exit .ctrl+P ...

  5. Spring:Spring嵌套事务方式

    Spring遇到嵌套事务时,怎么实现 实验时却遇到一个奇怪的问题: 1.当ServiceA.a()方法调用ServiceB.b()方法时,内层事务提交和回滚,都不受外层事务提交或回滚的影响. 2.当S ...

  6. 使用RestTemplate发送post请求,请求头中封装参数

    最近使用RestTemplate发送post请求,遇到了很多问题,如转换httpMessage失败.中文乱码等,调了好久才找到下面较为简便的方法: RestTemplate restTemplate ...

  7. mysql 去重的两种方式

    1.distinct一般用于获取不重复字段的条数 使用原则: 1)distinct必须放在要查询字段的开头,不能放在查询字段的中间或者后面 select distinct name from user ...

  8. python base64(图片)编码

    参考:https://blog.csdn.net/Good_Luck_Kevin2018/article/details/80953312 通常会在网页中遇到用src="data:image ...

  9. linux学习之路第三天

    开机,重启和用户登陆注销 关机&重启命令 shutdown shutdown -h now :表示立即关机 shutdown -h 1 :表示一分钟后关机 shutdown -r now :表 ...

  10. 安装PyTorch后,又安装TensorFlow,CUDA相关问题思考

    下面的话是我的观察和思考,请多多批评. TensorFlow 要用 CUDA.CUDA toolkit.CUDNN,看好版本的对应关系再安装,磨刀不误砍柴工. 1)NVIDIA Panel 里显示的N ...