实验概览
欢迎参加 AWS Web Application Firewall 挑战实验! AWS WAF 是一种 Web 应用程序防火墙,可帮助保护您的 Web 应用程序或 API 免遭常见 Web 漏洞和僵尸程序的攻击,这些漏洞和僵尸程序可能会影响可用性、损害安全性或消耗过多的资源。使用 AWS WAF,您可以创建控制机器人程序流量和防范常见攻击模式(例如 SQL 注入 (SQLi) 或跨站脚本攻击 (XSS))的安全规则,从而让您可以控制流量到达您应用程序的方式。您还可以自定义滤除特定流量模式的规则。
在本实验中,您是一名安全工程师,在一家刚刚推出在线果汁商店的公司工作。公司要求您查找并缓解其 Web 应用程序中的 SQLi 和 XSS 漏洞风险。
与包含详细分步指导的传统实验不同,本挑战实验为您提供了目标,且只提供最低限度的指导。您需要运用自己在安全和常见 Web 漏洞攻击方面的知识来完成这些任务。
在第一组任务中,您会看到一个不安全的 Web 应用程序,且系统会提示您使用 SQL 注入和跨站脚本攻击来攻击它。如果您遇到问题,可以展开 Hint(提示)和 Solution(解决方案)菜单,获取攻击方面的帮助。
在第二组任务中,您将使用一系列托管式规则和自定义规则来部署和配置 AWS WAF,用于缓解您之前发起的攻击。
目标
本实验结束时,您将能够:
- 部署简单的 SQLi 和 XSS 攻击来破坏 Web 应用程序。
- 在 AWS WAF 中创建一个 Web 访问控制列表 (Web ACL),并将其与 Application Load Balancer 关联。
- 将 AWS 托管式规则组应用于 Web ACL。
- 将自定义规则应用于 Web ACL。
技术性知识先决条件
本实验需要您具备有关 SQL 的高级知识,以及对网络安全、常见 Web 协议和 RESTful 框架的扎实了解。您还应该能熟练使用远程桌面在 Windows Server 环境中工作。
系统要求
要完成本实验,您需要:
- Google Chrome
时长
完成本实验大约需要 60 分钟。
图标键
本实验中使用了不同图标,以提醒大家注意各种类型的说明和备注。下面的列表解释了每个图标的用途:
- 命令:您必须运行的命令。
- 预期输出:您可以用来验证命令或已编辑文件输出的示例输出。
- 备注:一项提示、技巧或重要指导。
- 了解详情:可以找到更多信息的位置。
- 提醒:提示特别相关或重要的信息(不查看该信息并不会损坏设备或数据,但可能导致需要重复某些步骤)。
- 警告:提醒这是一项不可逆转且可能造成命令或进程失败的操作(包括提醒配置在完成后将无法更改)。
- 思考:暂停一下,思考如何在自己的环境中应用某个概念,或者就当前的主题展开讨论。
- 安全:尽可能运用安全方面的最佳实践。
- 提示:针对某个问题或挑战的提示。
- 答案:针对某个问题或难点的解答。
实验环境
下图显示了实验环境的基本架构:
图片描述:上图描述了一个数据流。流量从一个名为 Pen Testing Host 的 EC2 实例流出,通过 AWS WAF,流入位于 Application Load Balancer 前面的 Cloudfront 分配。然后,ALB 将请求转发到一个 Auto Scaling 组。
下面的列表详细列出了图中最重要的资源:
- 一个 VPC,有两个私有子网和一个公有子网,分布在两个可用区。
- 一个面向内部的 Application Load Balancer,位于一个有两个节点的 Auto Scaling 组前面。
- 一个 Cloudfront 分配,位于 Application Load Balancer 前面。
- 流量在到达 Cloudfront 分配之前会经过 AWS WAF。
- 一个名为 PenTestingHost 的 EC2 实例,位于公有子网中。