Winrar代码执行漏洞(CVE-2023-38831)的原理分析

这篇具有很好参考价值的文章主要介绍了Winrar代码执行漏洞(CVE-2023-38831)的原理分析。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

  背景

  在2023年8月23日,Group-IB威胁情报机构发布了一份报告,详细介绍了WinRAR任意执行漏洞CVE-2023-38831的攻击活动。根据该报告,这个漏洞最早于2023年4月被攻击者利用,然后在2023年7月被Group-IB威胁情报机构发现并报告给了RARLAB。最终,RARLAB在2023年8月2日发布了修复了CVE-2023-38831漏洞的正式版本WinRAR v6.23。

漏洞简介

  本次漏洞影响范围为低于WinRAR v6.23的所有版本,以下是该漏洞的基本信息:

Winrar代码执行漏洞(CVE-2023-38831)的原理分析

(图源:WinRAR代码执行漏洞 (CVE-2023-38831) 安全风险通告 - 安全内参 | 决策者的网络安全知识库 (secrss.com))

  WinRAR是一款功能强大的Windows文件压缩和解压缩工具,支持高效的压缩算法、密码保护、分卷压缩、恢复记录等功能,同时提供图形和命令行界面,以及自解压缩功能,为用户提供便捷且安全的文件管理和传输工具。

  在zip文件格式中,使用了ZIPDIRENTRY结构体来管理压缩包内的文件和文件夹信息,包括名称、名称长度和修改日期等。WinRAR允许用户预览和执行压缩包内文件。但由于字符串比较代码的问题,当用户打开zip压缩包并执行文件时,WinRAR可能会错误地释放非用户所选的文件

  WinRAR使用了ShellExecuteExW来启动目标文件,这是Windows系统的一个API函数,用于执行目标文件操作。然而,当文件路径字符串末尾存在空格时,该API会在路径末尾添加通配符“.*”并搜索匹配的文件来执行,导致了非目标文件的执行

  综上所述,这个漏洞的触发包含两个环节:

  a.文件释放:由于文件名字符串的比较函数存在一定的问题,导致了非目标文件被释放;

  b.文件执行:释放的文件经ShellExecuteExW执行,当路径字符串末尾有空格时,可能会导致路径下其他特定文件的执行。

  • 漏洞详细分析

  以WinRAR v6.11(x64)为例,分析漏洞的实现原理和过程。

  ZIP文件采用了三种数据结构来有效管理压缩包内的文件内容:ZIPFILERECORD, ZIPDIRENTRY,ZIPENDLOCATOR,其中ZIPDIRENTRY在本次漏洞触发中扮演了关键的角色。在zip压缩包内,每个文件和文件夹都对应了一个ZIPDIRENTRY数据结构,该数据结构包含一个名为deFileName的成员,用于存储目标文件/文件夹的名称。

  构建一个zip格式的压缩包,源文件如图:

Winrar代码执行漏洞(CVE-2023-38831)的原理分析

Winrar代码执行漏洞(CVE-2023-38831)的原理分析

  打包为zip后数据结构如图,图中的ZIPDIRENTRY dirEntry是我们要重点关注的对象,这个数据结构下有个deFileName,指的是这个结构体管理的目标文件的文件名:

Winrar代码执行漏洞(CVE-2023-38831)的原理分析

 文章来源地址https://www.toymoban.com/news/detail-710158.html

  用WinRAR打开这个压缩包,执行test_.txt,可以看到WinRAR在temp目录下释放了该文件:

Winrar代码执行漏洞(CVE-2023-38831)的原理分析

 

   WinRAR释放目标文件的逻辑是这样的:

Winrar代码执行漏洞(CVE-2023-38831)的原理分析

文件释放漏洞

  红色部分是触发漏洞的关键点一,通过各种逆向分析手段,找到了该处代码:

