SSRF漏洞是什么,如何进行有效防护

SSRF全称:Server-Side Request Forgery,即,服务器端请求伪造。是一个由攻击者构造请求,在目标服务端执行的一个安全漏洞。攻击者可以利用该漏洞使服务器端向攻击者构造的任意域发出请求,目标通常是从外网无法访问的内部系统。简单来说就是利用服务器漏洞以服务器的身份发送一条构造好的请求给服务器所在内网进行攻击。

一、SSRF漏洞形成原理

很多网站提供了从其他的服务器上获取数据的功能。通过指定的URL,网站可以从其他地方获取图片、下载文件、读取文件内容等。SSRF的实质就是利用存在缺陷的Web站点作为代理攻击远程和本地的服务器。

SSRF漏洞形成的原因大都是由于服务端提供了从其他服务器获取数据的功能但没有对目标地址做过滤与限制。攻击者可以利用改漏洞获取内部系统的一些信息(因为它是由服务端发起的,所以它能够请求到与它相连而与外网隔离的内网系统)。

二、SSRF漏洞主要的攻击方式

当攻击者想要访问服务器B上的服务,但是由于存在防火墙或者服务器B是属于内网主机等原因导致攻击者无法直接访问。如果服务器A存在SSRF漏洞,这时攻击者可以借助服务器A来发起SSRF攻击,通过服务器A向主机B发起请求,达到攻击内网的目的。

三、SSRF漏洞的危害

1.对外网、服务器所在内网、本地进行端口扫描

2.向内部任意主机的任意端口发送payload来攻击内网服务

3.DOS攻击(请求大文件,始终保持连接Keep-Alive Always)

4.攻击内网的web应用,如直接SQL注入、XSS攻击等

5.利用file、gopher、dict协议读取本地文件、执行命令等

四、SSRF与CSRF的区别

CSRF是服务器端没有对用户提交的数据进行随机值校验,且对http请求包内的refer字段校验不严,导致攻击者可以利用用户的cookie信息伪造用户请求发送至服务器;

SSRF是服务器对用户提供的可控URL过于信任,没有对攻击者提供的URL进行地址限制和足够的检测,导致攻击者可以以此为跳板攻击内网或者其它服务器由攻击者构造的攻击链接传给服务端执行造成的漏洞,一般用来在外网探测或攻击内网服务

内网服务防御相对外网服务来说一般会较弱,甚至部分内网服务为了运维方便并没有对内网的访问设置权限验证,所以存在SSRF时,通常会造成较大的危害。如何进行漏洞检测成为必不可少的关键:

1、漏洞验证

因为SSRF漏洞是构造服务器发送请求的安全漏洞,所以我们可以通过抓包分析发送的请求是否是由服务器端发送的来判断是否存在SSRF漏洞。

在页面源码中查找访问的资源地址,如果该资源地址类型为http://www.xxx.com/a.php?image=地址就可能存在SSRF漏洞。

2、漏洞的可能出现点

(1) 分享功能:通过URL地址分享文章等,例如如下地址:

http://share.xxx.com/index.php?url=http://www.xxx.com

通过url参数的获取来实现点击链接的时候跳到指定的分享文章。如果在此功能中没有对目标地址的范围做过滤与限制则就存在着SSRF漏洞。

(2)图片加载/下载:通过URL地址加载或下载图片:

http://image.xxx.com/image.php?image=http://www.xxx.com

图片加载存在于很多的编辑器中,编辑器上传图片处加载设定好的远程服务器上的图片地址,如果没对加载的参数做限制可能造成SSRF。

(3)图片/文章收藏功能:

http://title.xxx.com/title?title=http://title.xxx.com/xxx

例如 title参数是文章的标题地址,代表了一个文章的地址链接,如果收藏功能采用了此种形式保存文章,则在没有限制参数的形式下可能存在SSRF。

(4)转码服务:通过URL地址把原地址的网页内容调优使其适合手机屏幕浏览。

(5)在线翻译:给网址翻译对应网页的内容。

(6)邮件系统:比如接收邮件服务器地址。

(7)利用参数中的关键字查找:

关键字:

share、wap、url、link、src、source、target、u、3g、display、sourceURl、imageURL、domain...

总的来说,需要从远程服务器请求资源的网站都有可能存在SSRF漏洞。

