View a markdown version of this page

创建渗透测试 - AWS 安全代理

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

创建渗透测试

通过配置测试范围、目标域和 AWS 资源访问权限,为您的 Web 应用程序设置自动渗透测试。渗透测试通过模拟针对经过验证的域名的真实攻击场景,帮助识别正在运行的应用程序中的安全漏洞。

AWS Security Agent 会根据配置的范围和权限对您的 Web 应用程序执行全面的安全测试,在攻击者发现可利用漏洞之前提供有关这些漏洞的详细调查结果。

在此过程中,您将通过配置测试详细信息、定义测试范围和设置所需权限来创建渗透测试。

先决条件

在开始之前,请确保您满足以下条件:

  • 访问 AWS 安全代理 Web 应用程序

  • 至少有一个经过验证的域名可供测试

  • 具有 AWS 安全代理相应权限的 IAM 角色

  • 了解应用程序的架构和关键路径

开始创建渗透测试

在 Agent Web 应用程序中导航到渗透测试创建页面。

  1. 登录 AWS 安全代理 Web 应用程序。

  2. 导航到 “渗透测试” 部分。

  3. 选择 “创建渗透测试”。

提示

只有经过验证的域名才能包含在渗透测试中。请您的管理员在 AWS 管理控制台中验证域名。请参阅启用应用程序域进行渗透测试

为你的渗透测试命名

提供描述性名称,以帮助确定此渗透测试的目的和范围。

  1. 渗透测试名称字段中,输入渗透测试的描述性名称。

    名称应清楚地标识正在测试的应用程序、环境或组件。最多 100 个字符。

配置渗透测试范围

定义将测试哪些域和 URL 路径,并配置可选的排除项以控制测试边界。

添加目标域名

指定将主动进行安全漏洞测试的经过验证的域名。

  1. 渗透测试范围部分中,找到目标网址

  2. 展开 “已验证域名” 部分以查看可用域名。

  3. 目标 URL 字段中,输入目标域 URL。

    重要

    只能测试经过验证的域名。该 URL 必须位于您之前在 AWS 安全代理中验证过的域名下。 Sub-domains 已验证的域名不需要单独验证。

  4. 要添加多个目标域,请执行以下操作:

    1. 选择添加域

    2. 输入每个额外的域名 URL。

  5. 要移除目标网域,请选择域名网址旁边的移除

提示

为了获得最佳效果,请包括应用程序用户流中的所有域,包括 API、身份验证服务和内容交付的子域名。 Sub-domains 已验证的父域名不需要单独验证。

排除风险类型(可选)

如果特定风险类别不适用于您的应用程序,请选择将其排除在测试范围之外。

  1. 找到 “排除风险类型” 字段。

  2. 选择下拉列表以查看可用的风险类型。

  3. 选择要从渗透测试中排除的一种或多种风险类型。

    注意

    排除风险类型会限制测试范围。仅排除与您的应用程序无关或您想单独测试的风险类型。

添加超出范围的 URL 路径(可选)

指定在渗透测试期间不应测试的 URL 路径。AWS 安全代理排除指定路径及其下方嵌套的所有路径。例如,如果您添加https://example.com/admin为超出范围的 URL,https://example.com/admin/tools则也超出了范围。

  1. 找到 “Out-of-scope 网址” 部分。

  2. Out-of-scope URL 输入字段中,输入要排除的 URL 路径(例如,/admin/delete/api/reset)。

    警告

    Out-of-scope 路径未经过漏洞测试。确保仅排除测试期间不应访问的路径,例如破坏性操作或敏感的管理功能。

  3. 要添加多个超出范围的路径,请执行以下操作:

    1. 选择 “添加网址”。

    2. 输入每条其他路径。

  4. 要移除路径,请选择路径旁边的 “删除”。

添加可访问的域名(可选)

指定测试所需但不是漏洞测试目标的域。

  1. 找到 “可访问的网址” 部分。

  2. 在 “可访问的 URL” 输入字段中,输入在测试期间应可访问的域。

    注意

    为目标域之外的第三方服务(例如 Okta、Auth0、Stripe)添加可访问的域名。这是必需的,这样 AWS 安全代理才能在测试期间访问这些 URL 进行登录和导航。AWS 安全代理不会对这些域进行渗透测试,它们仅用于访问目的。即使可访问的域名与您的目标域名属于不同的域名,也无需进行所有权验证。只有目标域名需要经过验证的所有权。

  3. 要添加多个可访问的域,请执行以下操作:

    1. 选择 “添加网址”。

    2. 输入每个额外的域名。

  4. 要移除某个域名,请选择该域名旁边的移除

添加自定义 HTTP 标头(可选)

指定自定义 HTTP 标头,这些标头将添加到 AWS 安全代理在渗透测试期间发出的任何请求中。

  1. 找到 “自定义 HTTP 标头” 部分。

  2. 自定义 HTTP 标头输入字段中,输入将与出站请求关联的标头名称和值。

    注意

    默认情况下,除非指定了不同的自定义标头值,否则 AWS 安全代理会将自定义User-Agent标头User-Agent设置为 securityagent。

  3. 要添加多个自定义标题,请执行以下操作:

    1. 选择添加标头

    2. 输入每个额外的自定义标题。

  4. 要删除自定义标题,请选择标题旁边的移除

