Skip to content
KitploitKITPLOIT
工具博客
提交
工具博客
提交

黑客、渗透测试和网络安全工具,武装您的安全武器库!

Kitploit 是一个黑客、网络安全和渗透测试工具的目录。发现最新的项目更新,查找漏洞、分析系统、自动化测试并加强你的安全。

··订阅源·联系·隐私·© 2026 Kitploit

工具目录

分类

查看所有分类
Loading categories
metabadger — 通过自动升级到更安全的实例元数据服务 v2 (IMDSv2),防止 AWS EC2 上的 SSRF 攻击。 | Kitploit
工具/GitHubGitHub/salesforce/metabadger
云基础设施安全防御工具漏洞分析配置审计云安全错误配置Archived
GitHubsalesforce/metabadger

metabadger

通过自动升级到更安全的实例元数据服务 v2 (IMDSv2),防止 AWS EC2 上的 SSRF 攻击。

查看仓库
1431291年前Kitploit 审核通过

最受欢迎

查看全部 →

发现我们社区最常用的工具。

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享

Metabadger

通过在 AWS EC2 上自动升级到更安全的实例元数据服务 v2 (IMDSv2) 来防止 SSRF 攻击。

continuous-integration Downloads Twitter

Metabadger

目的和功能

  • 诊断并评估您当前对 AWS 实例元数据服务的使用情况,并了解该服务的工作原理
  • 为您升级到实例元数据服务 v2 做好准备,以防范 v1 攻击向量
  • 赋予您将实例专门更新为仅使用 IMDSv2 的能力
  • 赋予您在不需要实例元数据服务的地方禁用它,从而减少攻击面的能力

什么是 AWS 实例元数据服务?

  • AWS 元数据服务本质上让您可以访问实例内部的所有内容,包括实例角色凭证和会话令牌
  • 已知的 SSRF 漏洞,利用此攻击作为进入您环境的跳板
  • 您听说过的一些著名攻击,其中一些涉及通过可访问实例元数据服务的易受攻击的 Web 应用来获取访问权限
  • 攻击者可以从元数据服务中获取这些凭证,并在该特定实例之外使用它们

IMDSv2 及其为何应被使用

  • 通过在其配置中强制要求,确保实例始终使用元数据服务的 v2 版本
  • 通过向 AWS 元数据 API 发送带有必需请求头的 PUT 请求来启用会话令牌,IMDSv1 不检查此头,使攻击者更容易利用该服务
  • IMDSv2 中不允许 X-Forwarded-For 头,确保不允许基于代理的流量与元数据服务通信

问题陈述

工程团队可能在 AWS 中拥有种类繁多的计算基础设施,需要保护它们免受利用元数据服务的特定漏洞的攻击。如果使用了任何 IAM 或实例启动时需要用户数据信息,则实例上必须运行元数据服务。限制实例的攻击面对于防止通过窃取该服务提供的信息在您的环境中进行横向移动至关重要。过去许多著名的攻击都利用了这一特定服务来利用附加到实例的角色,或转储可通过元数据服务访问的敏感数据。Metabadger 可以帮助识别您在哪里以及如何使用实例元数据服务,同时赋予您减少任何不必要的攻击杠杆的能力,从而降低您在 EC2 中操作时的整体风险水平。

免责声明与回滚

使用此工具可能会影响您的 AWS 计算基础设施,因为并非所有服务和应用程序都能在没有元数据服务或仅使用版本 2 的情况下正常工作。在生产环境中部署时要谨慎,并制定回滚计划,以防出现异常情况。Metabadger 内置了使用 -v1 标志回滚到默认版本 1 的能力,您可以使用它快速将实例回滚到使用默认版本。理想情况下,您应该先在非生产环境中运行此工具并更新元数据版本,作为应用前的试验场。

加固指导步骤

步骤 1

首先,我们想要发现特定 AWS 区域中元数据服务的整体使用情况。Metabadger 将评估您凭据指向的 /.aws/credentials 文件中或当前假定角色所在区域的使用状态。如果您希望更改到当前配置以外的其他区域,也可以在运行 discover-metadata 命令时指定 --region 标志。一旦您清楚了解实例运行的是哪个版本以及服务是启用还是禁用,您就能制定出更加明确的加固行动方案。请注意,您可以在此处找到每个元数据选项的具体含义 这里。

步骤 2

切换到服务 v2 版本时应评估的一个方面是 IAM 角色的使用情况。Metabadger 让您能够识别某个区域中可能已经使用了 IAM 角色的实例。discover-role-usage 命令将输出附加了角色的实例列表。如果您有很多使用角色的实例,在将服务更新到 v2 时应采取预防措施,以确保工作负载的整体功能不受影响。

步骤 3

