Web 安全之 OOB(Out-of-Band)攻击详解

OOB(Out-of-Band)攻击是指一种网络安全攻击技术,攻击者利用目标系统与外部资源之间的通信来获取信息或检测漏洞是否存在。这种攻击方式不会通过目标系统的直接响应来显示攻击结果,而是通过外部信道(如 DNS、HTTP、SMTP 等)来传递信息。因此,传统的安全测试工具可能难以检测到这类攻击。

什么是 OOB 攻击

OOB 攻击利用了系统的正常通信路径之外的途径来传递恶意数据或指令,从而绕过系统的安全防护措施。这种攻击方式使得攻击者能够在不被常规监控系统检测到的情况下,实现对目标系统的入侵和控制。OOB 攻击的名称来源于“Out-of-Band”(超出常规通信路径),表明攻击者使用了与正常通信路径不同的方式来与目标系统交互。OOB 中几个核心概念如下:

  1. Out-of-Band 通信:指目标系统与外部服务之间的通信,这种通信通常不会直接反映在应用程序的响应中。例如,应用程序可能会在处理请求时向外部服务器发送 DNS 查询或 HTTP 请求。
  2. Payload 投递:攻击者向应用程序中注入特定的 payload,这些 payload 被设计用于触发与外部系统的通信。例如,在表单输入中注入一个恶意的 URL,导致服务器向该 URL 发起请求。
  3. 外部监控:攻击者设置一个外部服务(如 DNS 服务器、SMTP 服务器或 HTTP 服务器等),用于接收和记录来自应用程序的 OOB 请求。通过分析这些请求,攻击者可以获取有价值的信息。

常见的 OOB 攻击类型

  1. SSRF(Server-Side Request Forgery):攻击者诱使服务器向他们控制的地址发送请求,从而获取内部网络信息或执行其他恶意操作。例如,通过注入一个恶意的 URL,服务器会向攻击者的服务器发送请求,泄露内部网络信息。
  2. XXE(XML External Entity):攻击者通过 XML 实体注入,访问服务器上的本地文件或与外部服务器进行通信。例如,通过注入一个外部实体引用,服务器会解析并访问攻击者控制的外部资源。
  3. Blind SQL Injection:某些 SQL 注入攻击不会在目标系统的响应中直接反映出结果,但可以通过 OOB 通信渠道获取数据。例如,通过注入一个恶意的 SQL 查询,服务器会向攻击者控制的服务器发送请求,泄露数据库信息。
  4. RCE(Remote Code Execution):通过注入恶意代码,攻击者可以远程执行服务器上的命令,并通过 OOB 通信渠道获取执行结果。例如,通过注入一个恶意的命令,服务器会执行并将结果发送到攻击者的服务器。

OOB 攻击步骤

一次 OOB 攻击一般会包含如下几步:

  1. 配置外部监控服务:设置一个外部服务器,用于接收和记录 OOB 请求。可以使用 Burp Suite Collaborator、DNSLog、Interact.sh 等工具。
  2. 注入 payload:在目标系统的输入点注入特定的 payload,这些 payload 设计用于触发外部通信。例如,在 URL 参数、HTTP 头部或 XML 数据中注入恶意的 URL。
  3. 监控外部请求:通过外部监控服务捕获来自目标系统的 OOB 请求。分析这些请求的内容,以识别潜在的安全问题。
  4. 验证和利用漏洞:根据捕获到的 OOB 请求,验证漏洞的存在,并尝试进一步利用。例如,通过 SSRF 漏洞访问内部资源,或通过 XXE 漏洞读取服务器上的敏感文件。

OOB 攻击示例

举个利用 HTTP 请求泄露信息的例子,假设一个Web应用程序在处理用户上传文件时,会根据文件的内容向一个远程服务器发送请求以获取额外的信息。攻击者可以控制这个远程服务器来收集信息。步骤如下:

  1. 攻击者控制一个 HTTP 服务器,例如 attacker[.]example[.]com.
  2. 攻击者构造一个恶意文件并上传。
  3. 应用程序根据文件内容向 attacker[.]example[.]com 发送请求。
  4. 攻击者通过监控请求来收集信息。