Winrar代码执行漏洞(CVE-2023-38831)的原理分析

   根据这处代码的逻辑,如果我们要解压的文件为test_.txt,那么就会有三种类型的字符串被匹配上:“test_.txt”、“test_.txt\*”、“test_.txt/*”,这里的*表示任意字符串,例如“test_.txt\a.exe”。

  所以,我们对之前构造的压缩包稍作修改:

Winrar代码执行漏洞(CVE-2023-38831)的原理分析

   然后执行test_.txt,就会发现,WinRAR偷偷释放了我们不需要的文件:

Winrar代码执行漏洞(CVE-2023-38831)的原理分析

 

  至此,文件释放的漏洞解释完毕,接下来是文件执行。

文件执行漏洞

  WinRAR使用API执行文件:ShellExecuteExW,这是shell32.dll导出的一个函数,该API的执行逻辑大致如下:

Winrar代码执行漏洞(CVE-2023-38831)的原理分析

   图中标红的函数CShellExecute::_PerformantBindCtx就是本次漏洞的关键点二,文件执行。

  依旧是使用各种逆向分析手段定位到该函数:

Winrar代码执行漏洞(CVE-2023-38831)的原理分析

   其中有两个关键函数PathFindExtensionW和sub_180206AE0:

  PathFindExtensionW是KernelBase.dll的一个导出函数,用于从一个文件名中提取出扩展名所在位置的字符串指针,如传入参数为“C:\Windows\test.exe”时,返回值为指向这个字符串的“.exe”位置的指针,这个函数的代码是这样的:

Winrar代码执行漏洞(CVE-2023-38831)的原理分析

  可以看到它调用了另一个函数PathCchFindExtension,这个子函数才是提取扩展名字符串的关键函数,代码逻辑也很简单,遍历文件路径字符串,查找末尾“.*”的位置。

Winrar代码执行漏洞(CVE-2023-38831)的原理分析

  需要注意的是,windows下的文件名称本身(不包括路径),是不可以含有正反斜杠和空格的。

  但我们只是在调用API,我们可以给它传任意参数,比如说"C:\Windows\test.exe ",注意这里test.exe后面有个空格,那么这时会发生什么呢?

  PathCchFindExtension返回给PathFindExtensionW一个指向了0的字符串,PathFindExtensionW又把这个指针返回给CShellExecute::_PerformantBindCtx,

Winrar代码执行漏洞(CVE-2023-38831)的原理分析

   然后就会导致函数sub_180206AE0被执行,这个函数就负责给文件名加上通配符,然后在路径下查找匹配的文件:

Winrar代码执行漏洞(CVE-2023-38831)的原理分析

  •  漏洞完整验证

  至此我们已经把漏洞的两个关键环节都找到了,只要根据上面分析的结果构造一个特殊的zip文件,就可以触发这个漏洞:

Winrar代码执行漏洞(CVE-2023-38831)的原理分析

     图中标红位置的字符串,在.txt后面都跟着一个空格。

  然后我们执行一下:

Winrar代码执行漏洞(CVE-2023-38831)的原理分析

  当当~验证完毕。

  注:

  此处使用的WinRAR版本为6.11中文版,64位;

  由于系统dll版本的不同,上述API的执行情况可能有所差别,请根据实际情况进行分析;

  闲暇之余随手写的文章,行文格式很随意,看不懂的地方还请多看两遍(doge);

  文章中最后poc演示的zip文件下载链接:
  https://drive.google.com/file/d/1MTDv5snH7ca1Y7lQXEj9_3vmKM8bjpXp/view?usp=drive_link

参考链接:

WinRAR代码执行漏洞 (CVE-2023-38831) 安全风险通告 - 安全内参 | 决策者的网络安全知识库 (secrss.com)

Konni APT 利用 WinRAR 漏洞(CVE-2023-38831)攻击数字货币行业 (seebug.org)

CVE-2023-38831 WinRAR 漏洞分析 (seebug.org)

 

到了这里,关于Winrar代码执行漏洞(CVE-2023-38831)的原理分析的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包赞助服务器费用

相关文章

  • 【Microsoft Message Queuing远程代码执行漏洞(CVE-2023-21554)漏洞修复】

    【Microsoft Message Queuing远程代码执行漏洞(CVE-2023-21554)漏洞修复】

    Windows 消息队列服务是一个Windows组件,需要系统启用该组件才能利用此漏洞,该组件可以通过控制面板添加。Microsoft Message Queuing中存在远程代码执行漏洞,未经身份验证的远程攻击者通过向MSMQ服务器发送特制的恶意MSMQ数据包触发此漏洞,最终实现在服务器端远程代码执行,

    2024年02月15日
    浏览(10)
  • 【Citrix篇】1-Citrix ADC/Gateway 远程代码执行漏洞CVE-2023-3519和升级方法

    【Citrix篇】1-Citrix ADC/Gateway 远程代码执行漏洞CVE-2023-3519和升级方法

    目录 一、前言 二、实验效果 三、影响的版本(CVE-2023-3519) 四、升级前准备 五、命令行升级步骤 六、GUi界面升级步骤 七、公司介绍 近期我们收到Citrix发布关于NetScaler ADC 、NetScaler Gateway的风险通告,漏洞编号为CVE-2023-3519, 漏洞等级:严重,漏洞评分:9.8 漏洞影响 :Hack可

    2024年02月08日
    浏览(7)
  • CVE-2021-22204 GitLab RCE之exiftool代码执行漏洞深入分析(二)

    文章写于2022-01-19,首发在天融信阿尔法实验室 1 前言 2 前置知识 2.1 JPEG文件格式 2.2 Perl模式匹配 3 exiftool源码调试到漏洞分析 3.1 环境搭建 3.2 漏洞简介 3.3 exiftool是如何解析嵌入的0xc51b标签 3.4 exiftool是如何调用parseAnt函数 3.5 parseAnt函数分析 3.6 parseAnt漏洞分析 4 漏洞利用 4.1

    2024年02月14日
    浏览(11)
  • CVE-2022-30190分析以及复现和POC利用 //Microsoft Office MSDT 远程代码执行漏洞

    CVE-2022-30190分析以及复现和POC利用 //Microsoft Office MSDT 远程代码执行漏洞

    在微软官方的介绍里,是从 Word 等调用应用程序使用 URL 协议调用 MSDT 时存在远程执行代码漏洞。成功利用此漏洞的攻击者可以使用调用应用程序的权限运行任意代码。 意思是恶意 Word 文档可以使用远程模板功能从远程服务器获取 HTML 文件,并且 HTML 代码可以使用 Microsoft 的

    2024年02月04日
    浏览(27)
  • 解决 远程 服务器--Microsoft Windows CredSSP 远程执行代码漏洞(CVE-2018-0886)【原理扫描】(KB4103725 或 KB4103715)

    解决 远程 服务器--Microsoft Windows CredSSP 远程执行代码漏洞(CVE-2018-0886)【原理扫描】(KB4103725 或 KB4103715)

    系统: windows server 2012 R2 standard 扫描出漏洞: Microsoft Windows CredSSP 远程执行代码漏洞(CVE-2018-0886)【原理扫描】 按照微软官方给的答案: https://portal.msrc.microsoft.com/zh-CN/security-guidance/advisory/CVE-2018-0886,对应下载安装包是 KB4103725 或 KB4103715 但是下载后安装 报错: 此更新不适用此

    2024年02月06日
    浏览(10)
  • Windows Server 2012 R2服务器Microsoft 消息队列远程代码执行漏洞CVE-2023-21554补丁KB5025288的安装及问题解决

    Windows Server 2012 R2服务器Microsoft 消息队列远程代码执行漏洞CVE-2023-21554补丁KB5025288的安装及问题解决

    近日,系统安全扫描中发现Windows Server 2012 R2服务器存在Microsoft 消息队列远程代码执行漏洞。本文记录补丁安装中遇到的“此更新不适用于你的计算机”问题及解决办法。 一、问题描述: 1、系统安全扫描中发现Windows Server 2012 R2服务器存在Microsoft 消息队列远程代码执行漏洞,

    2024年02月10日
    浏览(12)
  • 漏洞复现 || SolarView Compact 存在任意命令执行漏洞(CVE-2023-23333)

    漏洞复现 || SolarView Compact 存在任意命令执行漏洞(CVE-2023-23333)

    技术文章仅供参考,任何个人和组织使用网络应当遵守宪法法律,遵守公共秩序,尊重社会公德,不得利用网络从事危害国家安全、荣誉和利益,未经授权请勿利用文章中的技术资料对任何计算机系统进行入侵操作。利用此文所提供的信息而造成的直接或间接后果和损失,均

    2024年02月15日
    浏览(7)
  • 漏洞深度分析|CVE-2022-1471 SnakeYaml 命令执行漏洞

    漏洞深度分析|CVE-2022-1471 SnakeYaml 命令执行漏洞

    YAML是一种数据序列化格式,设计用于人类的可读性和与脚本语言的交互。 SnakeYaml是一个完整的YAML1.1规范Processor,支持UTF-8/UTF-16,支持Java对象的序列化/反序列化,支持所有YAML定义的类型。 https://github.com/snakeyaml/snakeyaml SnakeYaml通常使用方法如下: new Yaml(new Constructor(TestDataC

    2023年04月27日
    浏览(12)
  • Office远程代码执行漏洞(CVE-2017-11882)漏洞复现

    Office远程代码执行漏洞(CVE-2017-11882)漏洞复现

    CVE-2017-11882允许攻击者在当前用户的上下文中运行任意代码,导致无法正确处理内存中的对象,即为“ Microsoft Office Memory Corruption Vulnerability “,栈溢出的远程执行漏洞 该漏洞是在 EQNEDT32.EXE 组件的缓冲区溢出导致。当受害用户打开Office文档时就有可能被漏洞利用,危害极大。

    2024年02月12日
    浏览(14)
  • 漏洞复现-Drupal远程代码执行漏洞(CVE-2018-7602)

    漏洞复现-Drupal远程代码执行漏洞(CVE-2018-7602)

    Drupal 7.x 和 8.x 的多个子系统中存在一个远程执行代码漏洞。这可能允许攻击者利用 Drupal 站点上的多个攻击媒介,从而导致该站点受到威胁。此漏洞与 Drupal 核心 - 高度关键 - 远程代码执行 - SA-CORE-2018-002 有关。SA-CORE-2018-002 和此漏洞都在野外被利用。 -c 后面接命令,紧随账号

    2024年02月16日
    浏览(13)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包