diff --git a/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-macie-privesc.md b/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-macie-privesc.md new file mode 100644 index 000000000..c7a2a82e2 --- /dev/null +++ b/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-macie-privesc.md @@ -0,0 +1,25 @@ +# Amazon Macie - 绕过 `Reveal Sample` 完整性检查 + +AWS Macie 是一项安全服务,能够自动检测 AWS 环境中的敏感数据,例如凭证、个人身份信息 (PII) 和其他机密数据。当 Macie 识别到敏感凭证,例如存储在 S3 桶中的 AWS 秘密密钥时,它会生成一个发现,允许所有者查看检测到的“样本”。通常,一旦敏感文件从 S3 桶中删除,预计该秘密将无法再被检索。 + +然而,已识别出一种 **绕过** 方法,攻击者在具有足够权限的情况下可以 **重新上传一个同名** 但包含不同、非敏感虚拟数据的文件。这导致 Macie 将新上传的文件与原始发现关联,从而允许攻击者使用 **“Reveal Sample” 功能** 提取之前检测到的秘密。此问题构成了重大安全风险,因为被认为已删除的秘密仍然可以通过此方法检索。 + + + +## 重现步骤: + +1. 将一个文件(例如 `test-secret.txt`)上传到包含敏感数据的 S3 桶,例如 AWS 秘密密钥。等待 AWS Macie 扫描并生成发现。 + +2. 导航到 AWS Macie 发现,找到生成的发现,并使用 **Reveal Sample** 功能查看检测到的秘密。 + +3. 从 S3 桶中删除 `test-secret.txt` 并验证它不再存在。 + +4. 创建一个名为 `test-secret.txt` 的新文件,包含虚拟数据,并使用 **攻击者的账户** 重新上传到同一个 S3 桶。 + +5. 返回 AWS Macie 发现,访问原始发现,并再次点击 **Reveal Sample**。 + +6. 观察到 Macie 仍然揭示原始秘密,尽管文件已被删除并被不同内容 **替换, 在我们的案例中将是攻击者的账户**。 + +## 总结: + +此漏洞允许具有足够 AWS IAM 权限的攻击者恢复之前检测到的秘密,即使原始文件已从 S3 中删除。如果 AWS 秘密密钥、访问令牌或其他敏感凭证被暴露,攻击者可以利用此缺陷检索它并获得对 AWS 资源的未经授权访问。这可能导致权限提升、未经授权的数据访问或进一步危害云资产,从而导致数据泄露和服务中断。 diff --git a/src/pentesting-cloud/aws-security/aws-services/aws-macie-enum.md b/src/pentesting-cloud/aws-security/aws-services/aws-macie-enum.md new file mode 100644 index 000000000..c13b50f76 --- /dev/null +++ b/src/pentesting-cloud/aws-security/aws-services/aws-macie-enum.md @@ -0,0 +1,48 @@ +# Amazon Macie + +## 介绍 + +Amazon Macie 是一种数据安全服务,通过使用机器学习和模式匹配来发现敏感数据,提供数据安全风险的可见性,并能够对这些风险进行自动保护。 + +## 使用 AWS 控制台列出发现 + +在扫描特定的 S3 存储桶以查找秘密和敏感数据后,将生成并在控制台中显示发现。具有足够权限的授权用户可以查看和列出每个作业的这些发现。 + +Screenshot 2025-02-10 at 19 08 08 + + +## 显示秘密 + +Amazon Macie 提供了一项功能,可以以明文格式显示检测到的秘密。此功能有助于识别被泄露的数据。然而,由于安全问题,通常不建议以明文显示秘密,因为这可能会暴露敏感信息。 + +Screenshot 2025-02-10 at 19 13 53 + +Screenshot 2025-02-10 at 19 15 11 + +## 枚举 +```bash +# List and describe classification jobs +aws macie2 list-classification-jobs --region eu-west-1 +aws macie2 describe-classification-job --job-id --region eu-west-1 + +# Retrieve account details and statistics +aws macie2 get-macie-session --region eu-west-1 +aws macie2 get-usage-statistics --region eu-west-1 + +# List and manage Macie members (for organizations) +aws macie2 list-members --region eu-west-1 + +# List findings and get detailed information about specific findings +aws macie2 list-findings --region eu-west-1 +aws macie2 get-findings --finding-id --region eu-west-1 + +# Manage custom data identifiers +aws macie2 list-custom-data-identifiers --region eu-west-1 +aws macie2 get-custom-data-identifier --id --region eu-west-1 + +# List and detail findings filters +aws macie2 list-findings-filters --region eu-west-1 +aws macie2 get-findings-filter --id --region eu-west-1 + +``` + diff --git a/theme/ht_searcher.js b/theme/ht_searcher.js index 276bbfe6a..5a47c0ee3 100644 --- a/theme/ht_searcher.js +++ b/theme/ht_searcher.js @@ -471,12 +471,13 @@ window.search = window.search || {}; showResults(true); } - fetch('https://raw.githubusercontent.com/HackTricks-wiki/hacktricks-cloud/refs/heads/master/searchindex.json') + var branch = lang === "en" ? "master" : lang + fetch(`https://raw.githubusercontent.com/HackTricks-wiki/hacktricks-cloud/refs/heads/${branch}/searchindex.json`) .then(response => response.json()) .then(json => init(json)) .catch(error => { // Try to load searchindex.js if fetch failed var script = document.createElement('script'); - script.src = 'https://raw.githubusercontent.com/HackTricks-wiki/hacktricks-cloud/refs/heads/master/searchindex.js'; + script.src = `https://raw.githubusercontent.com/HackTricks-wiki/hacktricks-cloud/refs/heads/${branch}/searchindex.js`; script.onload = () => init(window.search); document.head.appendChild(script); }); diff --git a/theme/index.hbs b/theme/index.hbs index 683ea99c1..9c7fa3155 100644 --- a/theme/index.hbs +++ b/theme/index.hbs @@ -55,6 +55,7 @@