配置 IAM 角色

为此渗透测试选择预先配置的服务角色。AWS 安全代理使用代理 Space-based 权限模型,即管理员在设置您的代理空间时配置 IAM 角色。您可以从已经配置并可以使用的角色中进行选择。

  1. 在 “权限” 部分中,找到 “服务角色” 下拉列表。

  2. 选择授予 AWS 安全代理访问所需 AWS 资源的权限的 IAM 角色。

    重要

    所选的 IAM 角色必须有权访问渗透测试所需的 VPC 资源、 CloudWatch 日志和任何其他 AWS 服务。验证该角色与 AWS 安全代理的信任关系是否正确。

  3. 找到CloudWatch 日志组下拉列表。

  4. 选择将存储渗透测试日志的日志组。 (可选)

    注意

    选定的 CloudWatch 日志组将存储渗透测试执行的详细日志,包括发出的请求、收到的响应和发现的漏洞。

    如果您不选择日志组,则会自动创建一个带有/aws/securityagent前缀的新 CloudWatch 日志组来存储渗透测试日志。

自动代码修复

选中 “启用自动修复” 复选框。

重要

为了修复源代码存储库中的安全发现,AWS 安全代理可能会向您的存储库提交拉取请求。拉取请求可能对所有对仓库具有读取权限的用户可见。

配置 VPC 资源(可选)

如果您的目标域为私有域且托管在 VPC 中,请配置 AWS 安全代理应运行渗透测试的 VPC 设置。只有不可公开访问的应用程序才需要执行此步骤。

注意

如果您的目标域名可以公开访问,请跳过此步骤。只有测试托管在 Amazon Virtual Private Cloud 中的私有应用程序时才需要 VPC 配置。

为渗透测试环境选择 VPC、子网和安全组。

  1. VPC 部分,找到 VPC ID 下拉列表。

  2. 选择托管目标域的 VPC。

    重要

    选定的 VPC 必须包含您在步骤 3 中指定的目标域。确保 VPC 具有适当的路由和网络配置,以允许 AWS 安全代理访问您的应用程序。

  3. 找到 “子网” 下拉列表。

  4. 选择一个或多个应在其中运行渗透测试的子网。

    注意

    选择能够通过网络访问目标应用程序的子网。渗透测试将使用部署在这些子网中的资源执行。

  5. 找到 “安全组” 下拉列表。

  6. 选择控制渗透测试网络访问权限的安全组。

    重要

    所选安全组必须允许您的目标域和任何可访问域的出站流量。确保安全组规则允许进行全面测试所需的网络访问权限。

配置身份验证凭证(可选)

如果您的目标域需要身份验证,请提供证书,以允许 AWS Security Agent 在渗透测试期间访问您的应用程序的受保护区域。只有需要用户身份验证的应用程序才需要执行此步骤。

注意

如果您的目标域名不需要身份验证,或者您要测试的所有区域均可公开访问,请跳过此步骤。仅在需要 AWS 安全代理来测试应用程序中经过身份验证的部分时才配置证书。

添加 凭证

提供 AWS 安全代理用于访问您的应用程序的身份验证证书。

  1. 在 “凭据 #1” 部分中,选择一种凭据输入方法:

    • 输入证书-将您的证书直接输入到 AWS 安全代理中。

    • 高级设置-对于敏感的凭证信息,请使用高级选项,例如 AWS Secrets Manager 或 AWS Lambda 函数。有关详细信息,请参阅为渗透测试提供身份验证凭证

      提示

      对于生产环境或敏感证书,我们建议使用高级设置选项来安全地引用存储在 AWS Secrets Manager 或 Systems Manager Parameter Store 中的证书。

输入凭证详情

提供经过身份验证的帐户的用户名和密码。

  1. 在 “用户名” 字段中,输入用于身份验证的用户名。

  2. 在 “密码” 字段中,输入用于身份验证的密码。

    重要

    确保您提供的凭证具有适合您要测试的区域的相应访问级别。凭证应代表典型用户的访问级别,而不是管理权限。

选择访问域

指定哪个目标域将使用这些凭据进行身份验证。

  1. 访问域下拉列表中,选择将使用这些凭据的域。

    注意

    如果您有多个目标域需要不同的凭据,则可以在完成此凭据配置后单击 “添加其他凭据” 来添加其他凭据集。

配置代理登录提示(可选)

提供指导 AWS 安全代理完成应用程序的身份验证过程的说明。

  1. 如果您的身份验证流程需要特定说明,请展开代理登录提示部分。

  2. 输入说明如何在应用程序的登录流程中使用所提供的凭据。

    注意

    代理登录提示告诉代理如何将您的凭据应用于您的应用程序。这对于复杂的身份验证流程、多步登录过程或具有非标准登录过程的应用程序非常有用。包括分步说明,例如 “导航到/login,在'电子邮件'字段中输入用户名,输入密码,然后选择'登录'”。

