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

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

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

订阅源联系隐私© 2026 Kitploit

工具目录

分类

查看所有分类
Loading categories
ats-realip-plugin-acl — Apache Traffic Server 10.2.0 - 高危 - 远程 - 权限残留 - realip 插件 ACL 失效开放 | Kitploit
工具/GitHubGitHub/abraxas/ats-realip-plugin-acl
身份验证与授权漏洞分析Web代理与拦截Web安全渗透测试错误配置实验室与实践
GitHubabraxas/ats-realip-plugin-acl

ats-realip-plugin-acl

Apache Traffic Server 10.2.0 - 高危 - 远程 - 权限残留 - realip 插件 ACL 失效开放

查看仓库
414天前尚未审核

最受欢迎

查看全部 →

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

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享

Abraxas Labs - ats-realip-plugin-acl

abraxaslabs.tech  ·  github.com/abraxas  ·  @abraxas_null  ·  [email protected]  ·  ats-realip-plugin-acl

ats-realip-plugin-acl

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

Apache Traffic Server 10.2.0 (b1df7334) - Apache Software Foundation

实验性 realip 加上文档所述的 acl.subjects: PLUGIN 会使重映射 @src_ip 失效开放(fail-open)。如果 realip 不调用 TSHttpTxnVerifiedAddrSet,_verified_addr 会保持为 AF_UNSPEC。PLUGIN 主体永远不会是 nullptr,因此 PEER 回退永远不会执行。ats_is_ip 为 false,@src_ip 被跳过,ip_matches 保持为 true。重映射允许列表会匹配不受信任的客户端。

默认的 acl.subjects 是 PEER。realip 不在默认的 plugin.config 中。会话 ip_allow.yaml 从不读取 PLUGIN。经典的“任何人都能发 X-Forwarded-For”问题已被关闭(需要 trustedAddress;头部必须是单个 inet_pton 地址)。

ID暂无 CVE
类别权限残留(重映射 ACL 失效开放)
可达性远程(来自 trustedAddress 之外的未认证 HTTP)
CWECWE-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)实验性 realip + PLUGIN 主体
认证无。客户端不在 trustedAddress 中。
许可证GNU Affero GPL v3.0
实验环境仅 127.0.0.1:18770

我固定了公开标签 10.2.0,剥离出 b1df7334。实验环境是回环上源码构建的 ats-10.2.0-lab:local 反向代理。CONTROL PEER 403。PLUGIN 200。会话 PURGE 仍为 403。

攻击者能做什么

在加载实验性 realip.so 且 proxy.config.acl.subjects: PLUGIN(或 PLUGIN,PEER)的情况下访问 ATS。重映射 @src_ip=10.0.0.0/8 允许。从 trustedAddress 之外的地址连接。

方法汇聚点权限
从 trustedAddress 之外的 172.x 发起 HTTP 到重映射 @src_ip=10.0.0.0/8realip 跳过 TSHttpTxnVerifiedAddrSet(address_setter.cc:29-38);PLUGIN 主体始终存在(UrlRewrite.cc:462-473);当 !ats_is_ip 时跳过 @src_ip(:495-514)完整性(实验环境已证实): 重映射 ACL 匹配。源站 200 ATS-REALIP-PLUGIN-ACL-WITNESS。CONTROL acl.subjects=PEER 为 403。
同上,外加来自不受信任对端的 Client-IP: 10.1.2.3simple.cc 的 verify 为 false;头部被忽略完整性(实验环境已证实): 仍失效开放 200。并非伪造已验证地址。
同一客户端 PURGE会话 ip_allow.yaml PEER已关闭(实验环境已证实): 403。PLUGIN 从不重写连接 ACL。
不带 @src_ip 的主机默认映射已关闭(实验环境已证实): 响应体 DENIED,无见证。

实验环境已证实 vs 推断: PLUGIN 200、PEER 403、PURGE 403、拒绝映射、不受信任头部失效开放均为实验环境结果。源站随后授予什么,是根据本应仅限 10/8 的重映射推断的。

**需要:**实验性 realip.so 以及 acl.subjects=PLUGIN(或 PLUGIN,PEER)。重映射 @src_ip 允许列表。非默认。

保持关闭的相邻攻击面

攻击面实验
CONTROL acl.subjects=PEER对同一个 @src_ip 映射返回 403
会话 ip_allow.yaml攻击者 PURGE 返回 403
不含 @src_ip 的映射DENIED
空的 trustedAddress永不验证;仅当 subjects 为 PLUGIN 时仍保持 fail-open
经典的任意来源 XFF已关闭。头部必须是来自受信对等方的单个 inet_pton 地址
SNI ip_allow仅限 PEER/PROXY;握手发生在 HTTP 头部之前
默认 subjects PEER遗留配置不适用

这不是经典的“信任来自任意来源的 X-Forwarded-For”遗留问题。该遗留问题是文档中记载的 PLUGIN 重映射 ACL 路径。

实验

python3 ats-realip-plugin-acl-Abraxas-Labs.py

或

cd lab
./run.sh

回环 127.0.0.1:18770(源 18771)。Compose 项目 ats-realip-plugin-acl。镜像 ats-10.2.0-lab:local。攻击者 sidecar 172.x。见证 ATS-REALIP-PLUGIN-ACL-WITNESS。最后一行:

SUCCESS ats-realip-plugin-acl control-http=403 poc-http=200 purge-http=403 denied-http=200 spoof-http=200 trusted-http=200 ATS-REALIP-PLUGIN-ACL-WITNESS

修复方案

当 get_verified_client_addr 为 AF_UNSPEC 时,将 PLUGIN 视为不可用(或让 getter 返回 nullptr,与 TSHttpTxnVerifiedAddrGet 保持一致)。这样 PEER 回退就会生效。当 subject 指针非空但不是 IP 时,不要跳过 @src_ip。在允许列表上采用失败关闭(fail closed)策略。

在此之前,如果你仅为日志记录而加载 realip,请将 acl.subjects 保持为 PEER。除非所有可能命中该重映射的客户端都已是受信任代理,否则不要设置 PLUGIN。

参考资料

  • github.com/apache/trafficserver 标签 10.2.0(b1df7334b39a878971c376da849e8da4984918b6)
  • plugins/experimental/realip/address_setter.cc
  • src/proxy/http/remap/UrlRewrite.cc PerformACLFiltering
  • include/proxy/ProxyTransaction.h get_verified_client_addr
  • realip 管理指南
  • CWE-863
下载工具