如何防范 OOB 攻击

为了防范 OOB 攻击,需要采取一些措施,包括但不限于以下几条:

  • 对所有用户输入的内容进行严格的校验和过滤。
  • 限制应用程序对外部系统的请求,只允许必要的通信。
  • 在设计阶段就考虑安全性,避免不必要的外部通信。
  • 定期进行安全审计,包括代码评审和渗透测试。

小结

OOB 攻击是一种比较有隐蔽性的网络攻击手段,通过理解和掌握 OOB 攻击的技术和原理,可以更好地识别和修复这些漏洞,提高应用程序的整体安全性。

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

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

相关文章

用python解释进程与协程(python实例二十八)

目录 1.认识Python 2.环境与工具 2.1 python环境 2.2 Visual Studio Code编译 3.创建进程池,异步执行多个任务 3.1 代码构思 3.2 代码示例 3.3 运行结果 4. 模拟协程堵塞 4.1 代码构思 4.2 代码示例 4.3 运行结果 5.总结 1.认识Python Python 是一个高…

Javascript前端面试(七)

JavaScript 部分 1. JavaScript 有哪些数据类型,它们的区别? JavaScript 共有八种数据类型,分别是 Undefined、Null、Boolean、 Number、String、Object、Symbol、BigInt。 其中 Symbol 和 BigInt 是 ES6 中新增的数据类型: ●Sym…

指标体系建设的方法论

一、分析痛点 了解当前数仓侧与业务应用方对指标到不到、难使用的痛点及日常指标使用习惯,制定指标中心所需功能并设计指标中心样式。 二、指定指标规范 定义指标类型、指标使用方、确定指标域(这里是数据域)、指标要具备的属性(业务/技术口径、负责人、类型等)。 …

多元多项式方程组任意精度求解程序

项目地址: https://gitee.com/tianwangwxm/polynomial-equation运行结果 D:\src\Twwxm2DKernel\cmake-build-release-cygwin\TwWxm2DKernel.exe 已知方程组: ───────────────────────────────────────────…

04-Charles中的Map Remote和Map Local介绍

Charles提供了Map Remote和Map Local两个功能。 Map Remote是将指定的网络请求重定向到另一个网址。Map Local是将指定的网络请求重定向到本地文件。 一、Map Remote 假设代码中调用了接口A,但是接口A的响应结果不能满足需求;此时,有另一个…

SAPUI5基础知识18 - 自定义CSS和主题色

1. 背景 在上一篇博客中,我们通过使用SAPUI5提供的CSS类实现元素间距的调整。在本篇博客中,让我们看一下如何实现自定义的CSS样式。 2. 背景知识 2.1 CSS基础语法 CSS,全称为级联样式表(Cascading Style Sheets)&a…

【更新2023】省级农林牧渔业产值面板数据 含分项 1949-2023

省级农林牧渔业产值面板数据是研究农业经济和区域发展的重要资源。这些数据可以被用来分析不同省份间农业产值的时空变化及其影响因素,探讨政策对农业发展的影响,评估农业现代化和可持续发展水平,以及比较不同地区农业产值的竞争力和效率。此…

python学习笔记——字符串

