漏洞赏金日记:泄露的appsettings.json如何成为高价值发现
每个漏洞赏金猎人都梦想发现完美的远程代码执行或关键SQL注入漏洞。但往往,高价值报告的起点要低调得多:一个配置不当的文件。
最近在一次测试中,我偶然发现了一个文件,它将黑盒测试变成了白盒测试,向我展示了一家公司的完整应用基础设施数字蓝图。这个文件就是appsettings.json。
本文将带你了解这个简单的信息泄露漏洞如何成为有效发现,以及你能从中学到什么。
发现:找到蓝图
在对目标进行侦察时,我的内容发现工具标记了一个特殊端点:/appsettings.json
。
对于熟悉ASP.NET Core生态系统的人来说,这立即是一个重大危险信号。appsettings.json文件是应用程序配置的核心,它告诉应用程序如何启动、连接数据库的位置、使用的API密钥以及如何与其他服务交互。它绝不应该公开可访问。
访问该URL后,我看到了文件的完整内容。是时候查看它隐藏的秘密了。
1. 多个王国的钥匙:Azure AD凭证
最关键的是发现了所有三个环境的Azure Active Directory(AAD)身份验证配置:
|
|
虽然ClientId不是秘密密码,但它是关键标识符。拥有生产环境的ClientId后,攻击者可以停止猜测,开始系统性地探测应用程序真实的OAuth 2.0流程中的其他弱点,如开放重定向。
2. 后门的指针:开发API
文件还包含了他们内部开发API的确切URL:
|
|
这是个金矿。开发环境通常安全性较低,监控较弱,可能包含在生产环境中被禁用的调试端点。这为寻找更严重漏洞提供了更易攻击的高价值目标。
3. 后续线索:调试日志
最后,日志配置证实了我对环境成熟度的怀疑:
|
|
在生产相关配置中出现Debug日志级别表明安全卫生状况不佳。这意味着如果我能够触发错误,服务器可能会返回详细的堆栈跟踪,泄露更多内部信息。
从信息到影响
这不仅是数据列表,更是放在银盘上奉上的完整攻击计划。信息泄露漏洞的真正影响在于攻击者能利用这些信息做什么。
拥有此文件后,攻击者可以:
- 针对安全性较低的开发API寻找关键漏洞
- 使用生产ClientId对公司主要登录机制发起复杂攻击
- 利用内部角色知识(如管理员)尝试权限提升
遗憾的是,这在HackerOne上被标记为重复报告,意味着发现有效但我提交晚了。
无论如何,给同行猎人的关键经验:
- 始终搜寻配置文件:它们是常见的配置错误和关键发现的重要来源
- 理解技术栈:了解appsettings.json对ASP.NET的重要性是理解影响的关键
- 串联线索:报告的价值在于解释泄露信息如何串联成真实攻击场景
狩猎愉快!