在针对 Web 应用进行安全测试时,有一个容易被忽略但回报率很高的侦察方向:仔细搜索前端 JavaScript 文件中出现的 .json 文件路径。特别是在 /assets/mock/、/test/、/fixtures/ 这类目录下,开发或测试人员很可能遗留了包含真实数据的测试文件。这些文件往往未做访问控制,直接暴露了诸如个人隐私信息、API密钥、Token乃至内部接口结构等敏感内容。
这种思路为何有效?因为现代前端开发中,为了方便联调和测试,常常会使用本地的 Mock 数据文件。项目上线后,如果清理不彻底,这些文件就可能被一并打包部署到生产环境。攻击者或测试人员只需从前端打包后的代码中定位到这些请求路径,即可尝试直接访问。
例如,在打包压缩后的 JS 文件中,你可能会发现类似这样的代码片段:
fetch(“/assets/mock/user.json”)
axios.get(“/mock/order-detail.json”)
这些路径直接指明了服务器上可能存在的、未受保护的 JSON 文件资源。
这些 Mock 或测试用的 JSON 文件里都可能藏着什么“宝藏”呢?
- 测试账号的邮箱、密码
- 真实的用户姓名、手机号
- 有效的 JWT Token 或会话标识
- 完整的内部 API 接口地址和结构
- AWS/Aliyun 等云服务的密钥、Stripe 支付密钥
- 内网服务的 URL 地址和数据库连接字符串
关键在于,这些文件通常没有任何访问权限校验,通过浏览器直接访问对应 URL 就能下载:
https://target.com/assets/mock/users.json
这无疑是一个典型的“低成本、高回报”的安全漏洞挖掘点。下面我们通过几个具体场景来看看其危害性。
场景一:泄露真实用户隐私信息
假设在对一个目标进行前端测试时,在其 main.js 文件中发现了这样一行代码:
axios.get(“/assets/mock/userList.json”)
那么,直接尝试访问构造出的完整 URL:
https://target.com/assets/mock/userList.json
返回的结果可能令人震惊:
[
{
“id”: 1001,
“name”: “Alice Zhang”,
“email”: “alice@company.com”,
“phone”: “+86-138xxxx”
}
]
这直接导致了用户个人身份信息泄露,属于高危的 PII 数据泄露漏洞。
场景二:泄露高权限测试 Token
另一个常见的情况是泄露用于模拟登录的 Token。代码中可能这样写:
fetch(“/mock/loginResponse.json”)
访问该文件,内容可能是:
{
“token”: “eyJhbGciOiJIUzI1NiIsInR5cCI...”,
“role”: “admin”
}
攻击者获取到这个 Token 后,很可能直接将其用于身份认证,从而绕过登录流程,实现未授权访问甚至获取管理员权限,这直接构成了认证绕过漏洞。
场景三:泄露内部架构与凭据
更严重的情况是,这些 JSON 文件可能直接暴露系统的内部架构。例如,一个配置文件可能包含:
{
“internalApi”: “http://10.0.3.15:9000/admin/deleteUser”,
“db”: “mongodb://user:pass@10.0.0.5:27017”
}
这不仅暴露了内网 IP 和端口,甚至直接给出了数据库的连接凭据。这类信息对于后续的内网横向移动和深度渗透具有极高的价值,属于严重的信息泄露漏洞。
总而言之,从前端 JavaScript 代码中挖掘未受保护的 JSON 资源路径,是一种非常直接且高效的信息收集手段。它提醒开发者在项目上线前务必清理测试和 Mock 文件,同时也为安全测试人员提供了一个清晰的检查清单。如果你在日常开发或安全研究中遇到过类似案例,欢迎到云栈社区的对应板块分享与交流。