部分存在漏洞,或者可能产生SSRF的功能中做了白名单或者黑名单的处理,来达到阻止对内网服务和资源的攻击和访问。因此想要达到SSRF的攻击,需要对请求的参数地址做相关的绕过处理,常见的绕过方式如下:

1、绕过限制为某种域名:

利用@,当网站限制只能访问 http://www.xxx.com类型的域名时,可以采用http基本身份认证的方式绕过,如:http://www.xxx.com@www.xxc.com

在对@解析域名中,不同的处理函数存在处理差异,例如:

http://www.aaa.com@www.bbb.com@www.ccc.com

在PHP的parse_url中会识别 www.ccc.com,而libcurl则识别为 www.bbb.com。

2、绕过限制请求IP不为内网地址:

(1)采用短网址绕过

(2)采用进制转换,127.0.0.1 八进制:0177.0.0.1;十六进制:0x7f.0.0.1;十进制:2130706433

(3)利用[::]http://[::]:80/ 会解析为 http://127.0.0.1

(4)添加端口号,http://127.0.0.1:8080

(5)利用句号,127。0。0。1 会解析为 127.0.0.1

3、限制请求只为http协议:

(1)采用302跳转

(2)采用短地址

五、如何预防SSRF漏洞攻击

1、严格校验用户输入的URL,可以使用白名单过滤来限制输入,只允许特定的协议、主机和端口,列如限制请求的端口为 http 常用的端口,80、443、8080、8090 等。

2、不要把原始的响应数据返回给客户端,且过滤返回信息,在把返回结果展示给用户之前先验证返回的信息是否符合标准。

3、限制Web应用程序的网络访问权限,可以让远程资源访问功能使用单独的网络。

4、限制Web应用能够访问的URL范围,避免访问内网或其他敏感地址。可以配置网络访问控制列表(ACL),限制Web应用只能访问指定的外部服务。

5、建立安全监控机制,对网站进行安全监测,对业务系统进行安全监测,可以及时发现和响应潜在的安全漏洞。

网站安全监测可以对企事业单位业务系统(包括但不限于网站、小程序、API、APP)全生命周期、持续性、多维度监测的新一代云监测产品。通过结合大数据平台及404实验室安全能力,为客户提供业务系统漏洞监测、可用性监测、SSL监测、安全事件监测、内容合规监测、业务系统资产发现等多项监测能力,帮助客户全面掌握业务系统风险态势。主要的服务内容包括业务系统资产发现和业务系统漏洞监测。

业务系统资产发现:

1.可用性监测

HTTP监测

Ping监测

状态码监测

源站监测

2.安全事件监测

外链监测

坏链监测

挂马监测

挖矿监测

暗链监测

业务系统漏洞监测:

1.SSL监测

协议漏洞监测

SSL证书监测

2.内容合规监测

敏感信息监测

隐私信息监测

除此之外,网站安全监测拥有四大核心能力:

1.集众家之所长,新型漏洞感知全面

安全智脑每天对来自全球4亿+的攻击流量分析学习,持续赋能云监测(ISSM)目前累计支持10万+漏洞检测,并持续更新中。

2.404实验室安全能力加持

云监测(ISSM)是由德迅云安全倾力打造的新一代业务系统立体监测平台,协同联动Seebug漏洞社区近10万漏洞及5万PoC信息,持续不断提供全面、精准的安全监测能力。

3.智能网站业务画像监测

基于大数据持续对业务系统进行网站画像监测,精细化监测每个URL及参数,及时发现业务系统所有监测点,实现全量、增量、专项等多种精准扫描,覆盖度全面,扫描效率更高。

4.分布式监测

基于智能监测分波算法对全国超50个监测节点智能任务分配,适应不同运营商、不同线路的网络状况,模拟真实的网络环境,提供精准、迅速的监测结果,并通过可视化风险评估报表、安全报告及风险告警等手段构建完善监测体系。

总之,SSRF漏洞比CSRF漏洞的利用的局限性要小,并且SSRF漏洞对内网的一些应用危害比较大。所以在开发过程中,警惕大家要尽量避免产生SSRF漏洞。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/652448.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Ubuntu2004 CMake 使用基础

一、环境安装 win10安装wsl ubuntu2004 #windows c盘工程目录建立软链 ln -s /mnt/c /home/vrviu/ 安装cmake、c编译工具 apt install -y cmake g 二、CMakeLists.txt讲解 准备工作 首先,在/home/vrviu 目录建立一个 cmake 目录 以后我们所有的 cmake 练习都会放…

