CVE-2023-38831 WinRAR 逻辑漏洞原因分析

news2024/11/19 8:37:19

简介

  • 漏洞编号:CVE-2023-38831
  • 漏洞类型:逻辑漏洞
  • 软件名称:RARLAB WinRAR
  • 模块名称:WinRAR.exe
  • 历史漏洞:根据 vuldb 显示,历史漏洞并不是很多,能稳定利用的更是少之又少
    在这里插入图片描述
  • CISA 已知漏洞利用目录中只有两个可利用
    在这里插入图片描述
  • 影响的版本:版本应低于 6.23,但是在复现中发现 5.x 版本无法利用成功
  • 攻击利用:WinRAR 中的一个零日漏洞(称为 CVE-2023-38831)已被自 2023 年 4 月以来,该漏洞被网络犯罪分子积极利用,详情参见:https://www.bleepingcomputer.com/news/security/winrar-zero-day-exploited-since-april-to-hack-trading-accounts/

操作环境

  • 系统:Win10 1607
  • 软件版本:Office2016 16.0.4266.1003
  • poc:CVE-2023-38831-poc.rar(https://github.com/b1tg/CVE-2023-38831-winrar-exploit)
  • 工具:Process Monitor、windbg、IDA、二进制分析工具

分析

复现

  • 下载 github 文件后,双击目录中的 CVE-2023-38831-poc.rar 文档,弹出 WinRAR 窗口后双击 CLASSIFIED_DOCUMENTS.pdf 文件,最后弹出计算器,复现成功
    在这里插入图片描述

文件分析

  • 一级目录包括一个 PDF 文件和一个目录,名称都为 "CLASSIFIED_DOCUMENTS.pdf "
    在这里插入图片描述
  • 目录中是命名为 “CLASSIFIED_DOCUMENTS.pdf .cmd” 的文件,功能就是充当弹出计算器的有效载荷
    在这里插入图片描述

系统操作分析

文件创建分析

  • 双击 PDF 后 WinRAR 进程会向如下 Temp 中的目录创建两个文件,分别是 "CLASSIFIED_DOCUMENTS.pdf " 和 “CLASSIFIED_DOCUMENTS.pdf .cmd” 文件,并且在创建文件之前会使用 QueryDirectory 函数进行查询
    在这里插入图片描述
  • 这两个文件的创建操作都是 WinRAR.exe 在同一地址进行的指令操作创建的
    在这里插入图片描述

进程操作分析

  • 执行 cmd.exe 的操作同样是 WinRAR.exe 进程创建的,后面经过分析后发现是通过 ShellExecuteW 创建的
    在这里插入图片描述

逆向分析(基地址 0x130000)

  • 经过逆向分析后,发现 WinRAR.exe 漏洞的执行主要分为四个阶段,分别是 RAR 文件解析、文件路径转换、文件创建、以及文件执行
  • 首先是 RAR 文件解析,WinRAR.exe 会提取 RAR 文件中的名称列表并保存到全局变量 PathName 中
    (1)0021a485:通过 HeapAlloc 申请堆变量保存在 dword_320274 的地址
    在这里插入图片描述
    (2)001BE2FC:通过 ReadFile 读取 CVE-2023-38831-poc.rar 结尾不到 0x2000 的数据(包含压缩文件内的目录和文件名称列表)储存到 dword_320274 中,句柄是通过 CreateFileW 函数返回的
    在这里插入图片描述
    在这里插入图片描述
    (3)00218099:将 dword_320274 赋值到 dword_320278 中,经过了偏移操作,保证提取完整的目录或者是文件名称
    在这里插入图片描述
    (4)002141D6:将 dword_320278 赋值到 MultiByteStr 变量中,如下所示函数 sub_214660 完成此功能
    在这里插入图片描述
    (5)0021427C:将 MultiByteStr 通过宽字符转换后保存到 PathName 中,如下所示 sub_1EB9B0 函数完成此功能
    在这里插入图片描述
  • 文件路径转换操作主要是将 PathName 中保存的文件名转换为绝对路径,好使用绝对路径进行创建文件操作
    (1)00211CE3:函数 sub_1EFB90 完成此操作
    在这里插入图片描述
    (2)调试中可以很清楚的看到文件名到绝对路径的转换,0x320384 就是变量 PathName 的地址
    在这里插入图片描述
  • 文件创建操作
    (1)001BE20E:主要是通过 CreateFileW 函数完成的,创建的路径就是上面经过绝对路径转换后储存在 PathName 变量中数据
    在这里插入图片描述
  • 最后是执行操作
    (1)这个主要是通过 SHELL32!ShellExecuteExW 完成的,但是传入的参数并不是 .cmd 结尾的载荷文件
    在这里插入图片描述
    (2)但是因为后面带了一个空格,所以最终 ShellExecuteExW 在调用 CreateProcessW 执行时参数是 .cmd 结尾的文件,这样载荷就会成功触发,最后弹出计算器
    在这里插入图片描述

构建与利用

  • 构建流程:对 poc 中的文件进行自定义修改后,通过作者给出的 py 脚本创建即可
    在这里插入图片描述

缓解:卸载旧版本,安装 6.23 或者更新的版本

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/946194.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【pyqt5界面化开发-3】工具图标设置

一、目标1:添加icon图标 需要模块:from PyQt5.QtGui import QIcon w.setWindowIcon(QIcon(C:\\img_path\\test.png)) 代码(自己加上自己的图标路劲): import sysfrom PyQt5.QtGui import QIcon from PyQt5.QtWidgets import QApplication,…

基于Web的旅游推荐网站设计与实现(论文+源码)_kaic

【摘 要】 当前,众所周知的旅游产业已慢慢成为全世界经济领域中最具代表影响力和最大领域的产业之一,互联网的蓬勃发展也为旅游业带来了新的机遇。并且旅游网站已经逐渐成为管理旅游信息的主要模式。因此,开发一个稳定性良好、可用性强的旅游…

串口联网通信数据监听视监控侦测协议规约破解方案

作为物联网数据采集解决方案专业提供商,数采物联网小编daq-iot 在这里做以下内容介绍,并诚挚的欢迎大家讨论和交流。 本方案主要用于监听和侦测 串口通信数据报文,主要用于协议报文分析 破解领域。 例如破解摄像头控制道闸开启的命令等。 监控和分析通信数据代表的含…

常用的Splunk命令

查看版本 splunk version 状态、启动、停止、重启 splunk status|start|stop|restart 关闭/开启splunk服务 net stop splunkd net start splunkd 查看管理端口 splunk show splunkd_port 查看web端口 splunk show web_port 更改端口 splunk set web_port 7897 查看监听 s…

leetcode 42. 接雨水

2023.8.29 本题可以用双指针做&#xff0c;求出每一列能盛的雨水&#xff0c;再相加即可。不过暴力法会超时&#xff0c;需要优化。 双指针&#xff08;暴力&#xff09;&#xff1a; class Solution { public:int trap(vector<int>& height) {int ans 0;for(int …

加强版python连接飞书通知——本地电脑PC端通过网页链接打开本地已安装软件(调用注册表形式,以漏洞扫描工具AppScan为例)

前言 如果你想要通过超链接来打开本地应用,那么你首先你需要将你的应用添入windows注册表中(这样网页就可以通过指定代号来调用程序),由于安全性的原因所以网页无法直接通过输入绝对路径来调用本地文件。 一、通过创建reg文件自动配置注册表 创建文本文档,使用记事本打开…

ssm削面快餐店点餐服务系统源码和论文

ssm削面快餐店点餐服务系统源码和论文080 开发工具&#xff1a;idea 数据库mysql5.7 数据库链接工具&#xff1a;navcat,小海豚等 技术&#xff1a;ssm 随着互联网技术的快速发展&#xff0c;网络时代的到来&#xff0c;网络信息也将会改变当今社会。各行各业在日常企业经…

Python+win32gui将Excel文件xlsx批量快速转换xls(附完整代码+全注释)

&#x1f338; 欢迎来到Python办公自动化专栏—Python处理办公问题&#xff0c;解放您的双手 &#x1f3f3;️‍&#x1f308; 博客主页&#xff1a;一晌小贪欢的博客主页 &#x1f44d; 该系列文章专栏&#xff1a;Python办公自动化专栏 文章作者技术和水平有限&#xff0c…

【第四阶段】kotlin语言的解构语法过滤元素

1.list集合的解构操作 package Stage4fun main() {val list listOf("java","kotlin","c")//元素解构var(v1,v2,v3)listprint("v1$v1,v2$v2,v3$v3") }执行结果 2.将上述代码转化为Java代码 使用Java 代码需要大量书写 3.解构过滤元…

RTSP/Onvif视频服务器EasyNVR安防视频平台服务器频繁重启的问题解决方案

EasyNVR平台优秀的视频能力在于通过RTSP/ONVIF协议&#xff0c;将前端接入设备的音视频资源进行采集&#xff0c;并转码成适合全平台、全终端分发的视频流格式&#xff0c;包括RTSP、RTMP、FLV、HLS、WebRTC等格式。平台可拓展性强、部署轻快&#xff0c;在安防监控领域有着广泛…

C++中的虚继承、多态以及模板的介绍

菱形继承 概念 菱形继承又称为钻石继承&#xff0c;由公共基类派生出多个中间子类&#xff0c;又由中间子类共同派生出汇聚子类。汇聚子类会得到中间子类从公共基类继承下来的多份成员 格式 A --------公共基类/ \B C ------- 中间子类\ /D -----…

NodeJS的简介以及下载和安装

本章节会带大家下载并安装NodeJs 以及简单的入门&#xff0c;配有超详细的图片&#xff0c;一步步带大家进行下载与安装 NodeJs简介关于前端与后端Node是什么&#xff1f;为什么要学习NodeNodeJS的优点&#xff1a; NodeJS的下载与安装NodeJS的下载&#xff1a; NodeJS的快速入…

Android Looper Handler 机制浅析

最近想写个播放器demo&#xff0c;里面要用到 Looper Handler&#xff0c;看了很多资料都没能理解透彻&#xff0c;于是决定自己看看相关的源码&#xff0c;并在此记录心得体会&#xff0c;希望能够帮助到有需要的人。 本文会以 猜想 log验证 的方式来学习 Android Looper Ha…

Kafka3.0.0版本——Follower故障处理细节原理

目录 一、服务器信息二、服务器基本信息及相关概念2.1、服务器基本信息2.2、LEO的概念2.3、HW的概念 三、Follower故障处理细节 一、服务器信息 三台服务器 原始服务器名称原始服务器ip节点centos7虚拟机1192.168.136.27broker0centos7虚拟机2192.168.136.28broker1centos7虚拟…

数组(个人学习笔记黑马学习)

一维数组 1、定义方式 #include <iostream> using namespace std;int main() {//三种定义方式//1.int arr[5];arr[0] 10;arr[1] 20;arr[2] 30;arr[3] 40;arr[4] 50;//访问数据元素/*cout << arr[0] << endl;cout << arr[1] << endl;cout &l…

工地扬尘监测系统 yolo

工地扬尘监测系统算法能够通过yolo网络框架模型&#xff0c;工地扬尘监测系统算法自动对区域的扬尘、粉尘颗粒进行实时监测识别&#xff0c;并及时进行预警&#xff0c;有效防止扬尘污染。Yolo意思是You Only Look Once&#xff0c;它并没有真正的去掉候选区域&#xff0c;而是…

nginx的安装和全局配置

目录 何为nginx Nginx 功能介绍 基础特性 nginx架构 Nginx 进程结构 nginx 模块 模块分类 使用方式 编译安装nginx 第一步&#xff1a;获取安装包 第二步&#xff1a;安装依赖 第三步&#xff1a;创建用户nginx 第四步&#xff1a;解压安装包 第五步&#xff1a;编译…

DSP_TMS320F28377D_算法加速方法1_拷贝程序到RAM运行

TI C2000系列的DSP芯片算力有限&#xff0c;用于来控制有时候常会出现控制程序无法实现实时运行的情况&#xff0c;因此从本文开始&#xff0c;将陆续推出几篇DSP算法加速的方法 此方法只需要添加一行代码和一个预定义&#xff0c;即可达到算法整体加速的目的。先声明本文是讲的…

jeecgboot的online在线开发高级版【伸手党福利】

本文章在于充分发挥jeecgboot的在线开发功能&#xff0c;将平时开发80%以上的工作量全部收束 目录 树形结构使用固定值替换id从其他表中引用字段输入和搜索&#xff08;下拉搜索&#xff09;输入用户、单位等框架内固有值主附表 树形结构 是否树》是 自动生成pid&#xff0c;…

oracle19c-图形安装(centos7)

目录 一.环境准备1.关闭防火墙2.关闭SELINUX3.配置本地yum源4.安装ORACLE先决条件的软件包5.修改LINUX的内核文件6.添加下列参数到/etc/security/limits.conf7.添加下列条目到/etc/pam.d/login8.环境变量中添加下列语句9.创建文件目录和相应的用户10.配置oracle用户的环境变量1…