一个请求头引出的API未授权

admin 2026-07-15 05:13:18 网络安全文章 来源:ZONE.CI 全球网 0 阅读模式

文章总结: 本文揭示了微服务架构下因请求头路由导致的SpringBootActuator未授权访问漏洞。当默认路径返回404时,攻击者可通过添加特定请求头将流量路由至暴露管理端点的H5微服务。建议测试时关注不同终端请求特征差异以发现隐藏攻击面。防御需在网关层统一拦截管理路径,应用层限制公网暴露,仅开放必要端点并启用内网隔离与认证。 综合评分: 90 文章分类: WEB安全,渗透测试,漏洞分析


cover_image

一个请求头引出的 API 未授权

原创

进击的hack 进击的hack

进击的HACK

2026年7月14日 18:31 江苏

在小说阅读器读本章

去阅读

字数 905,阅读大约需 5 分钟

前言

做项目时遇到的一个漏洞。

在日常 Web 安全测试中,Spring Boot Actuator 一直都是重点关注对象。

通常情况下,我们都会先枚举一些常见的 Actuator 路径,例如:

/actuator
/actuator/env
/actuator/heapdump
/actuator/mappings
/actuator/beans
/actuator/metrics

如果全部返回 404,很多测试人员便会认为目标没有开启 Actuator,继续测试其他内容。

然而,在一次项目测试过程中,我发现目标网站所有 Actuator 路径均返回 404,但最终仍然成功发现了多个未授权的 Actuator 接口。

整个过程并不是依赖特殊漏洞,而是由于 不同业务入口对应不同微服务 所导致。

演示图

不同业务入口(PC/H5)导致的路由隔离失效,从而暴露了管理端点。

www.example.com
        │
        ▼
     Gateway
        │
  判断请求头
        │
 ┌──────┴────────┐
 │               │
PC(默认)       Mobile
 │               │
PC微服务      H5微服务

默认访问 GET /actuator/env实际上到了pc-service。因为pc-service根本没有/actuator所以返回 404

但是增加x-id-finger: mobile以后 Gateway 改变了路由:

GET /actuator/env
          │
          ▼
     mobile-service

mobile-service开启了

management.endpoints.web.exposure.include=*

于是

/actuator/env
/actuator/heapdump
/actuator/mappings
/actuator/loggers

全部暴露出来了。 Header 将请求路由到了另一个暴露了 Actuator 的后端服务

测试过程

正常访问网站,默认是走 PC,不管是直接扫描、枚举 actuator 常见接口,都是 404

POST /actuator HTTP/1.1
Content-Type: application/json
Host: www.example.com

{"key": "value"}

但是通过枚举子路径,在该网站下发现了一个 H5 页面,给 APP 用的

https://www.example.com/xx-h5/#/

通过该网站请求,网站为了避免和 PC 端的微服务冲突,H5 发送的请求中添加了请求头

x-id-finger: mobile

构造如下请求

POST /actuator HTTP/1.1
Content-Type: application/json
Host: www.example.com
x-id-finger: mobile

{"key": "value"}

再对接口进行枚举,就能成功发现 actuator 常见的未授权接口,比如 heapdump、env、mappings ……

如何发现

首先寻找:

H5 页面
APP 页面
微信小程序
开放平台

然后抓取它们所有请求。 重点观察:

Header
Cookie
Token
Host
Path Prefix

例如:

x-id-finger
x-platform
x-device
clientType
terminal
app-version
channel
x-client
x-source

有时网关都会根据这些 Header 做路由。 一旦找到类似 Header,就可以重新测试:

/actuator/*

很多隐藏接口就是这样发现的。

防御建议

针对类似问题,可以从两个层面进行修复。

网关层:

  • • 不应仅依据客户端可控 Header 决定敏感路由。
  • • 对 /actuator/** 等管理路径进行统一拦截。
  • • 将管理接口与业务接口彻底隔离。

应用层:

  • • 不对公网暴露 Actuator。
  • • 仅开放必要端点,例如:
health
info
  • • 对管理接口启用身份认证与授权。
  • • 使用独立管理端口,仅允许内网访问。
  • • 禁止暴露 heapdumpenvmappings 等高风险端点。

总结

这次测试最大的收获并不是发现了 Actuator,而是验证了一个容易被忽略的测试思路:

404 并不一定意味着接口不存在,也可能意味着你访问的是错误的后端服务。

在微服务架构下,同一域名可能对应多套后端,不同终端(PC、H5、APP、小程序)仅通过 Header、Cookie 或路径进行路由。如果只测试默认入口,往往只能看到整个系统的一部分攻击面。

因此,在进行安全测试时,不妨多关注不同业务入口之间的差异,分析它们的请求特征,再结合常见敏感接口进行验证,往往能够发现那些隐藏在不同路由后的真实攻击面。


免责声明:

本文所载程序、技术方法仅面向合法合规的安全研究与教学场景,旨在提升网络安全防护能力,具有明确的技术研究属性。

任何单位或个人未经授权,将本文内容用于攻击、破坏等非法用途的,由此引发的全部法律责任、民事赔偿及连带责任,均由行为人独立承担,本站不承担任何连带责任。

本站内容均为技术交流与知识分享目的发布,若存在版权侵权或其他异议,请通过邮件联系处理,具体联系方式可点击页面上方的联系我

本文转载自:进击的HACK 进击的hack 进击的hack《一个请求头引出的 API 未授权》

评论:0   参与:  0