一文掌握Vue3:深度解读Vue3新特性、Vue2与Vue3核心差异以及Vue2到Vue3转型迭代迁移重点梳理与实战

每次技术革新均推动着应用性能与开发体验的提升。Vue3 的迭代进步体现在性能优化、API重构与增强型TypeScript支持等方面,从而实现更高效开发、更优运行表现,促使升级成为保持竞争力与跟进现代前端趋势的必然选择。本文深度解读Vue3 响应式数据data、生命…

稳态视觉诱发电位 (SSVEP) 分类学习系列 (4) :Temporal-Spatial Transformer

稳态视觉诱发电位分类学习系列:Temporal-Spatial Transformer 0. 引言1. 主要贡献2. 提出的方法2.1 解码的主要步骤2.2 网络的主要结构 3. 结果和讨论3.1 在两个数据集下的分类效果3.2 与基线模型的比较3.3 消融实验3.4 t-SNE 可视化 4. 总结欢迎来稿 论文地址:http…

【Elasticsearch<二>✈️✈️】基本属性概念与MySQL数据库的不同之处

目录 🍸前言 🍻一、Elasticsearch 基本属性 1.1 ES VS MySQL 1.2 ES 属性概念 1.3 ES 的增删改查 🍺二、自动补全场景 2.1 场景举例 2.2 使用数据分词器 2.3 查询的流程 2.4 整个查询流程图 🍹章末 🍸前言 上次初步…

[C++ QT项目实战]----C++ QT系统实现多线程通信

前言 在C QT中,多线程通信原理主要涉及到信号与槽机制和事件循环机制。 1、信号与槽机制: 在QT中,信号与槽是一种用于对象间通信的机制。对象可以通过发送信号来通知其他对象,其他对象通过连接槽来接收信号并进行相应的处…

微信小程序:12.页面导航

什么是页面导航 页面导航指的是页面之间的相互跳转。例如,浏览器中实现的页面导航的方式有两种: 连接location.href 小程序中实现页面导航的两种方式 声明式导航 在页面上声明一个导航组件 通过点击组件实现页面跳转 导航TabBar页面 是指配置TabB…

mac 教程 终端如何拆墙

一直觉得自己写的不是技术,而是情怀,一个个的教程是自己这一路走来的痕迹。靠专业技能的成功是最具可复制性的,希望我的这条路能让你们少走弯路,希望我能帮你们抹去知识的蒙尘,希望我能帮你们理清知识的脉络&#xff0…

C语言:一维数组、二维数组、字符数组介绍

数组 介绍一维数组定义应用方法初始化 举例示例结果 二维数组定义应用方法初始化 举例示例结果 字符数组定义应用方法初始化 举例示例结果分析 介绍 在C语言中,数组是一种基本的数据结构,用于存储一系列相同类型的数据。数组可以是多维的,最…

Android --- 网络请求

通常在 Android 中进行网络连接一般使用 Scoket 和HTTP,HTTP 请求方式比 Scoket 多。HTTP 请求一般采用原生的 HttpClient 和 HttpUrlConnection 的两种网络访问方式(系统自带的)。但是在 Android 5.0 的时候 Google 就不推荐使用 HttpClient…

Bytebase 2.16.0 - 支持 Oracle 和 SQL Server DML 变更的事前备份

🚀 新功能 支持 Oracle 和 SQL Server DML 变更的事前备份。 支持在 SQL 编辑器中显示存储过程和函数。 支持兼容 TDSQL 的 MySQL 和 PostgreSQL 版本。 支持把数据库密码存储在 AWS Secrets Manager 和 GCP Secret Manager。 支持通过 IAM 连接到 Google Clou…

Java | Leetcode Java题解之第52题N皇后II

题目&#xff1a; 题解&#xff1a; class Solution {public int totalNQueens(int n) {Set<Integer> columns new HashSet<Integer>();Set<Integer> diagonals1 new HashSet<Integer>();Set<Integer> diagonals2 new HashSet<Integer>…

ArcGIS小技巧—一文带你理清个人地理数据库和文件地理数据库

不知各位GISer在使用Arcgis软件时是否会遇到这样一个问题&#xff0c;在新建一个地理数据库来存放要素数据集时会有文件地理数据库和个人地理数据库两种&#xff0c;那么&#xff0c;这两种地理数据库有何区别呢&#xff1f; 首先&#xff0c;我们先来看看地理数据库的定义&…