Skip to content
KitploitKITPLOIT
工具漏洞利用博客
Log in
提交
工具漏洞利用博客
提交

黑客、渗透测试和网络安全工具,武装您的安全武器库!

Kitploit 是一个黑客、网络安全和渗透测试工具的目录。发现最新的项目更新,查找漏洞、分析系统、自动化测试并加强你的安全。

订阅源联系隐私© 2026 Kitploit

工具目录

分类

查看所有分类
Loading categories
ats-magick-unsigned — Apache Traffic Server 10.2.0 - 高危 - 远程 - 文件写入 - 未签名的 magick convert 以 nobody 身份写入 | Kitploit
工具/GitHubGitHub/abraxas/ats-magick-unsigned
漏洞分析漏洞利用Web应用程序漏洞利用信息收集Web安全实验室与实践
GitHubabraxas/ats-magick-unsigned

ats-magick-unsigned

Apache Traffic Server 10.2.0 - 高危 - 远程 - 文件写入 - 未签名的 magick convert 以 nobody 身份写入

查看仓库
14天前尚未审核

最受欢迎

查看全部 →

发现我们社区最常用的工具。

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享

Abraxas Labs - ats-magick-unsigned

abraxaslabs.tech  ·  github.com/abraxas  ·  @abraxas_null  ·  [email protected]  ·  ats-magick-unsigned

ats-magick-unsigned

类别: 文件写入 可达性: 远程

Apache Traffic Server 10.2.0 (b1df7334) - Apache Software Foundation

当 plugin.config 中没有 RSA 密钥时,实验性 magick 会从 ?magick=(percent+base64 编码的 convert argv)运行 ImageMagick 的 ConvertImageCommand。verified = nullptr == key_。README 指出该密钥的存在是为了避免被利用。不带参数加载 magick.so 是该插件的默认行为。

在 plugin.config 上配置 RSA 公钥的已签名 CONTROL 返回 403,且不生成见证文件。类别仍为文件写入。发行版的 policy.xml 通常会禁用 URL/shell 委托。不要将其夸大为 RCE。

ID暂无 CVE
类别文件写入(未签名的 convert argv)
可达性远程(未认证 HTTP ?magick= 经由无密钥的 magick.so)
CWECWE-347, CWE-73
CVSS高危:7.5 CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:H/A:N
产品Apache Traffic Server
受影响版本10.2.0 (b1df7334b39a878971c376da849e8da4984918b6) 实验性 magick 未签名 convert
认证无
许可证GNU Affero GPL v3.0
实验环境仅 127.0.0.1:18800

我锁定了公开标签 10.2.0 对应的提交 b1df7334。实验环境是在回环地址上源码构建的 ats-10.2.0-lab:local 反向代理。未签名 convert -write png:/tmp/oracle/ATS-MAGICK-UNSIGNED-WITNESS。见证文件 161 字节,属主为 nobody。已签名 CONTROL 返回 403。

攻击者能做什么

在加载了 magick.so 且无 RSA 密钥的情况下,对具有兼容 Content-Type 的源站图片发起未认证的 GET /img.png?magick=。

方法汇聚点权限
未认证 GET /img.png?magick= 未签名 convert -write png:/tmp/oracle/ATS-MAGICK-UNSIGNED-WITNESSverified = nullptr == key_(magick.cc:593-609)然后 ConvertImageCommand完整性 / 文件(实验环境已证实): 161 字节见证文件,属主为 nobody。日志记录 ImageMagick's syntax。HTTP 200。
在 plugin.config 上配置 RSA 密钥的相同查询EVP_DigestVerify已关闭(实验环境已证实): 403 签名验证失败。无见证文件。
超大源站 blob无界的 blob_可用性(推断): 进程内存压力。与 CVE-2026-58186 上限问题同源。不属于本高危行。
IM URL / shell 委托policy.xml本实验环境中已关闭: HTTP/HTTPS/URL/MVG/shell 委托均无。不要称其为 RCE。

实验环境已证实 vs 推断: 以 nobody 身份进行未签名文件写入、已签名 403、语法日志均为实验环境证实。无界 blob DoS 为推断。未声称 RCE。

前提条件: 实验性 magick.so 且无验证密钥,加上 ImageMagick policy.xml 仍允许 convert 路径写入。默认 plugin.config 中不会加载。

保持关闭的相邻攻击面

攻击面实验环境
magick 带 RSA 公钥加载CONTROL 403,control-sigfail=yes,无文件
magick 未加载查询 magick 无效果
wasm WASI path_openNOENT
请求体作为 IM 输入源站响应 blob 才是输入
webp_transform 有界解码CVE-2026-58186 已关闭;magick blob 是未被限制的同源问题

不是 CVE-2026-58186。Magick README 已经说明该密钥的存在是为了避免被利用。遗留的问题是:在没有该密钥的情况下加载插件。

实验环境

python3 ats-magick-unsigned-Abraxas-Labs.py

或

cd lab
./run.sh

回环 127.0.0.1:18800(在第二个监听器上签名的 CONTROL)。Compose 项目 ats-magick-unsigned。镜像 ats-10.2.0-lab:local。见证 ATS-MAGICK-UNSIGNED-WITNESS。最后一行:

SUCCESS ats-magick-unsigned unsigned-http=200 file-write=yes uid=nobody syntax-log=true control-http=403 control-sigfail=yes ATS-MAGICK-UNSIGNED-WITNESS

修复方案

当 key_ 为 null 时采用失败关闭(fail closed)策略。在没有经过验证的 magickSig 的情况下,不要对客户端的 ?magick= 执行 ConvertImageCommand。将缺失密钥视为“插件配置错误”,而不是“未签名的转换没问题”。像 webp_transform 那样对 blob_ 设置上限。

在此之前,如果没有生产规模的 RSA 公钥,不要加载 magick.so。发行版的 policy.xml 不能替代签名。

参考资料

  • github.com/apache/trafficserver 标签 10.2.0(b1df7334b39a878971c376da849e8da4984918b6)
  • plugins/experimental/magick/magick.cc verified = nullptr == key_
  • plugins/experimental/magick/README
  • 同类问题(已关闭,非本问题):CVE-2026-58186 webp_transform 有界解码
  • CWE-347 · CWE-73
下载工具