利用漏洞实现 Outlook 的 RCE:第一部分

news2024/9/22 10:08:36

概述

2023 年 3月补丁星期二解决的漏洞中,有一个是Outlook 的一个严重漏洞,编号为CVE-2023-23397,该漏洞被 Forest Blizzard 在野利用,微软已将其确定为俄罗斯国家支持的威胁行为者。2023 年 12 月,微软与波兰网络司令部 (DKWOC) 联合发布消息称,他们发现同一威胁行为者最近试图利用该漏洞。该漏洞允许攻击者强迫 Outlook 客户端连接到攻击者的服务器。作为此连接的一部分,客户端会将其 NTLM 凭据发送给攻击者,攻击者随后可以离线破解这些凭据,或者在中继攻击中使用它们。此漏洞可以通过互联网远程利用,无需任何用户交互(零点击)。

在针对此漏洞的补丁发布后,我们发现了一种绕过方法,我们在之前的博客文章中描述了这种方法。此绕过方法已在 2023 年 5 月的补丁星期二修复。在那篇文章中,我们建议 Microsoft 删除被滥用的功能,因为它引入了一个庞大而复杂的攻击面。由于该功能仍保留在 Outlook 中,我们决定进一步调查。

最终,我们能够在 Outlook 上实现完整的 RCE 漏洞链。我们发现了原始 Outlook 漏洞的另一个绕过方法 — 这种方法再次允许我们强制客户端连接到攻击者控制的服务器并下载恶意声音文件。然后,我们设法在 Windows 媒体解析库中找到一个漏洞,该库用于处理和播放任何音频文件,特别是 Outlook 的通知声音。攻击者将这些漏洞串联起来,就可以在易受攻击的 Outlook 客户端上实现零点击 RCE。

本系列博文分为两部分,将介绍我们为发现这两个漏洞而进行的研究。第一部分将重点介绍之前的绕过方法和新的绕过方法。在第二部分中,我们将描述我们发现的媒体解析漏洞。

原始漏洞

当攻击者发送包含带有自定义通知声音的提醒的电子邮件时,就会触发 3 月份修补的 Outlook 漏洞。攻击者使用扩展的MAPI属性PidLidReminderFileParameter将此自定义声音指定为路径。攻击者可以指定 UNC 路径,该路径会导致客户端从任何 SMB 服务器检索声音文件。作为与远程 SMB 服务器连接的一部分,Net-NTLMv2 哈希会在协商消息中发送(图 1)。

图1:NTLM凭证的强制执行

为了解决这个问题,代码现在调用*MapUrlToZone*将路径分类为内联网、本地或互联网。如果 URL 指向互联网上的资源,则使用默认提醒声音,而不是自定义提醒声音。

寻找绕过方法

采取缓解措施后,我们问自己是否有可能绕过它。

在此上下文中,绕过意味着一条路径既能通过本地性测试,又能被 Outlook 用于从远程位置下载声音文件。换句话说,我们需要找到一条*MapUrlToZone*认为是非互联网的路径,而*CreateFile*会将其视为互联网域

为了找到这样的绕过方法,我们需要充分了解函数的内部工作原理以及作为路径解析的一部分所完成的操作。

Windows 路径和 URL

Windows 中有许多不同类型的DOS 路径,并且已经对它们及其转换为 NT 路径进行了大量研究。我们不会在这里介绍不同的 Windows 路径类型;James Forshaw 的博客文章详细介绍了这个主题。

让我们回到我们感兴趣的函数。CreateFile接收 Windows 路径;MapUrlToZone (正如其名称所**暗示的)可以传递 URL 或路径。要找到绕过方法,我们首先需要了解每个函数(或两者)支持的路径类型。

注意CreateFileMapUrlToZone本身不处理路径;相反,它们使用其他 WinAPI 函数来实现此目的。为了简洁起见,我们将使用CreateFileMapUrlToZone来指代其底层路径解析函数。

创建文件 映射网址到区域
RtlPathTypeUncAbsolute
RtlPathTypeDriveAbsolute
RtlPathTypeDriveRelative
RtlPathTypeRooted
RtlPathTypeRelative
RtlPathType本地设备

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

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

相关文章

Debug-023-Document.createElement()的使用

Document.createElement() document.createElement()是在对象中创建一个对象,要与appendChild() 或 insertBefore()方法联合使用。 appendChild() 方法在节点的子节点列表末添加新的子节点。 insertBefore() 方法在节点的子节点列表任意位置插入新的节点。 用途举…

Linux -- git

1 啥是git git是一个代码的历史版本管理工具,通过用树形结构管理一个代码版本可以快速实现回滚等操作 1.1 git基本概念 工作区(Working Directory/Working Tree): 这是你当前正在处理项目文件的地方。你可以在工作区中创建、修改…

非关系型数据库MongoDB(文档型数据库)介绍与使用实例

