JFrog Artifactory proyecto de reproducción de RCE en toda la cadena con autenticación previa (CVE-2026-42018 / CVE-2026-65616 / CVE-2026-65615): informe completo de la cadena de ataque, entregables de reproducción con Docker 7.146.7 (EXP / despliegue / verificación de línea base / muestras de payload / herramienta de recuperación)
Solo para pruebas de seguridad autorizadas, investigación defensiva y enseñanza de seguridad. Esta cadena de vulnerabilidades ha sido corregida por el fabricante (se recomienda actualizar a 7.161.15+), reproduzca únicamente en un entorno de laboratorio aislado y desechable. La realización no autorizada de cualquiera de las operaciones descritas en este repositorio contra sistemas de terceros constituye un acto ilegal, y todas las consecuencias derivadas de ello serán responsabilidad exclusiva del operador.
Este repositorio es el entregable completo de reproducción de la cadena de vulnerabilidades RCE preautenticación de JFrog Artifactory divulgada por edrabb.fr: basado en la imagen oficial releases-docker.jfrog.io/jfrog/artifactory-oss:7.146.7 (única forma de despliegue oficial de la serie 7.146.x: PostgreSQL externo) se completa la reproducción totalmente automatizada de la cadena de ataque de 5 pasos, y mediante el experimento de línea base de "ejecutar RCE directamente en un entorno completamente nuevo" se demuestra la autenticidad de la reproducción (ver attack-chain-package/baseline/BASELINE-VERIFIED.md).
| Paso | Etapa | CVE |
|---|---|---|
| Step 1 | Omisión de autenticación por barra diagonal final, obtención de JWT anónimo (aud=*@*) | CVE-2026-42018 |
| Step 2 | Canje del par de tokens access + refresh | CVE-2026-42018 |
| Step 3 | Descubrimiento por Router del ID de servicio jfrt@ → falsificación de refresco de JWT admin → token de administrador con firma real | CVE-2026-65616 |
| Step 4 | systemUpload carga payload.zip → system import descomprime y escribe logback.xml malicioso | — |
| Step 5 | Logback fileHeader escribe en disco web.xml / componente CGI → RCE preautenticación de Tomcat CGI | CVE-2026-65615 |
├── 漏洞攻击链完整报告.md ← Informe general (verificación de línea base de autenticidad de reproducción, principios, comparación con el artículo de divulgación, recomendaciones de corrección)
├── 复现报告.md ← Informe detallado de reproducción técnica de 744 líneas (principios a nivel de código fuente + pasos manuales)
└── attack-chain-package/
├── README.md ← Inicio rápido (despliegue del entorno de pruebas / lanzamiento del ataque / restauración del entorno)
├── exploit/
│ ├── exp.py ← EXP de automatización de cadena completa (biblioteca estándar de Python 3, sin dependencias de terceros)
│ └── forge_jwt.py ← Script manual de falsificación de JWT del Step 3 (independiente de exp.py)
├── deploy/system.yaml ← Configuración de montaje del contenedor Artifactory 7.146.7 (la imagen oficial exige obligatoriamente PostgreSQL)
├── baseline/ ← Verificación de línea base de autenticidad de reproducción (registro de experimentos y configuración de RCE directo en entorno completamente nuevo)
├── payload-sample/ ← Muestras de componentes payload generadas offline (producto de exp.py --dump-payload)
└── recovery/ ← Scripts de restauración y verificación del entorno (referencia para respuesta a incidentes)
# 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
El ataque es destructivo de una sola vez para el webapp: la funcionalidad Web original de Artifactory queda anulada en el momento en que el RCE se materializa, por lo que es imprescindible utilizar un contenedor de laboratorio desechable.
attack-chain-package/payload-sample/payload.zip (artefacto final subido, cuya importación desencadena el RCE) se almacena en formato de texto base64 como 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 (cuenta inicial predeterminada de JFrog; toda esta cadena de ataque es preautenticación y no utiliza ninguna credencial)