“不是总想着找突破口,有时,是在找他们忘记上锁的东西。”
什么是隐藏的 API ?
🚫 未记录(不在 Swagger 或公开文档中)
👻 过时的(由旧应用或开发面板使用)
🤫 被遗忘(意外留在生产环境中)
为什么它们很重要?
✅ 常常缺乏身份验证
✅ 绕过现代安全控制
✅ 可能泄露敏感数据
✅ 很少被‘白帽’测试
我是如何找到那个被遗忘端点的
被动侦察
通常通过waybackurls 、 gau 、 hakrawler 和 github-dorking 开始:
cat domains.txt | waybackurls | tee all_urls.txt
然后过滤掉类似 API 的端点:
grep "/api/" all_urls.txt | sort -u > api_endpoints.txt
高级技巧(大多数’白帽’都会错过这个):
grep -E "v1|v2|internal|beta|admin"
这些版本或内部端点通常保护较弱。
寻找旧APP或 JS 文件
可以通过诸如 APKMirror 上搜索了旧历史版本的 Android APK,使用 jadx 打开。
可以在 Java 代码中找到了一些硬编码的有趣端点。比如:
https://api.targetsite.com/v1/user/details_internal
大多数开发者会忘记关闭在旧版APP中使用的 API,始终检查 APK 文件和 React Native 包。
尝试访问端点
可以利用 Burp Suite 配合 Curl:
curl -X GET https://api.targetsite.com/v1/user/details_internal -H "Authorization: Bearer <token>"
比如上面这个端点它甚至没有检查Token,就有了响应包。
包含了完整用户信息,包括:
- 姓名
- 邮箱
- 内部状态
- 角色
等等
API 还可以显示任意用户 ID 的敏感信息:
https://api.targetsite.com/v1/user/details_internal?id=1001
https://api.targetsite.com/v1/user/details_internal?id=1002
…
这意味着任何人都可以在不登录的情况下爬取整个数据库。
最终,白帽小哥收获 500 美元赏金奖励。
你学到了么?