API渗透实战:从JSON响应倒推隐藏的高危路由

admin 2026-01-20 01:11:54 网络安全文章 来源:ZONE.CI 全球网 0 阅读模式

文章总结: 本文介绍API渗透中利用JSON响应结构推导隐藏路由的实战技巧。通过分析数据对象关系猜测端点,结合业务语境Fuzz发现未授权访问及IDOR漏洞。此外,文章展示了利用参数覆盖绕过权限限制,以及通过静态分析JS文件挖掘未公开接口的方法。这些思路有助于安全人员发现隐蔽的高危API漏洞,提升测试覆盖率。 综合评分: 90 文章分类: 渗透测试,WEB安全,实战经验,漏洞分析,数据泄露


cover_image

API 渗透实战:从 JSON 响应倒推隐藏的高危路由

原创

Pwn1 Pwn1

漏洞集萃

2026年1月19日 18:07 山东

免责声明 本公众号所发布的文章内容仅供学习与交流使用,禁止用于任何非法用途。

从 JSON 结构推导 API 路由

首先假设我们存在一个获取用户文章的接口:

GET /api/v1/user/100/posts

响应如下:

{
  "posts": {
    "post": {
      "idPost": "post1id",
      "comments": {
        "id": "1111111",
        "comment": "test content"
      },
      "like": 50
    },
    "post": {
      "idPost": "post2id",
      "comments": {
        "id": "2222222",
        "comment": "test content"
      },
      "like": 50
    }
}
}

我们可以注意到存在 post1id 和 post2id 值。那么我们可以做出如下假设:

  1. 既然存在 idPost,说明 “Post” 在后端是一个独立的对象实体。
  2. 既然 comments 是 post 的子对象,那么每个 comment 应该也有独立的 ID。

基于上述的推测,我们可以做出如下的 Fuzz 列表:

// 猜测单篇文章的访问路径
/api/v1/user/100/posts/post2id
/api/v1/user/100/post/post2id
/api/v1/user/100/posts/post/post2id

// 猜测文章下评论的访问路径
/api/v1/user/100/post/post2id/comments
/api/v1/user/100/post/post2id/comment

// 猜测具体单条评论的访问路径(最深层级)
/api/v1/user/100/post/post2id/comments/2222222
/api/v1/user/100/post/post2id/comment/2222222

Note: 当然,有经验的大佬可能会注意到还可以针对版本进行一系列的 fuzz,这里不再做额外的阐述,仅专注于这种拓展对象的 fuzz。


基于上下文语境实现 Fuzz

已知存在接口 /api/v2/Contact/Us,访问返回 401

这种情况下,我们除了在字符上进行一些 ; 等符号的 fuzz 是不够的,我们还可以通过业务逻辑进行推测:

all
detailed
details
info
delete
remove
contacts
list
contactlist
query
search

随后通过 Fuzzing,成功发现未授权端点 /api/v2/contact/contactlist,直接泄露了 27,000 条联系人数据。

基于动作导向的 REST API 枚举

目前存在接口 /Api/v2.0/User/ 并且 GET 请求可以正常访问。

那么我们就可以将 user 作为一个独立的对象,Fuzz 下其下属是不是存在一些动作操作

GET /Api/v2.0/User/delete
GET /Api/v2.0/User/add
GET /Api/v2.0/User/Rename &nbsp;<-- 命中
GET /Api/v2.0/User/Update
GET /Api/v2.0/User/edit
GET /Api/v2.0/User/{target_user_id}

随后根据命中的 GET /Api/v2.0/User/Rename 结合报错信息完成后了 IDOR 的发现。


逻辑参数覆盖

现存在接口 /api/v1/integration/{slug} 访问返回 401。但是通过另外一个账号得知正常响应如下:

{
&nbsp;&nbsp;"name":&nbsp;"private-integration",
&nbsp;&nbsp;"public":&nbsp;false,
&nbsp;&nbsp;"config":&nbsp;"..."
}

于是尝试参数覆盖

// 拒绝
GET /api/v1/integration/private-slug

// 成功访问
GET /api/v1/integration/private-slug?public=true

静态分析

除了分析流量请求之外,我们还可以分析 JS 文件。JS 中常常保留旧版本的兼容代码或未上线的功能。

方法:

  1. 首先在 JS 文件中搜索已知的 API 前缀,如 /api/v2/integration
  2. 然后找到所有调用该路径的代码块。
// 如在 main.js 中发现
function&nbsp;installIntegration(id) {
&nbsp; &nbsp;&nbsp;return&nbsp;http.post('/api/v2/integration/install', {id: id});
}
function&nbsp;getConfig(id) {
&nbsp; &nbsp;&nbsp;return&nbsp;http.get('/api/v2/integration/configuration');
}

此时我们大胆结合业务逻辑(ID、WorkspaceID 等)进行拼凑:

/api/v2/integration/install
/api/v2/integration/install/{id-org}
/api/v2/integration/configuration
/api/v2/integration/configuration/{id-workspace}
/api/v2/integration/configurations

觉得本文内容对您有启发或帮助? 点个关注➕,获取更多深度分析与前沿资讯!

👉 往期精选

攻防演练中的“降维打击”:逃逸出内网边界的影子资产与SaaS供应链挖掘

【深度复盘】Trust Wallet 惊魂24小时:当官方插件变成“内鬼”,一行代码如何盗走600万美元?

【漏洞挖掘Tips】一种新的 GraphQL 绕过角度


免责声明:

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

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

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

本文转载自:漏洞集萃 Pwn1 Pwn1《API 渗透实战:从 JSON 响应倒推隐藏的高危路由》

评论:0   参与:  0