这是在渗透测试期间,我在 Squash TM 中发现的一个敏感信息明文存储与敏感信息暴露漏洞。
Squash TM 是一个用于管理测试用例的 Web 界面。项目链接
Squash TM 至少到 1.18.0 版本会在管理面板中展示外部服务的明文密码,正如 HTML 源代码中的 ta-server-password 字段所示。
在 SquashTM 的管理面板中,外部服务(又称自动化服务器)页面包含服务账户的明文密码。这些外部服务可以是任何东西,一个常见的例子是 Jenkins 服务器。
以下是一个示例 URL:http://localhost:8080/squash/administration/test-automation-servers/1
以下是页面源代码的摘录:
<label for="ta-server-password">Password</label>
<div id="ta-server-password" class="display-table-cell" style="font-weight: bold;">cleartext_password</div>
这也意味着外部服务的密码是以明文形式存储的,我通过在数据库(H2 和 postgresql)中 grep 该密码确认了这一点。
此外,由于应用程序的默认配置如下,该漏洞的危害被进一步放大:
建议评分:4.1 (CVSS:3.0/AV:N/AC:L/PR:H/UI:N/S:C/C:L/I:N/A:N)
供未来的研究者参考:实际用户的密码是以 SHA1 存储的。这并不理想。 我简要审计了代码库,似乎所有 SQL 请求都正确构建(预处理语句)。 存在一些反序列化操作(报告生成和搜索功能),数据来自未经过滤的用户输入(GET 参数),并使用存在漏洞的 Jackson 组件版本,但似乎不可利用,因为没有多态类型处理。