一、创建字符串 1.我们可以使用引号( 或 " )来创建字符串。创建字符串很简单,只要为变量分配一个值即可。 var1 Hello World! var2 "Runoob" 二、访问字符串中的值 1.Python 访问子字符串,可以使用方括号 [] 来截取字符串。…

在Android上实现汉字笔顺动画效果——HanZiWriter

序,万般皆是命,半点不由人。 Hanzi Writer 是 javascript 免费开源库,根据汉字书写时按照笔画顺序的特征,可以播放正确笔画顺序的描边动画和练习测试。支持简体字和繁体字。可以让全球用户能够通过手绘模仿的方式来学习和练习书写…

gym105139C

题意:网格图上面有一个区域,你要用最少的不相交的矩形精确覆盖整个区域。 我们将精确覆盖看成切割,也就是将这个区域切成最少的矩形。 首先,我们将270的角称为凹点,90的角称为凸点,很明显我们的目标是要把…

Python网络爬虫详解:实战豆瓣电影信息采集

文章目录 前言一、爬虫是什么?二、常用库及其作用1.Requests2.BeautifulSoup3. lxml4. Scrapy5. Selenium6. PyQuery7. Pandas8. JSON9. Time 三、实现步骤步骤一:环境准备步骤二:数据采集步骤三:数据处理步骤四:数据存…

算法日记day 19(找树左下角的值|路径总和)

一、找树左下角的值 题目: 给定一个二叉树的 根节点 root,请找出该二叉树的 最底层 最左边 节点的值。 假设二叉树中至少有一个节点。 示例 1: 输入: root [2,1,3] 输出: 1示例 2: 输入: [1,2,3,4,null,5,6,null,null,7] 输出: 7 思路:…

[Windows CMD] 检测网络连通性 ping

ping 是一个非常常用的网络工具,用于测试网络连接的可达性和测量网络延迟。它通过发送 ICMP (Internet Control Message Protocol) Echo Request 数据包到目标主机,并等待接收回显应答 (Echo Reply) 来工作。ping 命令可以帮助您快速检测网络问题&#x…

LinkedList 实现 LRU 缓存

LRU(Least Recently Used,最近最少使用)缓存是一种缓存淘汰策略,用于在缓存满时淘汰最久未使用的元素。 关键: 缓存选什么结构? 怎么实现访问顺序? import java.util.*;public class LRUCac…

2021真题-架构师案例(四)

问题1(16分) 针对该系统功能,赵工建议解释器架构风格,李工建议管道过滤架构风格,王工则建议饮食调用,该系统从灵活性和可扩展性考虑,应采用哪种? 解析: 管道-过滤器&am…

lua 游戏架构 之 游戏 AI (九)ai_mgr Ai管理

定义ai_mgr的类,用于管理游戏中实体的AI组件。 先定义 AI行为枚举和优先级: lua 游戏架构 之 游戏 AI (八)ai_tbl 行为和优先级-CSDN博客https://blog.csdn.net/heyuchang666/article/details/140712839?spm1001.2014.3001.55…

汕头 西月 公司的面试

1;常用的框架,tp 他的特性 2:事务,的使用的场景。 3:redis 的使用的场景 。 4:redis 集合使用的场景

软设之数据库规范化理论——模式分解

数据库规范化理论之模式分解 数据库进行分解,一个是保持函数依赖分解 假定数据库模式Q{R1,R2,R3,~~~RK}是关系模式R的一个分解,F是R上的函数依赖集,P中的每个模式RI上的FD集是Fi。如果{F1,F2,~~~&#xf…

【音视频】WebRTC的简介并使用WebRTC并直播本地

文章目录 前言WebRTC 是什么WebRTC 的主要组件为什么要使用 WebRTCWebRTC 的应用示例使用ffmpeg直播本地步骤 1:使用 FFmpeg 录制本地桌面视频并通过 WebSocket 传输步骤 2:设置 WebSocket 服务器安装 Node.js 和 npm创建 WebSocket 服务器 步骤 3&#…

[原理] 可变性卷积(deformable convolution)原理及代码解释

文章目录 前言提出问题核心思想代码理解模块初始化forward过程self.p_convself._get_pself._get_x_qself._reshape_x_offset 参考文献 前言 代码见:https://github.com/4uiiurz1/pytorch-deform-conv-v2/blob/master/deform_conv_v2.py 论文:https://ar…