添加多个凭据(可选)

如果您的应用程序需要多组凭据或不同的域需要单独的身份验证,请添加其他凭据集。

  1. 完成第一个凭据配置后,选择添加其他凭据。

  2. 为每个其他凭据集重复凭证配置步骤。

  3. 要删除凭据集,请选择凭证标题旁边的删除

提示

在应用程序中测试不同的用户角色、访问多个经过身份验证的域名或验证基于角色的访问控制时,请配置多个凭据。

附加其他资源(可选)

提供补充资源,帮助 AWS 安全代理进行更彻底、更准确的渗透测试。其他资源可能包括架构图、API 文档、配置文件、 GitHub 存储库或提供应用程序背景信息的 S3-hosted 材料。

注意

其他资源是可选的,但建议使用。提供有关您的应用程序的全面信息有助于确保全面的测试覆盖率,减少误报,并提供更具可操作性的结果。

为渗透测试添加资源

选择现有资源或上传有助于指导渗透测试的新文件。

  1. 在 “已连接的资源” 部分,您可以:

    • 选择 “从可用资源中选择”,从已连接到 AWS 安全代理的资源(例如 GitHub 存储库或 S3 存储桶)中进行选择。

    • 选择 “上传” 可直接从本地系统添加新文件。

提示

有用的资源包括 API 文档、架构图、 OpenAPI/Swagger 规范、配置文件、身份验证流程图以及描述应用程序结构和行为的任何其他材料。

从可用资源中选择

从已经与 AWS 安全代理集成的资源中进行选择。

  1. 选择 “从现有资源中选择”。

  2. 浏览来自互联来源的可用资源列表,例如:

    • GitHub 存储库,在 “GitHub 存储库” 选项卡

    • S3 桶

    • 之前上传的文件

    • 文档存储库

  3. 选择要包含在渗透测试中的资源。

  4. 选择 “添加到渗透测试” 以附加所选资源。

我们建议您选择相关 GitHub 存储库并将其添加到您的 pentest 中,这样 AWS Security Agent 就可以了解您的应用程序环境,并通过拉取请求(启用后)生成随时可以实施的代码修复

注意

从可用来源中选择的资源与其原始位置保持同步。如果您更新 GitHub 存储库或 S3 文件,则渗透测试将使用更新的版本。

注意

如果您有与 pentest 关联的私有 VPC 并配置了 GitHub 存储库,请确保可以通过您的私有 VPC 访问 GitHub 该私有 VPC 以提取 GitHub 资源。在大多数情况下,您需要确保默认允许通过 VPC NAT 网关的出站流量,或者配置特定规则以允许 GitHub IP 的出站流量(参见 GitHub Meta API 终端节点

上传新资源

直接从本地系统上传文件或向 AWS 安全代理提供纯文本内容。

  1. 选择上传

  2. 选择以下输入法之一:

    • 上传本地文件-从本地系统中选择一个或多个文件。

    • 粘贴纯文本-直接在输入字段中键入或粘贴文本内容。选择上传

  3. 然后选择 “添加” 以完成上传。

  4. 上传的资源显示在 “已连接的资源” 表中。

提示

如果您想在不创建单独文件的情况下快速提供 API 端点列表、网址模式、测试说明或其他基于文本的信息,请使用纯文本选项。

重要

确保上传的文件和粘贴的内容不包含敏感信息,例如生产凭证、私钥或个人身份信息 (PII)。使用经过消毒的配置文件和文档版本。

Connect 现有资源

现有资源可以来自您之前上传到 AWS Security Agent 的资源、您的 S3 存储桶以及您的集成 GitHub 存储库。选择 “从现有资源中选择” 以将其选中。

管理连接的资源

查看、整理和移除渗透测试附带的资源。

连接的资源表显示渗透测试中包含的所有资源以及以下信息:

  • 名称-文件名或资源标识符

  • 类型-资源类别(上传的文件、S3 资源、 GitHub 存储库等)

要管理资源,请执行以下操作:

  1. 使用复选框选择一个或多个资源。

  2. 选择 “从渗透测试中移除” 以分离所选资源。

注意

您可以通过单击列标题按名称或类型对表格进行排序。这有助于在处理许多文件时整理资源。

创建渗透测试

完成并启动您的渗透测试配置。

配置完所有设置后,就可以开始创建渗透测试了。

  1. 查看所有配置部分以确保准确性。

  2. 请选择以下选项之一:

    • 选择 “创建渗透” 以保存配置,而无需立即运行。

    • 选择 “创建并执行” 以保存配置并立即开始渗透测试。

    • 选择 “取消” 以放弃渗透测试配置。

重要

在运行渗透测试之前,请验证:

  • 所有目标域名均经过正确验证并可访问

  • IAM 角色具有适当的权限

  • Out-of-scope 已正确配置路径以防止测试破坏性操作

  • 您有权在所有目标域上执行安全测试

注意

渗透测试开始后,您可以从 “渗透测试运行” 部分监控其进度。测试可能需要几个小时才能完成。大多数在 16 小时内完成,具体取决于您的应用程序的范围和复杂性。