摘要:SSRF (Server-Side Request Forgery,服务器端请求伪造)是指由攻击者构造请求,然后利用服务器的漏洞以服务端的身份向内网发送请求对内网发起攻击。

本文分享自华为云社区《GaussDB(DWS)安全测试之SSRF漏洞》,作者: ACBD。

1. 什么是SSRF漏洞

SSRF (Server-Side Request Forgery,服务器端请求伪造)是指由攻击者构造请求,然后利用服务器的漏洞以服务端的身份向内网发送请求对内网发起攻击。一般情况下,SSRF攻击的目标是外网无法访问的内部系统,因为请求是服务端发起的,所以服务端就能请求到与其网络通畅而与外网隔离的内网系统。

SSRF漏洞的形成大多是因为服务端可以从其他服务器获取数据,但没有对服务端的请求做校验,导致攻击者通过服务端向服务器发送事先构造好的请求,攻击者把存在漏洞的服务器作为跳板,从而达到访问内网服务器的目的。

如下图所示,服务器A存在SSRF漏洞可被攻击者访问,内网中的其他服务器不能被攻击者直接访问,攻击者就可以向服务器A发送请求,服务器A再向内部服务器发送请求,内部服务器返回数据给服务器A,服务器A再将内部服务器的响应数据返回给攻击者,服务器A作为中间人被攻击者利用,从而达到攻击者的目的。

2. SSRF漏洞常见攻击类型

2.1 本地敏感数据窃取

利用file协议可以访问Web本地文件。如下图所示,在url后面拼接本地服务器文件地址(提前在C:\Users\Public下创建一个文件test.txt,写入内容“This is a test for SSRF!”),即可读取本地文件内容。

2.2 端口探测

在我们利用SSRF漏洞去攻击内网服务器时,并不知道内网中有什么样的应用和IP,也不知道开放了什么端口以及端口对应的服务,此时我们可以利用SSRF漏洞先对内网做IP+端口的扫描。端口的开放、关闭状态不同,响应的返回时间也会有差别,据此就可以判断端口的开放状态。

如下图所示,不同的端口响应时间不同,如果端口的响应时间明显少于其他端口,则该端口很有可能是开放状态。

3. SSRF攻击总结

3.1 SSRF攻击测试思路

SSRF漏洞挖掘一般有两种思路,一种是黑盒的方法,另一种是白盒的方法。

黑盒的方法是找到所有调用外部资源的场景,进行漏洞排查,主要排查点包括

  • 图片加载下载
  • 社交分享功能
  • 文章收藏功能
  • 网站采集
  • 未公开的api接口
  • 从远程服务器请求资源

白盒的方法是从项目支持的网络协议、项目中使用的发起网络请求的类和API以及访问地址中是否有外部可控的变量三个方面进行排查。常见的协议有file、ftp、http、https等,关注能够利用上述协议发起网络请求的类,然后关注传入的变量是否外部可控,如果外部可控则可能存在问题。

3.2 常见的防护措施

  • 网络层面,在URL中过滤掉内网IP,如localhost等。
  • 应用层面,过滤掉不常用且有危险的协议,对返回的内容及报错信息做好处理避免泄露敏感信息,以及对内部访问做二次认证等。

点击关注,第一时间了解华为云新鲜技术~

数仓安全测试之SSRF漏洞的更多相关文章

  1. ssrf漏洞随笔

    一.ssrf漏洞定义 SSRF漏洞:SSRF是一 种由攻击者构造请求,由服务端发起请求的安全漏洞.一般情况下,ssrf攻击的目标是外网无法访问的内部系统 SSRF漏洞( 服务器端请求伪造 )也被称为跨 ...

  2. 【CDH数仓】Day02:业务数仓搭建、Kerberos安全认证+Sentry权限管理、集群性能测试及资源管理、邮件报警、数据备份、节点添加删除、CDH的卸载

    五.业务数仓搭建 1.业务数据生成 建库建表gmall 需求:生成日期2019年2月10日数据.订单1000个.用户200个.商品sku300个.删除原始数据. CALL init_data('201 ...

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

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

  4. SSRF漏洞总结

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

  5. 浅谈SSRF漏洞

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

  6. SSRF漏洞挖掘经验

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

  7. SSRF漏洞浅析

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

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

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

  9. 数仓1.4 |业务数仓搭建| 拉链表| Presto

    电商业务及数据结构 SKU库存量,剩余多少SPU商品聚集的最小单位,,,这类商品的抽象,提取公共的内容 订单表:周期性状态变化(order_info) id 订单编号 total_amount 订单金 ...

  10. 数仓1.1 分层| ODS& DWD层

    数仓分层 ODS:Operation Data Store原始数据 DWD(数据清洗/DWI) data warehouse detail数据明细详情,去除空值,脏数据,超过极限范围的明细解析具体表 ...

随机推荐

  1. 浅析 C# 控制台的 Ctrl+C 是怎么玩的

    一:背景 1. 讲故事 上一篇我们聊到了 Console 为什么会卡死,读过那篇文章的朋友相信对 conhost.exe 有了一个大概的了解,这一篇更进一步聊一聊窗口的特殊事件 Ctrl+C 底层流转 ...

  2. c#中原型模式详解

    基础介绍:   具体可分为2个角色:     Prototype(原型类):声明一个Clone自身的接口:     ConcretePrototype(具体原型类):,实现一个Clone自身的操作. ...

  3. NativeBuffering,一种高性能、零内存分配的序列化解决方案[性能测试篇]

    第一版的NativeBuffering([上篇].[下篇])发布之后,我又对它作了多轮迭代,对性能作了较大的优化.比如确保所有类型的数据都是内存对齐的,内部采用了池化机器确保真正的"零内存分 ...

  4. 接口开放太麻烦?试试阿里云API网关吧

    前言 我在多方合作时,系统间的交互是怎么做的?这篇文章中写过一些多方合作时接口的调用规则和例子,然而,接口开放所涉及的安全.权限.监控.流量控制等问题,可不是简简单单就可以解决的,这一般需要专业的开放 ...

  5. FDA周五发布的药物安全警示信息相对会较少地被媒体传播

    The Friday Effect: Firm Lobbying, the Timing of Drug Safety Alerts, and Drug Side Effects 周五发布的药物安全警 ...

  6. 26. 干货系列从零用Rust编写正反向代理,如何发布Rust项目到Docker

    wmproxy wmproxy已用Rust实现http/https代理, socks5代理, 反向代理, 静态文件服务器,四层TCP/UDP转发,内网穿透,后续将实现websocket代理等,会将实现 ...

  7. Android 的异步消息处理机制

    前言 Android中的异步消息处理机制主要有四部分:Message.Handler.MessageQuene.Looper.这一消息处理机制也称为Handler机制.Handler机制是支撑整个An ...

  8. 用友NCC&WMS&泛微 系统对接案例分享

    用户故事 产品版本:NCC2105 故事是这么开始的,用友全国伙伴社区的社区成员,对我们的多系统集成架构很感兴趣,经常跟我讨论相关系统集成层面的问题:随着企业的发展,由于信息产业的技术含量高,信息系统 ...

  9. maven使用指定的pom文件构建子模块

    有条件的同学建议直接浏览原文: https://stackoverflow.com/questions/33396390/custom-pom-xml-filename-in-maven-multim ...

  10. MVC控制器传值到JS

    1.传递整形数字 1 <script> 2 var data=@ViewBag.ID; 3 </script> 2.传递字符串 1 <script> 2 var d ...