g0thamRabb1t/joomla-jce-cve-2026-48907-detection
GitHub: g0thamRabb1t/joomla-jce-cve-2026-48907-detection
该仓库提供 Joomla JCE CVE-2026-48907 漏洞的实验室验证记录与 SOC 检测工程指导,帮助防御团队识别和响应此类远程代码执行攻击。
Stars: 0 | Forks: 0
# Joomla JCE CVE-2026-48907 — PoC 验证、Webshell 特征与 SOC 检测
## 仓库目的
本仓库记录了在 Joomla JCE 中对 **CVE-2026-48907** 进行受控实验室验证的过程,并侧重于为 SOC 团队提供实用的检测工程指导。
本仓库的目的不是提供漏洞利用指南。其目的是展示在验证期间哪些遥测数据源是有用的、创建了哪些特征文件,以及防御者如何检测和响应此类活动。
## 报告
- [英文 PDF 报告](reports/Joomla_JCE_CVE-2026-48907_POC_EN.pdf)
- [波兰文 PDF 报告](reports/Joomla_JCE_CVE-2026-48907_POC_PL.pdf)
- [英文 DOCX 报告](reports/Joomla_JCE_CVE-2026-48907_POC_EN.docx)
- [波兰文 DOCX 报告](reports/Joomla_JCE_CVE-2026-48907_POC_PL.docx)
## 摘要
| 领域 | 发现 |
|---|---|
| 漏洞 | Joomla Content Editor (JCE) 中的 CVE-2026-48907;未经身份验证的配置文件创建/导入工作流,可能导致 PHP 文件上传和代码执行。 |
| 测试版本 | JCE **2.9.99.4**。Joomla 管理后台显示有可用更新至 **2.9.99.7**。 |
| 实验室结果 | 公开 PoC 验证确认了 RCE,并在 Joomla 的 `/tmp` 目录下创建了名为 `jce*.xml.php` 的 PHP webshell。命令以 `www-data` 用户身份执行。 |
| 最有价值的遥测数据 | Apache `access.log`、Apache/PHP `error.log`、auditd `execve` 遥测数据以及 `joomla_html/tmp` 中的文件系统特征。 |
| Joomla 日志 | 可用作辅助参考,但单独使用不足以说明问题。Joomla 应用日志无法重建完整的攻击链:漏洞利用 → webshell → 命令执行。 |
| SOC 优先级 | 对于面向互联网的 Joomla 实例或可从可信度较低的内部网络访问的 Joomla 实例,此问题至关重要。 |
## 公开参考
- 公开 PoC 仓库:[JoomlaSniper](https://github.com/ynsmroztas/JoomlaSniper)
- CVE 记录:[CVE-2026-48907](https://www.cve.org/CVERecord?id=CVE-2026-48907)
- NVD:[CVE-2026-48907](https://nvd.nist.gov/vuln/detail/CVE-2026-48907)
- CISA KEV 目录:[已知被利用漏洞目录](https://www.cisa.gov/known-exploited-vulnerabilities-catalog)
## 实验室环境
| 参数 | 值 |
|---|---|
| 应用 URL | `http://172.20.10.3:9999` |
| Joomla 容器 | `joomla-jce-lab`,镜像 `joomla:5-apache` |
| 数据库容器 | `joomla-jce-db`,镜像 `mariadb:11` |
| 端口映射 | `0.0.0.0:9999 -> 80/tcp` |
| Apache | Apache/2.4.67 (Debian) |
| PHP | PHP 8.3.31 |
| MariaDB | 11.8.8-MariaDB |
| Joomla | Joomla 5.4.6 Stable |
| JCE | 2.9.99.4 |
| 测试来源 | Windows 11,IP `172.20.10.2` |
| 日志记录 | Apache 访问/错误日志、Joomla 日志、auditd、Docker 日志、文件系统特征 |
## 证据截图
### Joomla 实验室站点

### 已安装的包含漏洞的 JCE 版本

### Joomla 显示有可用的 JCE 更新


### 实验室中的 PoC 验证结果

### 以 www-data 身份执行的交互式 shell 和命令

### Joomla tmp 目录中的文件特征

## 关键防御观察
一项关键的运营发现是,**仅靠 Joomla 应用日志是不够的**。
在实验室测试期间,Joomla 日志记录了应用层上下文(例如 `joomlafailure` 事件),但并未显示完整的漏洞利用链。有用的攻击链主要可见于:
1. Apache `access.log`
2. Apache/PHP `error.log`
3. auditd `execve` 记录
4. `joomla_html/tmp` 中的文件系统特征
对于 SOC 监控,应将 Joomla 日志视为辅助遥测数据,而不是检测此漏洞的主要数据源。
## 观察到的攻击链
在受控测试期间观察到的高层级攻击链:
```
JCE version discovery
↓
POST to Joomla JCE component
↓
PHP webshell written to Joomla /tmp
↓
HTTP request to /tmp/jce*.xml.php
↓
Command execution through webshell
↓
auditd confirms /usr/bin/dash and commands executed as www-data
```
## 观察到的 HTTP 序列
最清晰的证据存在于 Apache `access.log` 中:
```
GET /plugins/editors/jce/jce.xml
GET /
POST /index.php?option=com_jce
GET /tmp/jceolxtshs3.xml.php
GET /plugins/editors/jce/jce.xml
POST /index.php?option=com_jce
GET /tmp/jce624jdcfx.xml.php
GET /tmp/jce624jdcfx.xml.php?c=id%20%26%26%20hostname%20%26%26%20pwd
GET /tmp/jce624jdcfx.xml.php?c=whoami
GET /tmp/jce624jdcfx.xml.php?c=hostname
GET /tmp/jce624jdcfx.xml.php?c=id
GET /tmp/jce624jdcfx.xml.php?c=pwd
```
## Apache/PHP 错误日志指标
Apache/PHP 错误日志包含了与解析器相关的宝贵痕迹:
```
simplexml_load_string()
administrator/components/com_jce/helpers/profiles.php
RXST
RXEND
```
`RXST` 和 `RXEND` 标记是此特定 PoC 系列特别有用的指标,因为它们出现在 payload 处理路径中。
## Joomla 日志局限性
Joomla 日志确认应用日志记录处于活动状态,但未能复现漏洞利用过程:
```
#Software: Joomla! 5.4.6 Stable [ Kutegemea ] 26-May-2026 16:00 GMT
#Fields: datetime priority clientip category message
2026-06-18T20:37:57+00:00 INFO 172.20.10.2 joomlafailure Username and password do not match or you do not have an account yet.
```
这意味着仅收集 Joomla 日志可能会遗漏 CVE-2026-48907 被利用的最重要证据。
## 文件系统特征
测试在 Joomla 的 `tmp` 目录下创建了 PHP webshell 文件:
```
/var/www/html/tmp/jce624jdcfx.xml.php
/var/www/html/tmp/jceolxtshs3.xml.php
```
实验室中的宿主机端路径:
```
/home/user/joomla-jce-lab/joomla_html/tmp/jce624jdcfx.xml.php
/home/user/joomla-jce-lab/joomla_html/tmp/jceolxtshs3.xml.php
```
观察到的 SHA256 哈希值:
```
b6fa303daef8aa8cb39566c73d2cb4a458efb2b1fba48052dd039d45c3beb0aa jce624jdcfx.xml.php
f8bcc802ab56b845c968ed6727228f200f8f4bcd332b8ce82c6980d93ac228fd jceolxtshs3.xml.php
```
基于哈希的检测应被视为低弹性手段,因为文件名和 payload 可能会发生变化。路径、扩展名、所有权和行为关联更为有效。
## auditd 证据
auditd 确认 Web 服务器用户从 Joomla 的 `tmp` 目录执行了命令:
```
CWD=/var/www/html/tmp uid=www-data comm=sh exe=/usr/bin/dash
CWD=/var/www/html/tmp uid=www-data comm=id exe=/usr/bin/id
CWD=/var/www/html/tmp uid=www-data comm=hostname exe=/usr/bin/hostname
CWD=/var/www/html/tmp uid=www-data comm=whoami exe=/usr/bin/whoami
```
这是证明该活动不仅是扫描,而是实际的远程代码执行 (RCE) 的最强有力证据。
## 检测逻辑
最有效的检测是基于关联的:
```
GET /plugins/editors/jce/jce.xml
followed by
POST /index.php?option=com_jce
followed by
GET /tmp/jce*.xml.php
followed by
GET /tmp/jce*.xml.php?c=
and/or
auditd: www-data executes /usr/bin/dash from /var/www/html/tmp
```
## 检测优先级
| 严重性 | 条件 | SOC 操作 |
|---|---|---|
| 低 | 来自异常源的 `GET /plugins/editors/jce/jce.xml` | 视为侦察行为,并与后续请求进行关联分析。 |
| 中 | 没有管理员 referer 或来自未知 IP 的 `POST /index.php?option=com_jce` | 告警并审查后续的 `/tmp` 请求。 |
| 高 | `POST com_jce` 后跟随 `GET /tmp/*.php` 或 `/tmp/*.xml.php` | 立即检查文件系统特征和 PHP 错误日志。 |
| 严重 | `GET /tmp/jce*.xml.php?c=` 或 auditd 显示 `www-data` 启动了 shell/系统命令 | 视为已确认的 RCE/webshell,隔离或限制主机并保留证据。 |
## 指标和狩猎模式
### HTTP 模式
```
/plugins/editors/jce/jce.xml
/index.php?option=com_jce
/tmp/jce[a-z0-9]{8}\.xml\.php
/tmp/.*\.(php|phtml|phar)(\?| )
cs-uri-query contains "c="
```
### 文件系统模式
```
joomla_html/tmp/jce*.xml.php
/var/www/html/tmp/jce*.xml.php
RXST
RXEND
shell_exec
system
passthru
exec
$_GET['c']
```
## 示例排查命令
仅在您拥有或获得授权调查的系统上使用这些命令。
```
grep -RniE "com_jce|profiles\.import|task=profiles|/tmp/.*\.php|RXST|RXEND" apache_logs joomla_html/administrator/logs 2>/dev/null
```
```
find ./joomla_html/tmp ./joomla_html/images ./joomla_html/media \
-type f \( -iname "*.php" -o -iname "*.phtml" -o -iname "*.phar" -o -iname "*.xml.php" \) -ls
```
```
sudo ausearch -k wwwdata_exec -i | grep -E "uid=www-data|comm=sh|/usr/bin/dash|/var/www/html/tmp|whoami|hostname| id |pwd"
```
## Sigma 规则
独立的 Sigma 规则文件可在 [`rules/sigma`](rules/sigma/) 中找到:
- [`joomla_jce_webshell_tmp_access.yml`](rules/sigma/joomla_jce_webshell_tmp_access.yml)
- [`joomla_jce_component_exploit_attempt.yml`](rules/sigma/joomla_jce_component_exploit_attempt.yml)
- [`web_user_shell_from_joomla_tmp_auditd.yml`](rules/sigma/web_user_shell_from_joomla_tmp_auditd.yml)
## 建议的响应措施
| 步骤 | 操作 | 目标 |
|---|---|---|
| 1 | 检查实例是否运行 JCE <= 2.9.99.4 或显示有可用的 JCE 更新。 | 确认漏洞状态。 |
| 2 | 在访问/错误日志中搜索 `com_jce`、`profiles.import`、`/tmp/*.php`、`jce*.xml.php`。 | 识别尝试或成功的漏洞利用。 |
| 3 | 检查 `tmp`、`images` 和 `media` 目录中的 PHP/PHTML/PHAR 文件以及异常名称。 | 检测 webshell 或后门。 |
| 4 | 审查 auditd/EDR 日志,查找 `www-data` 是否启动了 shell 或系统实用工具。 | 确认代码执行。 |
| 5 | 如果确认存在 webshell/RCE,请隔离主机或限制对应用程序的流量。 | 阻止进一步的恶意活动。 |
| 6 | 保留特征文件,移除 webshell,审查 JCE 配置文件、Joomla 账户、cron 作业和被修改的文件。 | 进行深度排查与根除。 |
| 7 | 将 JCE 更新至最新受支持版本,并审查其他 Joomla 实例。 | 实施缓解措施并降低风险。 |
## 缓解建议
| 优先级 | 建议 | 理由 |
|---|---|---|
| P1 | 将 JCE 更新至与当前 Joomla/PHP 分支匹配的最新受支持版本。 | 实验室环境中的 JCE 2.9.99.4 存在漏洞,且 Joomla 显示可更新至 2.9.99.7。 |
| P1 | 安装补丁后,检查是否存在 webshell 和可疑的 JCE 配置文件。 | 更新虽然关闭了入口点,但不会删除在修补之前留下的特征文件。 |
| P1 | 阻止在 `tmp`、`images`、`media`、`cache` 和上传目录中执行 PHP。 | 即使上传成功,阻止 PHP 执行也会打断 RCE 攻击链。 |
| P2 | 为 `option=com_jce` 和 `task=profiles.import` 添加 WAF 或请求过滤。 | 有助于在攻击到达 PHP 之前检测并阻止漏洞利用尝试。 |
| P2 | 集中接入 Apache 访问日志、PHP 错误日志和 auditd/EDR 遥测数据。 | 仅靠 Joomla 应用日志是不够的。 |
| P2 | 定期执行 Joomla 扩展清单检查和更新状态检查。 | Joomla 面板暴露了 JCE 更新信号;这应作为 VM/SOC 工作流的数据源。 |
| P3 | 维护文件基准,并对受控目录之外的新 PHP 文件进行告警。 | 有助于在系统受损后检测 webshell 和持久化行为。 |
## Apache 加固方向示例
确切配置取决于 Apache/PHP 的部署模型。目标是防止在绝对不应该执行脚本的目录中执行 PHP。
```
php_admin_flag engine off
Options -ExecCGI
RemoveHandler .php .phtml .phar
Require all denied
php_admin_flag engine off
Options -ExecCGI
RemoveHandler .php .phtml .phar
Require all denied
```
## MITRE ATT&CK 映射
| 技术 | 名称 | 理由 |
|---|---|---|
| T1190 | 面向公众的应用程序漏洞利用 (Exploit Public-Facing Application) | 在未经身份验证的情况下通过 HTTP 漏洞利用 Joomla/JCE endpoint。 |
| T1505.003 | 服务器软件组件:Web Shell (Server Software Component: Web Shell) | 创建为 `/tmp/jce*.xml.php` 的 PHP webshell。 |
| T1059.004 | 命令和脚本解释器:Unix Shell (Command and Scripting Interpreter: Unix Shell) | 由 `www-data` 执行的 `/usr/bin/dash`。 |
| T1033 | 系统所有者/用户发现 (System Owner/User Discovery) | 通过 webshell 执行了 `whoami` 和 `id`。 |
| T1082 | 系统信息发现 (System Information Discovery) | 通过 webshell 执行了 `hostname`。 |
| T1083 | 文件和目录发现 (File and Directory Discovery) | 通过 webshell 执行了 `pwd` 并在 `/var/www/html/tmp` 中有活动痕迹。 |
## 风险评估
实验室证实了针对 JCE 2.9.99.4 的实际漏洞利用。在观察到的流程中,不需要对 Joomla 进行身份验证,并且公开的 PoC 自动进行了版本检测和 webshell 创建。
对于真实环境,如果 Joomla 面向互联网或可从可信度较低的内部网络访问,则风险很高甚至达到严重级别。成功的攻击可能会留下持久的 webshell,因此在怀疑遭到暴露后,仅打补丁而不进行特征检查是不够的。
## 免责声明
本仓库旨在用于防御性研究、SOC 检测工程和漏洞管理。它不包含漏洞利用代码。任何测试都必须仅在您拥有或获得明确授权评估的系统上进行。
标签:CISA项目, Joomla, Maven, 漏洞验证, 请求拦截