首页/安全/渗透测试与安全评估速查/API 文档页面暴露检查
常见漏洞验证121 条

API 文档页面暴露检查

Swagger/OpenAPI 等在线文档若对外可访问,等于交付了一份接口地图;核查文档站点的访问控制与内容敏感度。

API 文档暴露为什么要看

Swagger UI、OpenAPI 描述文件(openapi.json、swagger.json)、GraphQL 自省页面这类在线文档,等于一份接口地图:路径、方法、参数、示例与错误码一应俱全,有时还会带上内部接口与调试接口。对外可读即构成信息暴露,是否高危要看文档里接口的性质——读数据的接口与改配置的接口完全不是一个量级。核查方式是确认可访问性(匿名、需登录还是仅内网)并评估文档内容敏感度。

基本信息

常见路径swagger-ui、swagger、api-docs、openapi.json、swagger.json
敏感内容内部与调试接口、管理接口、示例凭据字段
判定口径对外可匿名读取即为暴露,等级取决于接口性质
纪律不按文档批量调用接口做覆盖测试
修复方向文档仅内网可达,或在网关统一加认证

典型使用场景

  • Web 信息暴露类检查的常规项,尤其针对前后端分离系统
  • 评估接口清单是否泄露了未对外发布的功能与内部路径
  • 为越权类问题提供线索:文档里标出的角色字段与权限参数
  • 检查示例数据里是否含真实令牌或有规律的可猜测值
  • 为客户提供整改建议:区分对外文档与内部文档

核查方式

核查方式
# 只做可达性判断,不按文档调用接口
for p in swagger-ui.html api-docs openapi.json swagger.json v2/api-docs; do
  curl -s -o /dev/null -w "$p %{http_code}\n" https://example.com/$p
done
# 可访问时记录:访问是否需认证、文档覆盖的接口数量与分类
# 关注文档中是否出现内部域名、管理接口与示例凭据字段名
# 不批量调用文档中的接口;越权类验证按单独授权进行

可达性与判断

可达性含义处置
匿名可访问且含内部接口信息暴露明显列缺陷并提示优先整改
需登录才可访问风险取决于账号范围核查是否所有账号都能看到全部接口
仅内网可达暴露面有限记录现状,不列为高危
路径不存在或返回统一错误页未暴露无需处置
修复视角:把文档收敛到内网或网关之后,生产与测试环境的文档分离,对外只发布明确需要公开的接口说明。
按文档逐个调用接口做「覆盖测试」偏离授权:文档只用于理解接口结构,动态验证必须限定在授权范围内并遵守限速要求。

易错点

  • 按文档批量调用接口做覆盖测试:超出授权方法与范围,容易影响业务并触发告警
  • 只检查页面可达性:忽略文档内容里的内部接口与示例凭据,等级判断会失真
  • 把「需要登录」当作已修复:任何普通账号都能看到的全量接口清单仍属暴露
  • 忽略版本路径:v1 与 v2、内外网域名往往各自暴露一份文档

数据来源与参考

  • OWASP API Security Top 10(API9 资产管理)
  • OpenAPI Specification
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