Skip to content
KitploitKITPLOIT
工具博客
提交
工具博客
提交

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

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

··订阅源·联系·隐私·© 2026 Kitploit

工具目录

分类

查看所有分类
Loading categories
CVE-2026-72815-poc — 本地 Go PoC,演示 CVE-2026-72815,即 go-chi/chi 中间件 RealIP 中的 X-Forwarded-For IP 欺骗漏洞,可绕过基于 IP 的 ACL,并与 v5.3.0 修复版本进行对比。 | Kitploit
工具/GitHubGitHub/saku0512/cve-2026-72815-poc
防御工具漏洞分析代码分析漏洞利用Web安全身份验证论文与研究学习与教育
GitHubsaku0512/cve-2026-72815-poc

CVE-2026-72815-poc

本地 Go PoC,演示 CVE-2026-72815,即 go-chi/chi 中间件 RealIP 中的 X-Forwarded-For IP 欺骗漏洞,可绕过基于 IP 的 ACL,并与 v5.3.0 修复版本进行对比。

查看仓库
1天前尚未审核

最受欢迎

查看全部 →

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

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享

CVE-2026-72815: go-chi/chi middleware.RealIP IP 欺骗 PoC

English version

概述

本仓库是 go-chi/chi 的 middleware.RealIP 中存在的 IP 欺骗漏洞 CVE-2026-72815(GHSA-3fxj-6jh8-hvhx)的本地概念验证(PoC)。

存在漏洞的 RealIP middleware 会无条件信任 X-Forwarded-For 的第一个(最左侧)值,并用该值覆盖 http.Request.RemoteAddr。在客户端可以指定 X-Forwarded-For 的配置中,攻击者可以将任意 IP 地址伪装为来源,从而可能绕过或污染基于 IP 的 ACL、rate limit、审计日志等。

本 PoC 仅使用 httptest,不进行与外部主机的通信。

免责声明

仅限用于教育目的以及获得授权的安全验证。请勿未经许可用于第三方环境。

漏洞详情

  • CVE ID: CVE-2026-72815
  • GitHub Advisory: GHSA-3fxj-6jh8-hvhx
  • 产品: github.com/go-chi/chi/v5
  • 存在漏洞的 API: middleware.RealIP
  • 类型: Authentication Bypass by Spoofing (CWE-290)
  • CVSS v4.0: 6.9 (Moderate)
  • CVE 记录中的受影响版本: >= 5.2.1, < 5.3.0
  • 修复版本: 5.3.0

根本原因

middleware.RealIP 在 X-Forwarded-For 存在时,会获取以逗号分隔的第一个值并设置到 RemoteAddr。

概念上相当于以下处理。

root@kitploit:~
if xff := r.Header.Get("X-Forwarded-For"); xff != "" {
    ip, _, _ = strings.Cut(xff, ",")
}

r.RemoteAddr = ip

通常,reverse proxy 会将实际的来源 IP 追加到已有 X-Forwarded-For 的末尾。因此,如果攻击者能够预先指定如下值,则最左侧的值不可信。

root@kitploit:~
X-Forwarded-For: 127.0.0.1, 203.0.113.50

存在漏洞的 RealIP 会将 127.0.0.1 作为客户端 IP 采用。

PoC

所需环境

  • Go 1.23 或更高版本(v5.2.1 的 vulnerable case 单独运行需要 Go 1.20 或更高版本)
  • 首次 module download 所需的网络连接

1. 复现存在漏洞的 v5.2.1

root@kitploit:~
cd vulnerable
GOWORK=off go run .

PoC 假设实际客户端为 203.0.113.50,作为管理员被允许的 IP 为 127.0.0.1。

正常请求会返回 HTTP 403,但附加以下 header 的请求中,RealIP 会将 RemoteAddr 改写为 127.0.0.1,从而返回 HTTP 200。

root@kitploit:~
X-Forwarded-For: 127.0.0.1, 203.0.113.50

预期的主要输出:

root@kitploit:~
=== CVE-2026-72815 vulnerable case ===
[*] go-chi/chi version: v5.2.1
[*] normal request status: 403
[*] spoofed request status: 200
[!] VULNERABLE: attacker-controlled X-Forwarded-For bypassed the IP ACL.

2. 使用 v5.3.0 的安全 API 时

root@kitploit:~
cd fixed
GOWORK=off go run .

v5.3.0 中新增了 ClientIPFromHeader、ClientIPFromXFF、ClientIPFromXFFTrustedProxies、ClientIPFromRemoteAddr 作为 RealIP 的替代。

本 PoC 的 fixed case 假设“服务器正前方有 1 台受信任 proxy,该 proxy 将实际客户端 IP 追加到 XFF 末尾”的配置,并使用 ClientIPFromXFF()。即使发送相同的伪造 header,也会采用最右侧的 203.0.113.50,因此无法突破 ACL。

预期的主要输出:

root@kitploit:~
=== CVE-2026-72815 safe replacement case ===
[*] go-chi/chi version: v5.3.0
[*] normal request status: 403
[*] spoofed request status: 403
[+] SAFE: the spoofed leftmost X-Forwarded-For value did not bypass the IP ACL.

3. 一并确认两者

root@kitploit:~
bash scripts/run-version-matrix.sh

关于 v5.3.0 的注意事项

在 v5.3.0 中,出于向后兼容性,旧 middleware.RealIP 的行为本身仍然保留。RealIP 被添加了 deprecated 注释,并推荐迁移到安全的 ClientIPFrom* API。

因此,不应仅仅将 dependency 更新到 v5.3.0 后继续使用 middleware.RealIP,而是需要迁移到符合实际 network / reverse proxy 配置的 ClientIPFrom* middleware。

PoC 的范围

本仓库仅验证以下内容。

  1. middleware.RealIP 会将攻击者控制的最左侧 XFF 值反映到 RemoteAddr
  2. 其结果是能够绕过简单的基于 IP 的 ACL
  3. 在适当的 proxy 配置下使用 v5.3.0 的 ClientIPFromXFF() 时,能够拒绝相同的输入

不进行对实际网络的扫描、对第三方服务的请求、DoS、持久化等操作。

对策

  • 将 go-chi/chi 更新到 v5.3.0 或更高版本
  • 从 middleware.RealIP 迁移到符合实际基础设施的 ClientIPFrom* middleware
  • 在 reverse proxy 侧也适当地覆盖或移除客户端发送的 forwarding header
  • 不要仅将 IP 地址作为重要认证、授权依据

参考资料

  • CVE-2026-72815
  • GHSA-3fxj-6jh8-hvhx
  • go-chi/chi PR #967: middleware.ClientIP
  • go-chi/chi v5.3.0
下载工具