MongoDB介绍 MongoDB是一种开源的文档型数据库管理系统,它使用类似于JSON的BSON格式(Binary JSON)来存储数据。与传统关系型数据库不同,MongoDB不使用表和行的结构,而是采用集合(Collection)(My…

漏洞发现——漏洞扫描工具的对比

本帖字的实验环境是来自学校的靶机 文章目录 Xray介绍安装教程使用教程主动扫描单个url扫描批量扫描 被动扫描联合游览器联合burpsuite Awvs介绍安装教程使用教程联合xary三者联合bp和xray Goby介绍安装教程使用教程 Afrog介绍安装教程使用教程 Vulmap介绍安装教程使用教程 Poc…

SpringMVC核心机制环境搭建

文章目录 1.SpringMVC执行流程1.基础流程图2.详细流程图 2.安装Tomcat1.下载2.解压到任意目录即可3.IDEA配置Tomcat1.配置Deloyment2.配置Server 3.创建maven项目1.创建sun-springmvc模块(webapp)2.查看是否被父模块管理3.pom.xml引入依赖4.目录5.SunDis…

电子电气架构--- 智能汽车电子架构的核心诉求

我是穿拖鞋的汉子,魔都中坚持长期主义的汽车电子工程师。 老规矩,分享一段喜欢的文字,避免自己成为高知识低文化的工程师: 屏蔽力是信息过载时代一个人的特殊竞争力,任何消耗你的人和事,多看一眼都是你的不…

Android点击和触摸音量小的问题(问题追踪)

有客户反馈:A14触摸声音没有 于是乎,追踪setting打开触摸声音的代码: Overridepublic boolean onPreferenceTreeClick(PreferenceScreen preferenceScreen, Preference preference) {if (preference mVibrateWhenRinging) {Settings.System…

Linux | 进程优先级进程的环境变量

文章目录 进程概念4、进程优先级4.1基本概念4.2查看系统进程4.2.1 ps -l4.2.2 PRI & NI 4.3用top命令更改已存在进程的nice: 5、环境变量5.1常见环境变量5.2查看环境变量5.3测试PATH配置环境变量 5.4代码中获取环境变量5.4代码中获取环境变量 进程概念 4、进程…

RFID 智慧城市书房:开启智慧阅读新时代

在当今数字化、智能化的时代,人们对于阅读的需求和体验也在不断升级。RFID 智慧城市书房的出现,为满足人们对高品质阅读环境的追求提供了全新的途径。 一、RFID 技术:智慧城市书房的核心支撑 RFID,即射频识别技术,是一…

DDS IP实现啁啾信号

简介 DDS(Direct Digital Synthesizer)即数字合成器,是一种新型的频率合成技术,具有低成本、低功耗、高分辨率、频率转换时间短、相位连续性好等优点,对数字信号处理及其硬件实现有着很重要的作用。DDS 的基本…

18945 小团的配送团队

### 思路 1. **建图**:将订单视为图的节点,已知关系视为图的边,构建无向图。 2. **连通分量**:使用深度优先搜索(DFS)或广度优先搜索(BFS)找到图中的所有连通分量。 3. **排序**&…

探索人工智能的未来:埃里克·施密特2024斯坦福大学分享六

代理与文本生成模型的未来展望 您认为明年代理或文本生成模型会出现通货膨胀点吗? 不,不会。 我听到了类似的观点,尤其是埃里克科维茨的看法。他有一个很好的方式来阐述这三个趋势。虽然我之前也听说过这些趋势,但将它们整合起…

C语言破墙镐对称飞迷宫

目录 开头程序程序的流程图程序游玩的效果(gif)结尾 开头 大家好&#xff0c;我叫这是我58。 程序 #define _CRT_SECURE_NO_WARNINGS 1 #include <stdio.h> #include <stdlib.h> #include <Windows.h> enum WASD {W,A,S,D }; void printmaze(const char s…

【CTF Web】CTFShow cookie泄露 Writeup(cookie泄露+URL解码)

cookie泄露 10 cookie 只是一块饼干&#xff0c;不能存放任何隐私数据 解法 按 F12 打开开发者工具&#xff0c;点击网络&#xff0c;刷新页面。 flag 在 响应标头的 Set-Cookie 中。 用 URL 解码工具转换。 Flag ctfshow{8483acdb-a677-4c77-8aff-438d44ff1a3e}声明 本博客…

论文翻译软件哪个好用?如何将论文转化?

在学术海洋里遨游&#xff0c;每一篇论文都是思想的灯塔。 但当这座灯塔用外语构建&#xff0c;如何让它在中国读者面前同样熠熠生辉&#xff1f;别担心&#xff0c;把论文翻译成中文的旅程&#xff0c;不仅可以轻松启航&#xff0c;还能优雅靠岸&#xff01; 不知道怎么把论…

【Android笔记】Android APK编译打包流程

前言 本文将介绍Android从一个项目打包成APK的过程&#xff0c;其中涉及Android Java和Kotlin文件、资源文件、清单文件、依赖jar包和so库等在打包过程中处理。 步骤 总体的打包流程如下图&#xff0c;下面就介绍下详细的打包步骤。 1、将aidl文件编译成java文件 在构建过程中…

OpenAI API VBA function returns #Value! but MsgBox displays response

题意&#xff1a;“OpenAI API VBA 函数返回 #Value!&#xff0c;但 MsgBox 显示响应” 问题背景&#xff1a; I am trying to integrate the OpenAI API into Excel. The http request to OpenAI chat completion works correctly and the response is OK. When I display it…

esp32c3 luaos

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 前言一、介绍二、相关介绍2.1helloworld——2.2任务框架2.3消息传递 与消息订阅2.4uart2.5二进制数据/c结构体的打包与解析2.6 zbuffer库2.8 uart 485 数据解析2.9 …

Ubuntu 20.04安装中文输入法

本文旨在详细介绍在Ubuntu 20.04操作系统中安装中文输入法的步骤和方法。我们将从选择适合的中文输入法软件、下载与安装过程、配置输入法设置以及解决可能遇到的问题等方面展开讲解&#xff0c;帮助用户轻松实现在Ubuntu 20.04系统下流畅输入中文的需求。无论你是Ubuntu的新手…

东方银行--用 MinIO 和 Dremio 替代 Hadoop

我们的客户是一家总部位于日本的全球金融机构&#xff0c;最近与MinIO和Dremio一起完成了一个雄心勃勃的Hadoop替换项目。你可以在Subsurface的这个演讲中看到他们介绍它&#xff0c;但我们认为我们也会把它写下来。与大多数银行一样&#xff0c;该公司已经建立了大量的Hadoop足…