本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
为渗透测试提供身份验证凭证
提供证书,使 AWS 安全代理能够测试您的 Web 应用程序中经过身份验证的区域。如果没有证书,代理只能测试可公开访问的页面和 API。
配置身份验证凭证
-
在渗透测试创建工作流程中,找到 “身份验证凭证-可选” 部分。
-
在 “凭证 #1” 部分,选择您的凭证输入方法:
-
输入凭据-直接输入凭据。最适合开发和测试环境。
-
高级设置-使用 AWS-native 凭据管理。建议用于生产环境和敏感凭证。
-
高级选项
如果您选择高级设置,则可以从三种凭据策略中进行选择:
-
IAM 角色假设-适用于使用 AWS Cognito 或 IAM 身份验证的应用程序
-
AWS Secrets Manager-通过加密和轮换实现安全的证书存储
-
Lambda 函数-用于动态证书生成或复杂的身份验证流程
直接输入凭证
-
选择 “输入凭据”。
-
输入用户名和密码。
-
在 “访问 URL” 下拉列表中,选择将使用这些凭据的 URL。必须从目标端点列表中选择。
-
(可选)在 2FA-可选字段中,为需要双重身份验证的应用程序提供 TOTP 密钥。您可以:
-
直接输入 TOTP 密钥(例如
JBSWY3DPEHPK3PXP),或输入完整的otpauth://totp/URI(例如otpauth://totp/Example:user@example.com?secret=JBSWY3DPEHPK3PXP&issuer=Example)。 -
选择上传图标,从您的身份验证器应用程序设置页面上传二维码图像。在本地扫描二维码,并自动提取 TOTP URI。
当提供 TOTP 密钥时,代理会自动生成新的一次性验证码,并在登录期间检测到 2FA 提示时输入这些代码。
-
-
(可选)如果您的应用程序具有复杂的身份验证流程,请展开 Agent Space 登录提示以提供特定的登录说明。
重要
使用具有代表访问权限的测试账户,而不是个人或管理账户。
使用高级设置
当您选择高级凭证策略(Secrets Manager、Lambda 或 IAM 角色)时,AWS 安全代理会使用服务角色直接从已配置的 AWS 资源中检索您的证书。使用 Agent Space 登录提示向代理提供有关如何将这些凭据应用于应用程序的说明,例如,要导航到哪个登录 URL 以及要填写哪些表单字段。
注意
Secrets Manager 密钥和 Lambda 函数必须与您的 AWS 安全代理设置位于同一 AWS 账户中。 Cross-account 目前不支持证书。
-
选择高级设置。
-
在用户访问策略下拉列表中,选择以下选项之一:
选择可供代理担任的可用的 IAM 角色
对于使用 AWS Cognito、带有 IAM 身份验证的 API Gateway 或其他 AWS-native 身份验证系统的应用程序,请使用此选项。IAM 角色必须具有允许 AWS Security Agent 担任该角色的信任关系以及访问应用程序身份验证系统的权限。
从连接的 AWS Secrets Manager 中选择静态证书
使用此选项通过加密、轮换和访问审计,安全地从 AWS Secrets Manager 检索证书。
IAM 角色必须具有secretsmanager:GetSecretValue和secretsmanager:DescribeSecret权限。
代理直接从 Secrets Manager 中检索密钥值。使用 Agent Space 登录提示告诉代理如何将这些凭据应用于应用程序的登录流程,例如,要导航到哪个 URL 以及要填写哪些表单字段。您可以使用任何格式来存储您的密钥,因为代理将使用您在登录提示中提供的说明来解释该格式。
例如,如果代理要在上提交 username/password 登录表单https://example.com/login,则可以将您的密钥格式化为 JSON,其中包含username和password字段。如果应用程序需要 TOTP-based 2FA,请添加一个直接包含 TOTP 密钥或完整 otpauth://totp/ URI 的totpSecret字段:
{ "username": "test-user", "password": "secure-password-here", "totpSecret": "JBSWY3DPEHPK3PXP" }
然后,配置身份验证指令:。将访问 URL 设置为https://example.com(或从目标端点列表中选择的任何其他 URL)。在 Agent Space 登录提示中输入以下内容:“导航到https://example.com/login表单中提供的用户名和密码并将其输入表单。”
再举一个例子,如果您要在 HTTP 标头中提供 API 密钥,则可以将其存储为纯文本:
"api-key-here"
然后,配置身份验证指令:。在 Agent Space 登录提示中输入以下内容:“将 X-API-Key 标题设置为所有请求提供的 API 密钥。”
重要
仅支持 TOTP-based 2FA。不支持短信、电子邮件、推送通知、硬件密钥和 OAuth 身份验证。
选择可用的 Lambda 函数以动态检索证书
此选项用于复杂的身份验证系统、动态证书生成或与外部身份提供商的集成。
IAM 角色必须具有lambda:InvokeFunction权限,并且该功能必须在 30 秒内完成。
渗透测试运行时,AWS 安全代理会同步调用您的 AWS Lambda 函数,并通过一个识别渗透测试和正在解析的特定凭证的事件:
{ "pentest_arn": "arn:aws:securityagent:us-west-2:111122223333:pentest/pt-abcd1234-5678-90ab-cdef-EXAMPLE11111", "actor_identifier": "Credential1" }
-
pentest_arn— 正在解析证书的渗透测试的 Amazon 资源名称 (ARN)。使用它来确定函数中请求的范围、授权或审计。 -
actor_identifier— 您在控制台中为此凭据分配的凭据名称(例如)。Credential1当单个函数提供多个凭证时,使用它来返回正确的凭证。
代理直接使用函数的输出作为凭证。使用 Agent Space 登录提示告诉代理如何将这些证书应用于您的应用程序,就像使用 AWS Secrets Manager 一样。从连接的 AWS Secrets Manager 中选择静态证书有关如何格式化 Lambda 函数输出和支持的身份验证类型的示例,请参阅。
配置多个凭证
要测试不同的用户角色或身份验证系统,请执行以下操作:
-
选择添加其他凭据。
-
使用任一输入法配置其他凭据。
-
要删除凭据,请在凭据部分选择删除。
登录优化
登录优化允许 AWS Security Agent 从之前的 pentest 运行中学习导航模式,并将其应用于后续运行。这些模式包括登录流程和多步身份验证工作流程。这减少了代理重新发现如何进行身份验证所花费的时间,从而实现更快的扫描速度和更一致的测试覆盖范围。
登录优化的工作原理
在第一次运行 pentest 时,代理会发现如何使用您提供的凭据浏览应用程序的登录流程。它会记录成功的导航步骤,并生成捕获所学登录工作流程的技能文件。
在随后的运行中,代理会读取保存的技能文件并直接应用学到的导航模式,跳过发现阶段。这意味着:
-
更快地进行经过身份验证的测试 — 代理可以立即应用经过验证的导航模式,而不是从头开始探索
-
行为更加一致——代理遵循同样的行之有效的路径,而不是探索替代方案
注意
登录优化在运行中的第一个登录会话中进行学习。同一次运行中的后续登录会话将受益于在第一次会话中学到的知识。在 future 运行时,所有登录会话都将受益于保存的技能。
启用或禁用登录优化
默认情况下,登录优化处于启用状态。要禁用或重新启用它,请执行以下操作:
-
在 pentest 配置中,导航到 “身份验证凭据-可选” 部分。
-
找到 “登录优化” 开关。
-
要启用登录优化,请打开开关。要禁用,请将其关闭。
禁用后,代理会在每次运行时从头开始重新发现登录流程。之前学过的导航技能会被保留,如果该功能重新启用,则会再次应用。
提示
如果您的应用程序的登录流程发生了显著变化(例如重新设计的登录页面或新的身份验证步骤),则代理会通过在下次运行时更新其所学技能来自动进行调整。您无需手动重置优化。