mnv1851/Snort-XSS-Detection-Lab

GitHub: mnv1851/Snort-XSS-Detection-Lab

基于VirtualBox构建的Snort XSS检测实验环境,通过自定义IDS规则实现HTTP流量中跨站脚本攻击模式的识别与告警验证。

Stars: 0 | Forks: 0

# Snort XSS 检测实验室 ## 演示视频 [![Snort XSS 检测实验室演示](https://img.youtube.com/vi/CUlTq2RuL3Y/0.jpg)](https://youtu.be/CUlTq2RuL3Y) 点击上方缩略图观看完整视频。 ## 仓库结构 ``` Snort-XSS-Detection-Lab/ ├── README.md ├── rules/ │ └── local.rules ├── webapp/ │ └── test.php ├── report/ │ └── snort-xss-detection-report.md └── video/ ``` ## README.md # Snort XSS 检测实验室 ## 概述 本项目演示了一个基于 VirtualBox 构建的 Snort 检测实验室,用于识别 HTTP 流量中的跨站脚本攻击(XSS)模式。该实验室使用 Kali Linux 作为攻击机,Ubuntu 作为目标 Web 服务器和 Snort 传感器。Apache 和 PHP 被配置在 8080 端口上,并创建了自定义的 Snort 规则以检测可疑的 XSS 相关 payload。 ## 目标 - 构建用于 XSS 测试的 Web 攻击检测实验室 - 为恶意的 HTTP payload 检测编写自定义 Snort 规则 - 从 Kali Linux 模拟正常和恶意流量 - 在 Ubuntu 上验证 Snort 警报生成 - 记录结果以供蓝队作品集使用 ## 实验室环境 - Hypervisor:VirtualBox - 攻击机 VM:Kali Linux - 目标机 VM:Ubuntu - IDS:Snort - Web 服务器:Apache2 - PHP 处理:PHP - 端口:8080 - 协议:HTTP ## 网络配置 - Kali Linux:192.168.100.10 - Ubuntu 内部 IP:192.168.100.20 - Ubuntu NAT IP:10.0.3.15 - 内部网络:SOC-LAB 测试期间监控的流量路径: `Kali (192.168.100.10) → Ubuntu Apache/Snort (192.168.100.20:8080)` ## Web 应用程序 创建了一个简单的 PHP 页面,用于通过 `q` 参数反射用户提供的输入。 ### webapp/test.php ``` "; echo "

Search Result

"; echo "You searched for: " . $q; echo ""; ?> ``` ## Snort 规则 创建了自定义 Snort 规则,用于检测发往 8080 端口的 HTTP 请求中常见的与 XSS 相关的字符串。 ### rules/local.rules ``` alert tcp any any -> any 8080 (msg:"XSS Attack - Script Tag Detected"; content:"' "http://192.168.100.20:8080/test.php" ``` 预期检测: * XSS 攻击 - 检测到 Script 标签 * XSS 攻击 - 检测到 alert() ### 3. XSS Payload 测试 2 ``` curl -G --data-urlencode 'q=' "http://192.168.100.20:8080/test.php" ``` 预期检测: * XSS 攻击 - 检测到 onerror 事件 * 根据 payload 的处理情况,可能也会触发 alert() 警报 ### 4. XSS Payload 测试 3 ``` curl -G --data-urlencode 'q=' "http://192.168.100.20:8080/test.php" ``` 预期检测: * XSS 攻击 - 检测到 Script 标签 ## 验证步骤 在实时监控之前测试了 Snort 配置: ``` sudo snort -T -c /etc/snort/snort.conf ``` 随后以实时控制台模式启动了 Snort: ``` sudo snort -A console -c /etc/snort/snort.conf -i enp0s3 ``` ## 主要结果 * 验证了 Kali 和 Ubuntu 在内部 SOC-LAB 网络上的通信 * 成功在 8080 端口上配置了 Apache 和 PHP * 创建了一个测试 PHP 页面以反射 HTTP 请求中的输入 * 构建并验证了针对 XSS 类型 payload 的自定义 Snort 规则 * 确认良性流量保持安静 * 确认恶意 payload 触发了 Snort 警报 * 演示了针对 `onerror` 模式的迭代规则调优 ## MITRE ATT&CK 映射 * **T1190 – 利用面向公众的应用程序** * **战术:** 初始访问 本实验室模拟了针对暴露应用程序的恶意 Web 请求,并演示了对可疑 payload 的基于签名的检测。 ## 展现的技能 * 网络流量检查 * Snort 规则创建与验证 * Apache 和 PHP 配置 * 使用 curl 进行 HTTP 请求测试 * 检测工程基础 * 警报验证与故障排除 * 蓝队文档 ## 本项目为何重要 本项目通过在受控实验室环境中结合攻击模拟、Web 流量监控、自定义 IDS 规则创建和警报验证,展示了实用的蓝队技能。它展示了构建和记录符合 SOC 分析师职责的小型但现实的检测工作流的能力。 ## rules/local.rules ``` alert tcp any any -> any 8080 (msg:"XSS Attack - Script Tag Detected"; content:"