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

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

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

订阅源联系隐私© 2026 Kitploit

工具目录

分类

查看所有分类
Loading categories
ats-authproxy-prefix — Apache Traffic Server 10.2.0 - 高危 - 远程 - 权限残留 - authproxy 前缀 | Kitploit
工具/GitHubGitHub/abraxas/ats-authproxy-prefix
身份验证与授权漏洞分析Web代理与拦截漏洞利用Web安全实验室与实践
GitHubabraxas/ats-authproxy-prefix

ats-authproxy-prefix

Apache Traffic Server 10.2.0 - 高危 - 远程 - 权限残留 - authproxy 前缀

查看仓库
515天前尚未审核

最受欢迎

查看全部 →

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

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享

Abraxas Labs - ats-authproxy-prefix

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

ats-authproxy-prefix

类别: 权限残留 可达性: 远程

Apache Traffic Server 10.2.0 (b1df7334) - Apache Software Foundation

authproxy 的 --forward-header-prefix 会将 2xx 认证辅助程序返回的身份字段复制到客户端请求上。HttpSetMimeHeader 只会查找并覆盖该名称的第一个字段。客户端额外复制的字段会保留下来。若源站对同一头部采用后者覆盖前者的策略,就会把客户端提供的值当作身份。

默认的 plugin.config 为空。此残留问题需要插件在带有该前缀选项的 remap 上加载。客户端仍须通过认证(2xx)。认证 403 永远不会到达源站。

ID暂无 CVE
类别权限残留(身份头部植入)
可达性远程(通过带 --forward-header-prefix 的 authproxy 发起 HTTP 请求)
CWECWE-444、CWE-863
CVSS高危:8.1 CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:H/A:H
产品Apache Traffic Server
受影响版本10.2.0(b1df7334b39a878971c376da849e8da4984918b6)authproxy 前缀覆盖层
认证已从认证辅助程序获得 2xx 的客户端。插件已启用。
许可证GNU Affero GPL v3.0
实验环境仅 127.0.0.1:18760

我固定了公开标签 10.2.0 对应的提交 b1df7334。实验环境是在回环地址上源码构建的 ats-10.2.0-lab:local 反向代理。认证辅助程序返回 2xx 与 403。源站对 X-Auth-User 采用后者覆盖前者的策略。

攻击者能做什么

访问一个加载了 authproxy.so 且带有 --forward-header-prefix=X-Auth- 的 ATS remap。在辅助程序判定为 2xx 的请求上发送两行 X-Auth-User。

方法汇聚点权限
在 2xx 认证辅助程序之后重复 X-Auth-UserStateAuthorized 覆盖层,随后 HttpSetMimeHeader(authproxy.cc:660-690、utils.cc:87-102)完整性(实验已证实): 源站采用后者覆盖前者。实验:X-Auth-User-0: realuser 加上 X-Auth-User-1: ATS-AUTHPROXY-PREFIX-WITNESS。对照组无/单值保持 REALUSER-ONLY。
同样的植入源站基于该头部的 ACL / 用户查询侦察(推断): 被植入的身份在源站能读取的任何内容。不是堆转储。不是 ATS 配置。
认证辅助程序返回 403 且带有相同的重复头部StateUnauthorized;源站未被重新启用已封闭(实验已证实): 源站命中不变。客户端收到 403。见证值不在响应体中。

实验已证实与推断: 重复后者覆盖前者、单值覆盖、无值,以及 403 未到达,均为实验证实。植入后的源站权限是根据后者覆盖前者身份推断的。

前提条件: authproxy.so 带有 --forward-header-prefix。客户端必须通过认证(2xx)。源站必须将这些前缀头部视为身份(这正是该选项存在的原因)。默认 plugin.config 中未加载。

保持封闭的相邻攻击面

表面实验
无客户端前缀头CONTROL none:来源 REALUSER-ONLY
单一客户端前缀CONTROL single:第一个字段被覆盖;见证不会保留
认证辅助程序 403未到达来源(control-403=yes)
插件未加载残留内容不适用
逐跳 / @ 头在插件钩子之前被剥离(CVE-2026-33267)
空认证响应头列表不再断言(变更日志)
认证器 SNI / url_sig C=在此固定版本上已关闭(CVE-2026-58162 / 58181)

不是 CVE-2026-58162。uri_signing 仅支持 SHA-256/SHA-512。url_sig C= 缺少分隔符仍会拒绝。

实验

python3 ats-authproxy-prefix-Abraxas-Labs.py

或

cd lab
./run.sh

回环地址 127.0.0.1:18760(源 18761,认证辅助程序 18762)。Compose 项目 ats-authproxy-prefix。镜像 ats-10.2.0-lab:local。见证 ATS-AUTHPROXY-PREFIX-WITNESS。最后一行:

SUCCESS ats-authproxy-prefix pin=10.2.0 control-none=REALUSER-ONLY control-single=REALUSER-ONLY control-403=yes dup-last-wins=yes ATS-AUTHPROXY-PREFIX-WITNESS

修复方案

在覆盖之前,剥离所有名称以 --forward-header-prefix 开头的客户端字段。HttpRemoveMimeHeader 已经会遍历 TSMimeHdrFieldFind 直到不再有剩余字段(utils.cc:104-114)。对客户端请求使用它处理配置的前缀,然后再进行设置。让 HttpSetMimeHeader 像 origin_server_auth 的 set_header 和 access_control 的 setHeader 那样销毁 TSMimeHdrFieldNextDup 多余字段。

在此之前,除非源站采用先到先得策略,或在源站拒绝重复的前缀名称,否则不要将源站 ACL 指向 authproxy 前缀头。

参考资料

  • github.com/apache/trafficserver 标签 10.2.0(b1df7334b39a878971c376da849e8da4984918b6)
  • plugins/authproxy/authproxy.cc StateAuthorized
  • plugins/authproxy/utils.cc HttpSetMimeHeader / HttpRemoveMimeHeader
  • authproxy 管理指南
  • 对比:origin_server_auth.cc 中的 set_header 会遍历 NextDup
  • CWE-444 · CWE-863
下载工具