记一次安全测试实战——某企业级AI平台:203个API接口的渗透实录
明焰安全
2026年7月31日 17:06
浙江
在小说阅读器读本章
去阅读
*记一次安全测试实战*
某企业级AI平台:
203个API接口的渗透实录
前阵子接了一个授权目标:某企业级AI服务平台。官网、AI对话、Token计费、企业管理,该有的都有。前后端分离,前端Nuxt.js,后端统一走API网关。整体看下来是个典型的云原生微服务架构,攻击面应该不小,但没想到的是——打开的方式比预想中容易得多。
目标侦察:攻击面远比想象中大
第一步先把攻击面摸清楚。官网页面是公开的,但真正的料都藏在JS里。Nuxt构建产物会按需加载一堆chunk,把这些全拉下来,接口基本就全暴露了:
挖出来的东西比预想的多。除了主站,还翻出一个独立部署的微前端子应用——AI对话、技能广场、Token订阅这些核心业务全在上面。再从构建产物里还原出18个后端微服务的命名空间:chatbot-server、token-plan-server、user-server、enterprise-server、super-chat-server……一路排下来,203个接口、18个微服务,攻击面直接摊开在眼前。
攻击面分布:203个接口/18个微服务份
认证体系:三道关卡全开
先拿最普通的接口试水,不带任何Token直接打:
1、无Token直通
去掉请求头里的Token字段,接口照常返回业务数据;填null、填undefined、填任意字符串,统统通过。全站912处接口零认证。门店接口甚至直接吐出了1864条全量数据。这扇门不是没锁,是压根没装。
2、JWT None算法伪造
既然认证形同虚设,那伪造一个身份试试。系统用JWT做鉴权,验签时没锁算法——构造一个alg=none的无签名Token,直接过了:
3、JWKS公钥暴露 + 算法混淆
更离谱的是,Token用的RS512非对称签名,但JWKS公钥端点居然裸奔着——拿到公钥就能把算法从RS512降级成HS512,拿公钥当HMAC密钥签发任意身份的Token。伪造身份这条路彻底打通,想冒充谁就冒充谁。
*身份接管:授权码与Token的双重失守*
平台接的是厂商统一登录(Passport),授权码获取和兑换两个接口都没做凭证校验:先取授权码,再换登录Token,一个普通访客就能登进任意账号。
拿到Token之后还能无限续期——刷新接口无设备绑定、无二次验证,会话理论上永不失效。到这里整条链已经闭环:公开接口进得来,身份随便伪造,账号随便接管。后面的注入和数据问题,都是在这条链上顺手的事。
完整攻击链:公开接口→伪造身份→任意账号接管→核心数据
**注入与数据:顺手的事****
平台接的是厂商统一登录(Passport),授权码获取和兑换两个接口都没做凭证校验:先取授权码,再换登录Token,一个普通访客就能登进任意账号。
拿到Token之后还能无限续期——刷新接口无设备绑定、无二次验证,会话理论上永不失效。到这里整条链已经闭环:公开接口进得来,身份随便伪造,账号随便接管。后面的注入和数据问题,都是在这条链上顺手的事。
1、SSTI模板注入(已实测)
日志埋点接口log-server/access,8个参数对模板表达式直接求值——传个#{7\7}返回49,${7\7}、\{7\7}、{{7\*7}}四种语法全生效。要是这些日志后面进了管理后台或者任何模板渲染链路,就是存储型攻击甚至RCE。
2、业务与数据层问题
逻辑层和数据层也是一堆事,重点罗列如下:
**数据总览:两轮测试的账****
盘一下整个测试:97个页面、203个接口、18个微服务,两轮下来总共3,913项发现,高危以上占2,296项。数字看着吓人,其实大部分是同一个认证问题在不同接口上的重复表现,去重后核心问题就那14类,上面基本都提到了。
两轮测试漏洞数量分布
主要漏洞类型分布TOP10
*总结与思考*
最让人意料不到的是,一个微服务这么多、攻击面这么大的企业级平台,安全水位还停留在“接口能通就行”的阶段。认证缺失导致所有边界形同虚设,从公网任何一个公开接口,一路能走到用户核心数据。
复盘下来有三个动作很关键:一是JS逆向要把chunk下载全,微前端子应用和一堆影子接口全藏在按需加载的代码里;二是漏洞验证必须有真实返回撑腰,光看响应时间这种旁路信号,容易自己骗自己;三是同类问题得按攻击面一个个过,修了A接口漏了B接口的情况太常见了。
对这家平台来说,网关层统一鉴权、API资产测绘、常态化自动扫描,再加上“发现—修复—重测”的闭环,是现在最该干的三件事。
防御方最怕的从来不是攻击者多高明,而是自己连攻击面有多大都不知道。
END
扫码关注
客服电话:400-0123-326
商务邮箱:marketing
@magic-shield.com
版权声明
本站仅做备份收录,仅供研究与教学参考之用。
读者将信息用于其他用途的,全部法律及连带责任由读者自行承担,本站不承担任何责任。










评论