漏洞赏金日记:泄露的appsettings.json如何成为高价值发现

本文详细记录了作者在漏洞挖掘过程中发现公开可访问的appsettings.json配置文件的全过程。该文件泄露了Azure AD凭证、开发API端点等关键信息,揭示了配置不当可能导致严重安全风险的完整攻击链,为安全研究人员提供了实用经验。

漏洞赏金日记:泄露的appsettings.json如何成为高价值发现

每个漏洞赏金猎人都梦想发现完美的远程代码执行或关键SQL注入漏洞。但往往,高价值报告的起点要低调得多:一个配置不当的文件。

最近在一次测试中,我偶然发现了一个文件,它将黑盒测试变成了白盒测试,向我展示了一家公司的完整应用基础设施数字蓝图。这个文件就是appsettings.json。

本文将带你了解这个简单的信息泄露漏洞如何成为有效发现,以及你能从中学到什么。

发现:找到蓝图

在对目标进行侦察时,我的内容发现工具标记了一个特殊端点:/appsettings.json

对于熟悉ASP.NET Core生态系统的人来说,这立即是一个重大危险信号。appsettings.json文件是应用程序配置的核心,它告诉应用程序如何启动、连接数据库的位置、使用的API密钥以及如何与其他服务交互。它绝不应该公开可访问。

访问该URL后,我看到了文件的完整内容。是时候查看它隐藏的秘密了。

1. 多个王国的钥匙:Azure AD凭证

最关键的是发现了所有三个环境的Azure Active Directory(AAD)身份验证配置:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
"AzureAdProviders": {
  "Quality": {
    "ClientId": "bxx-xx-xx-xx-xx",
    ...
  },
  "Production": {
    "ClientId": "7bxx-xx-xx-xxx-xx",
    ...
  },
  "Development": {
    "ClientId": "bxx-xx-xx-xxx-x",
    ...
  }
}

虽然ClientId不是秘密密码,但它是关键标识符。拥有生产环境的ClientId后,攻击者可以停止猜测,开始系统性地探测应用程序真实的OAuth 2.0流程中的其他弱点,如开放重定向。

2. 后门的指针:开发API

文件还包含了他们内部开发API的确切URL:

1
2
3
4
"ApiEndpoints": {
  "BaseUrl": "https://example.azurewebsites.net",
  "Path": "/path"
}

这是个金矿。开发环境通常安全性较低,监控较弱,可能包含在生产环境中被禁用的调试端点。这为寻找更严重漏洞提供了更易攻击的高价值目标。

3. 后续线索:调试日志

最后,日志配置证实了我对环境成熟度的怀疑:

1
2
3
4
5
"Logging": {
  "LogLevel": {
    "Default": "Debug"
  }
}

在生产相关配置中出现Debug日志级别表明安全卫生状况不佳。这意味着如果我能够触发错误,服务器可能会返回详细的堆栈跟踪,泄露更多内部信息。

从信息到影响

这不仅是数据列表,更是放在银盘上奉上的完整攻击计划。信息泄露漏洞的真正影响在于攻击者能利用这些信息做什么。

拥有此文件后,攻击者可以:

  • 针对安全性较低的开发API寻找关键漏洞
  • 使用生产ClientId对公司主要登录机制发起复杂攻击
  • 利用内部角色知识(如管理员)尝试权限提升

遗憾的是,这在HackerOne上被标记为重复报告,意味着发现有效但我提交晚了。

无论如何,给同行猎人的关键经验:

  • 始终搜寻配置文件:它们是常见的配置错误和关键发现的重要来源
  • 理解技术栈:了解appsettings.json对ASP.NET的重要性是理解影响的关键
  • 串联线索:报告的价值在于解释泄露信息如何串联成真实攻击场景

狩猎愉快!

comments powered by Disqus
使用 Hugo 构建
主题 StackJimmy 设计