完成初步发现和评估后,您现在可以创建分阶段的方法来加固计算基础设施,使其使用元数据服务的 v2 版本,或在不需要的地方禁用它。harden-metadata 命令默认允许您更新特定区域中的所有实例。您也可以使用 --tags 标志传递实例标签,或传入包含要应用配置的实例 CSV 的输入文件。一旦您对 v2 进行了适当的更新并在不使用服务的地方禁用了它,您可以重新使用步骤 1 中的项目进行评估,以确认您的环境已被锁定。如果您有某些不想更新的实例,可以通过 --exclusion 标志按标签或实例 ID 排除它们。

要求

Metabadger 需要一个具有以下权限的 IAM 角色或凭据:

ec2:ModifyInstanceAttribute
ec2:DescribeInstances

在对实例元数据服务进行更改时,您应谨慎行事,并遵循 AWS 关于如何安全升级到版本 2 的额外指南。Metabadger 旨在协助您完成此过程,以进一步保护您在 AWS 中的计算基础设施。

AWS 关于更新到 IMDSv2 的最佳实践指南

使用与安装

通过 pip 安装

root@kitploit:~
pip3 install --user metabadger

通过 Github 安装

root@kitploit:~
$ git clone https://github.com/salesforce/metabadger
$ cd metabadger
$ pip install -e .

$ metabadger
Usage: metabadger [OPTIONS] COMMAND [ARGS]...

  Metabadger is an AWS Security Tool used for discovering and hardening the
  Instance Metadata service.

Options:
  --version  Show the version and exit.
  --help     Show this message and exit.

Commands:
  cloudwatch-metrics   Pull CloudWatch Metrics for MetadataNoToken usage
  disable-metadata     Disable the IMDS service on EC2 instances
  discover-metadata    Discover summary of IMDS service usage within EC2
  discover-role-usage  Discover summary of IAM role usage for EC2
  harden-metadata      Harden the AWS instance metadata service from v1 to v2

命令

cloudwatch-metrics

直接通过 AWS CloudWatch 中的 MetadataNoToken 指标拉取您对 IMDSv1 的使用情况信息。此命令将显示过去一小时内正在积极使用 v1 服务的实例。请注意,运行此命令时,您应具有查看 CloudWatch 指标的 IAM 权限。

root@kitploit:~
选项:
  -a, --all-region           拉取所有可用区域的 CloudWatch 指标
  -r, --region TEXT          指定执行此命令的 AWS 区域
  -t, --time-period INTEGER  CloudWatch 时间周期(秒),用于跟踪 IMDS v1 指标
  -p, --profile TEXT         指定 AWS IAM 配置文件
  --help                     显示此消息并退出

discover-metadata

您整体实例元数据服务使用情况的摘要,包括使用的版本和总体强制百分比。使用这些数字将帮助您了解元数据使用的整体加固状况以及您在何处强制使用 v2 还是 v1。

root@kitploit:~
选项:
  -a, --all-region    提供 AWS 账户中所有可用区域的元数据摘要
  -j, --json          以 JSON 格式获取元数据摘要
  -r, --region TEXT   指定执行此命令的 AWS 区域
  -p, --profile TEXT  指定 AWS IAM 配置文件

discover-role-usage

实例及其使用的角色摘要,这将让您清楚了解在对元数据服务本身进行更新时必须采取的谨慎程度。

root@kitploit:~
选项:
  -p, --profile TEXT  指定 AWS IAM 配置文件
  -r, --region TEXT   指定执行此命令的 AWS 区域

harden-metadata

修改实例以使用元数据 v1 或 v2 的能力,并通过干运行模式了解将修改多少实例。

root@kitploit:~
选项:
  -a, --all-region       更新您账户中所有区域的 IMDS
  -e, --exclusion        排除标志将应用于除指定的标签或实例之外的所有内容
  -d, --dry-run          干运行加固元数据更改
  -v1, --v1              强制使用元数据服务的 v1 版本
  -i, --input-file PATH  要加固 IMDS 的实例 CSV 文件路径
  -t, --tags TEXT        应用加固设置的逗号分隔标签列表
  -r, --region TEXT      指定执行此命令的 AWS 区域
  -p, --profile TEXT     指定 AWS IAM 配置文件

disable-metadata

使用此命令完全禁用实例上的元数据服务。

root@kitploit:~
选项:
  -e, --exclusion        排除标志将应用于除指定的标签或实例之外的所有内容
  -d, --dry-run          干运行禁用元数据服务
  -i, --input-file PATH  要禁用 IMDS 的实例 CSV 文件路径
  -t, --tags TEXT        应用加固设置的逗号分隔标签列表
  -r, --region TEXT      指定执行此命令的 AWS 区域
  -p, --profile TEXT     指定 AWS IAM 配置文件

日志记录

Metabadger 所做的所有更改都将记录到工作目录中名为 metabadger.log 的文件中。该文件将包含工具更改元数据服务时每个操作的以下信息:

  • 更改发生的时间和日期戳
  • 发生的更改(禁用、加固或更新)
  • 进行更改的实例 ID
  • 干运行信息
  • 更改是否成功的状态
下载工具