SuperAPI AI 工具集

testing-for-sensitive-data-exposure

安全与审计

查看项目

更新于 10-15 11:33

技能介绍

用途

本技能用于在获得授权的渗透测试中识别敏感数据暴露漏洞。它覆盖多个测试方向:客户端代码中的 API 密钥/凭证/令牌/机密泄露、API 响应中的个人身份信息(PII)与财务数据过度暴露、不安全的本地存储与缓存、未受保护的数据传输,以及版本控制系统中意外提交的机密。适用场景包括评估应用的数据保护控制,检查是否符合 GDPR、PCI DSS、HIPAA 等数据保护合规要求,以及评估处理 PII、财务数据或健康记录的 API。

前置条件

开展测试前需要:

  • 授权:包含数据处理范围的书面渗透测试协议。
  • Burp Suite Professional:用于拦截和分析响应中的敏感数据。
  • trufflehog:机密扫描工具(pip install trufflehog)。
  • gitleaks:Git 仓库机密扫描器(go install github.com/gitleaks/gitleaks/v8@latest)。
  • curl/httpie:用于手动端点测试。
  • 浏览器 DevTools:用于检查本地存储、会话存储与缓存数据。
  • testssl.sh:TLS 配置测试工具。

工作流(六个步骤)

步骤 1:扫描客户端代码中的机密

搜索 JavaScript 文件、HTML 源码和其他客户端资源中暴露的机密。技能提供了下载并搜索 JS 文件、匹配常见机密模式(如 AIza、AKIA、sk-、ghp_、xox 等前缀)、检查 source map、搜索 HTML 源码、探测 .env 等配置文件是否可访问的示例命令。

步骤 2:分析 API 响应中的数据过度暴露

检查 API 端点是否返回超出必要范围的数据。需要关注的敏感字段包括 password、password_hash、password_salt、ssn、national_id、credit_card_number、card_cvv、api_key、secret_key、access_token、internal_id、ip_address、session_id、date_of_birth 等。技能还提示对比公开与已认证响应、检查错误响应是否泄露堆栈跟踪或数据库查询,以及测试搜索/自动补全接口是否返回完整用户记录。

步骤 3:测试数据传输安全

验证敏感数据在传输过程中是否加密。包括检查 TLS 配置(testssl.sh 或 curl)、检查是否存在 HTTP 非加密端点、混合内容、表单是否通过 HTTPS 提交、敏感数据是否出现在 URL 查询字符串中,以及 WebSocket 是否使用 ws:// 而非 wss://。

步骤 4:检查浏览器存储中的敏感数据

检查本地存储、会话存储、Cookie 与缓存响应。包括查看 Set-Cookie 及其安全属性、检查 localStorage/sessionStorage/IndexedDB/Cache Storage 中是否存储令牌或 PII、检查敏感表单是否禁用自动完成(autocomplete="off"),以及敏感页面是否设置 Cache-Control: no-store。

步骤 5:扫描 Git 仓库与源码中的机密

搜索版本控制中意外提交的机密。包括检查 .git 目录是否暴露、使用 git-dumper 下载后配合 trufflehog 和 gitleaks 扫描、在授权范围内扫描 GitHub/GitLab 仓库,以及检查 Docker 镜像层中的凭证。常见机密包括 AWS 访问密钥、数据库连接字符串、API 密钥、SSH 私钥、JWT 签名密钥、OAuth 客户端密钥、SMTP 凭证等。

步骤 6:测试数据脱敏与遮蔽

验证敏感数据是否被适当遮蔽。包括检查卡号是否仅显示后四位、SSN 是否被遮蔽、API 响应是否包含密码哈希、导出/下载功能是否返回未遮蔽数据、日志端点是否含明文敏感数据,以及错误消息是否泄露用户存在性等信息。

关键概念

  • 敏感数据暴露:PII、凭证、财务数据或健康记录的意外泄露。
  • 数据过度暴露:API 返回的字段超过客户端所需。
  • 机密泄露:API 密钥、令牌或凭证暴露在客户端代码或日志中。
  • 静态数据:存储于数据库、文件或备份中且未加密的敏感数据。
  • 传输中数据:未经 TLS 加密在网络中传输的敏感数据。
  • 数据遮蔽:用脱敏值替换敏感数据(如仅显示卡号后四位)。
  • PII:可识别个人身份的信息。
  • 信息泄露:响应中过多的错误消息、堆栈跟踪或调试信息。

工具与系统

Burp Suite Professional(响应分析与正则扫描)、trufflehog(跨 git 仓库、文件系统与云存储的机密检测)、gitleaks(Git 仓库硬编码机密扫描)、testssl.sh(TLS/SSL 配置评估)、git-dumper(下载暴露的 .git 目录)、SecretFinder(JS 文件 API 密钥与令牌分析)、Retire.js(检测存在已知漏洞的 JS 库)。

常见场景

  • 场景 1:JS 打包文件中包含硬编码的 Google Maps API 密钥和 Stripe 公钥,且 Stripe 密钥权限过宽。
  • 场景 2:/api/users 端点返回包含 bcrypt 密码哈希的完整用户对象,可用于离线破解。
  • 场景 3:用户资料 API 返回未遮蔽的完整 SSN 和卡号,且未设置 Cache-Control: no-store,导致被浏览器和代理缓存。
  • 场景 4:生产服务器上 .git 目录可访问,攻击者用 git-dumper 下载历史,发现早期提交中已被“移除”但仍留在历史里的数据库凭证。

输出格式

该技能给出评估报告模板,包含:目标、评估日期、OWASP 分类(A02:2021 加密失败);发现摘要表(发现项/严重性/数据类型);暴露机密表(机密类型/位置/风险);API 数据过度暴露表(端点/返回的多余字段);以及修复建议,例如移除客户端代码中的硬编码机密并改用后端代理、立即轮换所有暴露凭证、从生产 Web 根目录移除 .git、实施响应字段过滤、对所有 API 响应中的 SSN 与卡号做遮蔽、为敏感端点添加 Cache-Control: no-store、在所有端点启用 TLS 1.2+ 并将 HTTP 重定向到 HTTPS、在 CI/CD 流水线中引入机密扫描(trufflehog/gitleaks)。

限制

必须在获得书面授权的范围内使用,资料明确要求数据处理范围的渗透测试协议。资料未提供适用平台、收费、价格或效果方面的信息。