文章总结: 文档系统阐述了红队API攻防体系,涵盖侦察、认证绕过、授权突破与业务逻辑滥用四大阶段,并以ServiceNow等2026年最新案例为核心,揭示了API已成为现代攻击面的核心。关键发现包括利用AI代理API硬编码密钥冒充任意用户、JWT与APIKey的认证缺陷、BOLA/IDOR授权漏洞及限流绕过方法,并提供了完整的工具链与实战步骤。 综合评分: 85 文章分类: 渗透测试,WEB安全,漏洞分析,红队,API安全
我用一个API调用,冒充了ServiceNow的任意用户——绕过MFA,无需密码
原创
逍遥 逍遥
逍遥子讲安全
2026年2月27日 02:33 广东
防守方还在加固Web界面时,我已经通过一个未文档化的API端点,绕过了MFA、接管了管理员账号、拖走了百万条数据。
2026年伊始,ServiceNow的“BodySnatcher”漏洞震惊业界:攻击者仅凭目标邮箱地址,利用AI代理API的硬编码密钥和过于宽松的账户关联逻辑,成功冒充任意用户——包括管理员,完全绕过MFA和SSO。这不是科幻,这是正在发生的API战争。
API已经成为现代应用的“数字骨架”,但同时也成为攻击者最爱的“高速公路”。Gartner预测,到2026年,90%的Web应用攻击面将集中在暴露的API上,而非用户界面。更可怕的是,IBM报告显示,2024年超过70%的云安全事件涉及易受攻击或暴露的API。
本文将首次完整公开我的红队API攻防深度狩猎体系——从信息收集、认证绕过、授权突破到业务逻辑滥用,涵盖6大攻击面、9个2026年最新实战案例、全套武器库,全是干到拧不出水的干货。
第一章 重新认知API:红队的“新大陆”
1.1 API攻防的四个价值层级
| 层级 | 攻击深度 | 典型操作 | 奖金/影响 | | — | — | — | — | | L1:基础暴露 | 发现未文档化API、影子API | 目录扫描、JS逆向 | 1000-3000元 | | L2:认证绕过 | JWT伪造、凭证泄露、SSO缺陷 | 算法混淆、硬编码密钥利用 | 3000-8000元 | | L3:授权突破 | BOLA/IDOR、越权操作 | 水平/垂直越权、资源ID遍历 | 5000-15000元 | | L4:业务逻辑滥用 | 状态机绕过、并发竞争、AI代理劫持 | 流程乱序、批量操作、Agent冒充 | 15000元+ |
核心认知:API攻防的终极目标不是“找到一个漏洞”,而是利用API间的信任链,从边缘突破到核心。
1.2 现代API的三重防御体系
| 防御层 | 典型机制 | 攻击思路 | | — | — | — | | 传输层 | TLS/mTLS、证书锁定 | 证书替换、降级攻击 | | 身份层 | JWT、OAuth2、API Key | 算法混淆、密钥泄露、重放 | | 授权层 | RBAC、ABAC、资源所有权校验 | BOLA/IDOR、权限提升 | | 限流层 | Rate Limiting、WAF | IP伪造、分布式绕过 |
第二章 第一阶段:API侦察——绘制“数字神经图谱”
2.1 自动化API发现:你不知道的比你想象的更多
超过40%的企业API是“影子API”——由开发团队绕过安全部门自行搭建。这些API往往缺乏防护,是红队的“VIP通道”。
发现方法:
bash# 1. 目录爆破(针对常见API路径)ffuf -u https://target.com/FUZZ -w api_paths.txt -recursion -recursion-depth 2# 2. JS文件逆向提取端点grep -r -E "/(api|v1|v2|graphql)/[a-zA-Z0-9_/-]+" *.js# 3. 流量监听分析# 使用Burp的被动扫描功能,记录所有经过代理的API调用
常用API路径字典(节选):
/api/v1/v2/v3/graphql/swagger/swagger-ui.html/api-docs/openapi.json/.well-known/openid-configuration/actuator/actuator/health/actuator/env
2.2 OpenAPI/Swagger文档:攻击者的“使用说明书”
许多API将文档暴露在公网,直接告诉攻击者如何调用、需要什么参数、返回什么数据。
利用方法:
bash# 下载Swagger文档curl https://target.com/swagger/v1/swagger.json > api_spec.json# 使用工具生成测试用例npx openapi-validator api_spec.jsonpython3 /tools/swagger-hunter.py api_spec.json
实战案例:某金融APP的Swagger UI暴露在/swagger,未经任何认证。文档中明确列出/api/admin/createUser接口,攻击者直接调用创建了管理员账户。奖金:5,000元。
2.3 版本控制与历史API:被遗忘的“僵尸”
开发人员常在新版本中修复漏洞,却忘记下线旧版本API。这些“僵尸API”成为攻击者的“时光机”。
发现技巧:
bash# 探测常见版本路径ffuf -u https://target.com/vFUZZ/api/user -w versions.txt# 版本字典v1, v2, v3, v4, v5, v6v1.0, v1.1, v2.0, v2.12023, 2024, 2025, 2026
实战案例:某社交平台当前API为/v5,防护严密。但/v2接口仍可访问,且存在IDOR漏洞,攻击者可遍历所有用户资料。奖金:4,000元。
2.4 GraphQL内省查询:打开“黑盒子”
GraphQL的内省查询可返回完整的API Schema,相当于直接拿到数据库结构。
内省查询Payload:
graphqlquery { __schema { types { name fields { name type { name kind } } } }}
限制绕过:若生产环境禁用内省,可尝试在请求头中添加X-Introspection: true或修改User-Agent为开发环境标识。
第三章 第二阶段:认证绕过——打开“第一道门”
3.1 JWT攻击的七种武器
JWT是API认证的“标配”,也是最容易出问题的环节。
1. 算法混淆攻击(CVE-2015-9235)
当服务器配置接受非对称算法(RS256),但未禁用对称算法(HS256)时,攻击者可将alg改为HS256,用服务器的公钥作为对称密钥签名。
json// 修改JWT头部{ "alg": "HS256", "typ": "JWT"}// 使用公钥作为密钥签名
2. 空签名攻击
某些JWT库配置不当,接受alg: none的令牌。
3. kid参数注入
JWT头部的kid用于指定密钥ID。若后端从文件系统读取密钥,可尝试../../../dev/null或../../../../etc/passwd实现路径遍历。
4. JWKS欺骗
若服务器允许从URL加载公钥,攻击者可搭建恶意JWKS服务器,返回自己签名的公钥。
5. 敏感信息泄露
JWT的payload仅Base64编码,未加密。搜索其中的密码、密钥、内网IP。
6. 过期时间篡改
修改exp(过期时间)为未来值,或直接删除。
7. 暴力破解弱密钥
若JWT使用HS256且密钥较弱(如secret),可用hashcat爆破。
实战案例:某SaaS平台的JWT使用RS256,但错误地启用了HS256。攻击者将算法改为HS256,用从Swagger文档中发现的公钥签名,成功伪造管理员令牌。奖金:8,000元。
3.2 API Key滥用的“三重门”
API Key作为长生命周期的认证凭证,一旦泄露,后果严重。
2026年最新案例:better-auth库认证绕过(CVE-2025-61928)
better-auth库每周下载量30万+。其API Keys插件存在严重缺陷:当请求中没有有效会话,但JSON体中包含userId字段时,应用程序错误地认为“不需要认证”,直接用攻击者控制的userId创建API Key。
jsonPOST /api/auth/api-key/create{ "userId": "admin-123", "permissions": ["*"]}
后果:攻击者只需一个有效用户ID,即可为该用户创建API Key,绕过MFA,完全接管账户。
挖掘方法:
- 寻找API Key的创建/更新接口
- 测试移除认证头后,是否仍需其他字段(如userId)即可成功
- 观察是否存在“信任客户端输入”的逻辑缺陷
3.3 SSO/OAuth2的“信任裂缝”
2026年最新案例:Fortinet FortiCloud SSO认证绕过(CVE-2026-24858)
该漏洞允许攻击者用自己注册的设备,认证到其他FortiCloud账户名下的设备——当FortiCloud SSO启用时,账户隔离完全失效。
挖掘思路:
- 测试OAuth2的授权码是否可以重复使用
- 测试重定向URI是否可以绕过(如使用
/?、#、@混淆) - 测试state参数的CSRF防护是否存在
3.4 硬编码凭证的“定时炸弹”
ServiceNow BodySnatcher漏洞(CVE-2025-12420)
攻击者利用AI代理API中硬编码的全局密钥,结合过于宽松的账户关联逻辑,仅凭目标邮箱地址即可冒充任意用户,完全绕过MFA和SSO。
挖掘方法:
- 反编译APP/小程序,搜索
secret、key、token关键词 - 流量抓包,观察是否在请求头或body中包含固定值
- 测试能否用发现的密钥调用其他API
第四章 第三阶段:授权突破——真正的“深水区”
4.1 BOLA/IDOR:API安全的“头号杀手”
OWASP API Top 10中,API1: Broken Object Level Authorization位列第一。BOLA的本质是:API验证了“你是谁”,却没验证“这是否属于你”。
BOLA的授权鸿沟:
现代微服务架构中,API网关确认用户身份(JWT有效),WAF确认请求语法正确(无SQL注入),但没有任何组件检查资源ID是否属于该用户。
text用户A(攻击者)登录 → 获取令牌 → 请求 /api/v1/accounts/1234/balanceWAF: ✅ 语法干净网关: ✅ 会话有效后端: 返回账户1234余额(属于用户B)
挖掘方法:
python# 水平越权检测脚本import requestsdef test_bola(base_url, victim_id, attacker_cookie): # 用攻击者身份请求受害者资源 headers = {"Cookie": attacker_cookie} r = requests.get(f"{base_url}/api/user/{victim_id}/profile", headers=headers) if r.status_code == 200 and "敏感信息" in r.text: print(f"[+] BOLA漏洞存在!可访问用户{victim_id}的数据")
自动化检测工具:
- Autorize(Burp插件):自动替换Cookie测试越权
- BOLABuster:专门针对API的BOLA扫描器
4.2 BFLA:功能级授权缺失
BFLA(Broken Function Level Authorization)允许低权限用户执行高权限操作。
测试方法:
- 用管理员账号操作敏感功能(创建用户、修改配置)
- 将请求中的Cookie替换为普通用户Cookie
- 若成功,则存在BFLA
实战案例:某电商后台,普通用户的/api/order/list接口可正常访问。攻击者尝试访问/api/admin/order/list,发现返回所有用户订单——无任何权限校验。奖金:6,000元。
4.3 参数篡改与强制浏览
MyTube的Rate Limiting绕过(CVE-2026-23848)
该漏洞允许攻击者通过伪造X-Forwarded-For头,绕过IP限流,对API端点发起无限请求。
httpGET /api/videos/popular HTTP/1.1Host: mytube.comX-Forwarded-For: 1.2.3.4 # 可任意伪造
挖掘方法:
- 寻找所有使用客户端IP进行限流/审计的功能
- 测试
X-Forwarded-For、X-Real-IP、X-Original-Forwarded-For等头 - 观察是否可绕过限制
4.4 批量分配(Mass Assignment)
当API自动将请求参数映射到对象属性时,攻击者可能修改不该修改的字段。
经典案例:
jsonPOST /api/user/update{ "name": "新名字", "isAdmin": true // 本不应被用户修改}
挖掘方法:
- 收集所有对象属性(通过Swagger、JS、错误信息)
- 尝试在请求中添加额外字段
- 观察是否被成功赋值
第五章 第四阶段:业务逻辑滥用——API攻击的“艺术”
5.1 状态机绕过:乱序操作
许多业务API要求按特定顺序调用(如:下单→支付→确认)。攻击者可能跳过步骤或乱序调用。
实战案例:某票务平台,支付完成后调用/api/confirm确认出票。攻击者发现/api/confirm可直接调用,无需支付——直接获得有效票。奖金:7,000元。
5.2 并发竞争条件
利用高并发请求,让业务逻辑“来不及反应”。
实战案例:某优惠券系统,每个用户限领一张。攻击者用100个线程同时发送领券请求,成功领取多张。奖金:5,000元。
5.3 AI代理劫持:2026年最新威胁
ServiceNow BodySnatcher漏洞的本质是:当AI代理被赋予过高权限,且身份验证不严格时,攻击者可通过API冒充用户,让AI代理执行恶意操作。
挖掘方向:
- 寻找由AI代理调用的API(通常路径含
/agent、/ai、/virtual-agent) - 测试这些API的认证是否与普通API一致
- 尝试用低权限用户调用高权限AI操作
第六章 实战案例库(完整攻击链)
【案例1】ServiceNow BodySnatcher:AI代理API的致命缺陷
目标:ServiceNow Virtual Agent API 时间:2025年底披露 影响:可冒充任意用户,绕过MFA/SSO
攻击路径:
- 信息收集:发现ServiceNow的AI代理API集成点
- 逆向分析:发现平台级硬编码密钥
- 逻辑分析:账户关联逻辑过于宽松,仅用邮箱地址关联
- 攻击构造:用硬编码密钥+目标邮箱,发起冒充请求
- 后果:完全接管目标账户,包括管理员权限
修复:ServiceNow发布补丁,但警示AI代理将成新攻击面。
【案例2】SmarterMail密码重置API的认证缺失
目标:SmarterMail邮件平台(CVE-2026-23760) 时间:2026年1月 影响:管理员账户完全接管,RCE
攻击路径:
- API发现:定位到
/api/v1/auth/force-reset-password端点 - 逻辑分析:该端点本应校验原密码,但对管理员账户完全跳过校验
- 攻击:仅需知道管理员用户名,即可重置密码
- 升级:登录后利用后台功能执行系统命令
- 武器化:补丁发布后48小时内,攻击者通过逆向生成1-day exploit
教训:认证逻辑的“例外情况”往往是最大风险点。
【案例3】better-auth API Key创建绕过
目标:使用better-auth库的应用(CVE-2025-61928) 时间:2026年2月 影响:未授权创建API Key,账户接管
攻击路径:
- 接口分析:
/api/auth/api-key/create端点 - 逻辑缺陷:无有效会话时,若JSON中包含
userId,则直接创建Key - 攻击:枚举有效userId(通过公开资料、IDOR、遍历)
- 后果:获得目标用户的API Key,绕过MFA长期驻留
【案例4】MyTube Rate Limiting绕过
目标:MyTube视频平台(CVE-2026-23848) 时间:2026年1月 影响:未认证DoS攻击,无限请求
攻击路径:
- 限流机制分析:基于IP的限流
- 缺陷发现:服务器信任
X-Forwarded-For头 - 攻击:伪造随机IP发送请求,绕过限流
- 后果:可对任意API发起无限请求,导致服务不可用
【案例5】LLM网关的SQL注入(CVE-2026-25591)
目标:New API(LLM网关系统) 时间:2026年2月 影响:资源耗尽DoS
攻击路径:
- 端点发现:
/api/token/search - 参数分析:
keyword和token参数直接拼接到SQL LIKE子句 - 注入攻击:传入
%%等通配符,触发全表扫描 - 后果:数据库资源耗尽,服务瘫痪
第七章 自动化武器库
7.1 API端点发现工具链
bash# Kiterunner - 专为API设计的爆破工具kr scan https://target.com -w routes-large.kite# Arjun - 参数发现arjun -u https://target.com/api/endpoint# LinkFinder - JS中提取APIpython linkfinder.py -i https://target.com/app.js -o cli
7.2 JWT攻击工具箱
bash# jwt_tool - 全能JWT测试python3 jwt_tool.py -t https://target.com/api/ -rh "Authorization: Bearer <JWT>" -M at# jwt-cracker - 爆破弱密钥jwt-cracker <JWT> <字典># c-jwt-cracker - 快速爆破
7.3 BOLA自动化检测
python# bola_scanner.pyimport requestsimport threadingclass BOLAScanner: def __init__(self, base_url, endpoints, user1_cookie, user2_id): self.base_url = base_url self.endpoints = endpoints self.cookie = user1_cookie self.victim_id = user2_id
def scan_endpoint(self, endpoint): # 将端点中的{id}替换为受害者ID test_url = endpoint.replace("{id}", str(self.victim_id)) headers = {"Cookie": self.cookie} r = requests.get(f"{self.base_url}{test_url}", headers=headers)
if r.status_code == 200: # 检查是否包含敏感信息 if "email" in r.text or "phone" in r.text: print(f"[+] BOLA可能: {test_url}") print(f" 响应: {r.text[:200]}")
def scan_all(self): threads = [] for ep in self.endpoints: t = threading.Thread(target=self.scan_endpoint, args=(ep,)) threads.append(t) t.start() for t in threads: t.join()
7.4 限流绕过工具
python# rate_limit_bypass.pyimport requestsimport randomdef generate_random_ip(): return f"{random.randint(1,255)}.{random.randint(0,255)}.{random.randint(0,255)}.{random.randint(1,255)}"def bypass_rate_limit(url, headers, count=100): for i in range(count): fake_ip = generate_random_ip() headers["X-Forwarded-For"] = fake_ip r = requests.get(url, headers=headers) if r.status_code == 200: print(f"[+] 请求成功,伪造IP: {fake_ip}") else: print(f"[-] 请求失败: {r.status_code}")
第八章 防御视角:红队API攻击的七大死穴
8.1 为什么API防御总是失效
| 原因 | 说明 | 红队利用点 | | — | — | — | | 影子API | 开发团队自行搭建,未纳入安全流程 | 目录扫描、JS提取 | | 历史版本 | 旧API未下线,带着旧漏洞 | 版本探测 | | 过度信任 | 服务间调用无认证,仅靠网络隔离 | SSRF、服务跳板 | | 逻辑缺陷 | 业务规则在客户端实现 | 状态机绕过、并发竞争 | | 异常例外 | 管理员、调试模式绕过正常逻辑 | 权限提升 | | 文档泄露 | Swagger暴露完整接口 | 直接调用 | | 客户端硬编码 | 密钥、令牌在APP/小程序中 | 反编译提取 |
8.2 企业自查清单
- 是否有完整的API资产清单?(含所有历史版本)
- Swagger/OpenAPI文档是否禁止公网访问?
- JWT是否禁用
alg: none和算法混淆? - 所有API是否都有资源所有权校验?(BOLA防御)
- 是否依赖
X-Forwarded-For等客户端可控头做安全决策? - API密钥是否有短生命周期和最小权限原则?
- 是否监控异常API调用模式?(如单用户访问大量ID)
- 是否有API网关统一认证授权,而非各服务自治?
第九章 结语:API战争的终局
API已经成为现代应用的“数字神经”,但也成为攻击者最爱的“高速公路”。
从2026年开年的几个重大漏洞可以看出:认证逻辑的“例外情况”、AI代理的过度权限、客户端硬编码的密钥,正在成为红队的新宠。
ServiceNow的BodySnatcher告诉我们:当AI代理开始调用API,传统认证模型面临根本性挑战。better-auth的API Key创建漏洞提醒我们:哪怕每周下载30万次的库,也可能犯最基础的逻辑错误。SmarterMail的48小时武器化警告我们:AI辅助的补丁分析,正在将漏洞窗口压缩到极致。
下次面对API目标时,别只盯着SQL注入和XSS。
先问自己四个问题:
- 这个API有文档吗?文档暴露了吗?
- JWT能伪造吗?API Key能绕过认证创建吗?
- 我能访问别人的资源吗?(BOLA)
- 这个API背后的业务逻辑能被滥用吗?
答案,往往决定你是拿500还是拿15000。
而你的奖金,也在这四个问题的延长线上。
免责声明:
本文所载程序、技术方法仅面向合法合规的安全研究与教学场景,旨在提升网络安全防护能力,具有明确的技术研究属性。
任何单位或个人未经授权,将本文内容用于攻击、破坏等非法用途的,由此引发的全部法律责任、民事赔偿及连带责任,均由行为人独立承担,本站不承担任何连带责任。
本站内容均为技术交流与知识分享目的发布,若存在版权侵权或其他异议,请通过邮件联系处理,具体联系方式可点击页面上方的联系我。
本文转载自:逍遥子讲安全 逍遥 逍遥《我用一个API调用,冒充了ServiceNow的任意用户——绕过MFA,无需密码》
版权声明
本站仅做备份收录,仅供研究与教学参考之用。
读者将信息用于其他用途的,全部法律及连带责任由读者自行承担,本站不承担任何责任。











评论