我的 SRC 第一滴血。已按平台规则脱敏:不出现厂商/学校名、接口路径与密钥本体。
背景
目标是某高校的线上业务系统(教育行业 SRC 公开范围)。
发现过程
- JS 审计:翻前端打包产物,逐 chunk 找硬编码密钥、内部接口与敏感注释。
- 异常接口:一个短信服务相关接口未登录即可访问,响应返回疑似短信服务商的平台凭据(AppKey/AppSecret 形态)。
- 确认敏感:凭据用于调用短信通道发验证码/通知,泄露即可冒用该单位名义发短信。
无害验证
验证只做了这些:
- 确认接口无需任何认证即可访问(普通 GET,无 Cookie/Token)。
- 确认凭据格式真实有效(与短信服务商文档的结构比对)。
- 没有调用任何发送接口、没有发一条测试短信、没有碰任何用户数据。
证明”凭据能被任意匿名用户获取”这个事实本身,就足够构成漏洞。
提交与审核
- 报告结构:漏洞描述 → 复现步骤(请求/响应截图,密钥打码)→ 危害分析(冒名短信、资费损失)→ 修复建议(密钥下线轮换、接口加鉴权)。
- 同批其他几份因”只证明缺陷存在、没证明能获取到什么”被打回——定级看的是实际危害证据,不是缺陷存在性。
- 这份最终审核通过(低危)。
收获
- JS 审计是 SRC 性价比最高的动作之一:硬编码凭据/隐藏接口至今大量存在。
- 无害验证边界感:证明”门没锁”就够了。
- 复现步骤要让审核员三分钟复现。