gmsmeghana/Azure-WAF-Attack-Detection

GitHub: gmsmeghana/Azure-WAF-Attack-Detection

该项目是一个 Azure WAF 实践实验,通过部署 Web 应用防火墙并模拟常见 Web 攻击来验证 OWASP CRS 规则的检测与拦截能力。

Stars: 0 | Forks: 0

# Azure Web Application Firewall (WAF) — 实践实验 这是一份使用 Azure Application Gateway 部署和测试 **Azure Web Application Firewall (WAF)** 的实践指南。本实验涵盖设置、配置、攻击模拟、日志分析以及规则调整建议。 ## 工具与环境 | 工具 / 服务 | 用途 | |----------------|---------| | Microsoft Azure | 云平台 | | Azure App Service | 目标 Web 应用程序 | | Azure Application Gateway | WAF 主机 | | Azure Log Analytics | 日志查询与威胁分析 | | curl | 通过命令行进行攻击模拟 | | OWASP Core Rule Set (CRS) | WAF 检测规则 | ## 步骤 1 — 部署 Web 应用程序 创建了一个 Azure Web 应用程序,并通过 Azure App Service 进行了部署。 ![screenshot-01](https://raw.githubusercontent.com/gmsmeghana/Azure-WAF-Attack-Detection/main/screenshots/screenshot-01.png) ![screenshot-02](https://static.pigsec.cn/wp-content/uploads/repos/cas/df/df108992a17528b95176b758c2a235fb2d5dae520ae88c64b12ae3c53c6424b3.png) ![screenshot-03](https://static.pigsec.cn/wp-content/uploads/repos/cas/5d/5d3be8817b23c68f811b41b88d710aa088e0a0efedb63513d08e45fe1e93fbf7.png) ![screenshot-04](https://static.pigsec.cn/wp-content/uploads/repos/cas/97/973290fc7ccdd10677dce553cd798187c67656ae4391be8e7d54978f68fbd5c5.png) ![screenshot-05](https://static.pigsec.cn/wp-content/uploads/repos/cas/33/3371c151dcde3946c937fda43d5f10567b6c1e073e058bb3d4480882b7e799e5.png) ![screenshot-06](https://static.pigsec.cn/wp-content/uploads/repos/cas/fe/fefbc92f8ea710f743ee0450dc5b4c75a4c1feba1d4adcfa72a184765a09068c.png) ![screenshot-07](https://static.pigsec.cn/wp-content/uploads/repos/cas/c5/c54b1602a45c570c1717dc0485504bb94f3f33c6b6d9d43306b5895b1c952fe7.png) ## 步骤 2 — 配置 Application Gateway 使用以下组件设置了 Application Gateway: - **Frontend IP** — 分配给网关的公共 IP - **Backend Pool** — 指向已部署的 Web 应用 - **HTTP Settings** — 协议和端口配置 - **Listener** — 用于接收传入流量 ![screenshot-08](https://static.pigsec.cn/wp-content/uploads/repos/cas/60/607a78d4a5c2a3f37c581e841d731f54782a3dca16f66db6484826000618675a.png) ![screenshot-09](https://static.pigsec.cn/wp-content/uploads/repos/cas/0f/0f0acdf91ee853bc7bc7c3e09522756f147ef9f3117e0fdfd466b5c98d30b90a.png) ![screenshot-10](https://static.pigsec.cn/wp-content/uploads/repos/cas/09/09e8d3d57b140453ef0408761e0db80ef1ce8d561e87034ac7f51a14f783bd62.png) ![screenshot-11](https://static.pigsec.cn/wp-content/uploads/repos/cas/82/82c905a3e2386dd8ce4998134e76d252e466714d23d037505989520cf0dbdd53.png) ![screenshot-12](https://static.pigsec.cn/wp-content/uploads/repos/cas/54/54f08e01ba6d1c5728fac376a85504f248087ac76ac192a5d6a791fc150d6dd8.png) ![screenshot-13](https://static.pigsec.cn/wp-content/uploads/repos/cas/c0/c00e4bf6619df9c845bfddd036fd5d5e109466a8ef4a0aeaa8edda9d8b79548d.png) ![screenshot-14](https://static.pigsec.cn/wp-content/uploads/repos/cas/72/7240b5c7844af3d7262589af2d4585967439e76c378975f32c27bd9cead0464e.png) ![screenshot-15](https://static.pigsec.cn/wp-content/uploads/repos/cas/e5/e5296607fdbd19d9464ea40854970b8473d14449b8678d97d4f3113f3acfaea2.png) ![screenshot-16](https://static.pigsec.cn/wp-content/uploads/repos/cas/b6/b69f41b017bce4b96cf58c24941d4867b9c6f5382f5b1f6e8253c6e469ca541d.png) 配置后分配的公共 IP 地址: ![screenshot-17](https://static.pigsec.cn/wp-content/uploads/repos/cas/07/0725eadf5d56dfa4de5a2b6acadc444cb7e507420471701df1deb5084cbef1b2.png) ## 步骤 3 — 启用诊断设置 在 Application Gateway 上启用了诊断设置,以将 WAF 日志路由到 Log Analytics 进行查询和分析。 ![screenshot-18](https://static.pigsec.cn/wp-content/uploads/repos/cas/a9/a9a0fa4c050f24e34c7d1cd164b3362feb461f8b64087610664019ec6a62f309.png) ## 步骤 4 — 验证后端健康状况 确认后端池健康,并且流量可以从网关流向 Web 应用程序。 ![screenshot-19](https://static.pigsec.cn/wp-content/uploads/repos/cas/3c/3ce82bc9d6c9bd630517c6354be5e53b9cfaade3103c2daf8733d2ef6e654c9f.png) ## 步骤 5 — 查询日志 使用 Log Analytics 对 WAF 日志运行查询,并验证事件是否被正确捕获。 ![screenshot-20](https://static.pigsec.cn/wp-content/uploads/repos/cas/7c/7ced6b2f5194f904459f0397c114398780e1e5656c59170c2c796f6e68645d53.png) ## 步骤 6 — 禁用 WAF 策略(用于基准测试) 暂时禁用了 WAF 策略以建立基准——确认在重新启用进行攻击测试之前,在没有 WAF 干预的情况下请求可以正常通过。 ![screenshot-21](https://static.pigsec.cn/wp-content/uploads/repos/cas/a4/a480dd3eb1071cec0ab8820f9c445096083b18e1cf279a17c4d51760cce5e963.png) ![screenshot-22](https://static.pigsec.cn/wp-content/uploads/repos/cas/9d/9d526970f5cb31468aaae30e54a8f64e6ba23f5d5aadd506056d68c1bd5258ab.png) ## 步骤 7 — 攻击模拟 重新启用 WAF,并使用 `curl` 运行以下攻击 payload 来测试检测和拦截功能: ``` # SQL Injection curl "http:///?id=1'" # Command Injection / Directory Traversal curl "http:///?cmd=; cat /etc/passwd" # 通过 POST body 进行 SQL Injection curl "http://" -d "username=admin'" # Cross-Site Scripting (XSS) curl "http://" -d "" ``` ![screenshot-23](https://static.pigsec.cn/wp-content/uploads/repos/cas/cd/cd743cbfe8128feaaef9cafe582590718701fc21e0c819d33ee83bb40e1535ad.png) ![screenshot-24](https://static.pigsec.cn/wp-content/uploads/repos/cas/ec/ec1f75cf8f74c23547c37cb73b6a8a76f256bb777f832aae8dda195748ca6d7f.png) ![screenshot-25](https://static.pigsec.cn/wp-content/uploads/repos/cas/92/9266613cf80a00c41e91529ec7043dcf03312b3f97159c5ef06f6691fece6238.png) ## 结果 | 攻击类型 | OWASP CRS 规则 | 操作 | 日志消息 | |-------------|---------------|--------|-------------| | SQL 注入 | 规则 942100 | 已拦截 | 在 query 参数中检测到使用 AND/OR 运算符的 SQL 注入 | | 跨站脚本攻击 (XSS) | 规则 941130 | 已拦截 | 在 query string 中检测到跨站脚本漏洞 | | 目录遍历 | 规则 930120 | 已拦截 | 在 URL 路径中发现目录遍历序列 | | 正常流量 | 无 | 已通过 | 未检测到可疑活动 | ## 观察结果 **威胁拦截** WAF 成功识别并拦截了 SQL 注入、XSS 和目录遍历攻击。OWASP CRS 规则根据攻击特征正确触发。 **误报** 一些合法流量触发了 WAF 规则——例如,包含 `SELECT` 等关键字的参数名称被规则 942100 标记。这凸显了在生产环境中进行规则调整的必要性。 **日志与洞察** WAF 日志针对每个被拦截的请求提供了详细信息,包括源 IP、规则 ID 和恶意 payload。将日志模式与请求行为相关联是了解威胁态势的关键。 ## WAF 调整建议 **减少误报** 对于 942100 (SQL 注入) 等规则,使用子规则排除或阈值调整来调整敏感度,以避免拦截包含类似 SQL 关键字的合法流量。 **Log Analytics 模式** 构建日志查询以呈现重复的攻击模式——这些模式可用于随着时间的推移进一步优化 WAF 规则。 **自动化威胁响应** 将 WAF 日志与 **Azure Sentinel** 或 SIEM 解决方案集成,以实现对高严重性威胁的自动告警和响应。 ## 关键要点 - 带有 OWASP CRS 的 Azure WAF 针对常见的 Web 攻击提供了强大的开箱即用保护 - 日志记录和诊断至关重要——如果没有它们,WAF 事件将处于不可见状态 - 在实际部署中需要进行规则调整,以平衡安全性和可用性 - WAF 是防御的一层——作为更广泛的安全架构的一部分时,它的效果最好 ## 免责声明 本实验是在受控的 Azure 环境中出于教育目的进行的。所有攻击模拟均针对测试人员拥有和管理的资源进行。
标签:AppImage, Azure, CISA项目, DOE合作, OWASP CRS, Web应用防火墙, 安全实验环境, 攻击模拟, 驱动签名利用