adithyanjkr/xss-snort3-detection

GitHub: adithyanjkr/xss-snort3-detection

该项目演示了如何使用Snort 3自定义特征码在本地Flask环境中实时检测跨站脚本攻击。

Stars: 0 | Forks: 0

# 🎯 通过 Snort 3 IDS 检测 XSS 一个最小化的概念验证实验环境,演示如何在 **Snort 3** 入侵检测系统内部使用自定义特征码实时检测跨站脚本攻击(XSS)Web 层攻击。 ## 📌 架构设置 **攻击组件:** 一个在 `8080` 端口上运行的本地 Python Flask 应用(`app.py`)。它模拟了一个社区反馈留言板,并且由于在处理用户 payload 时使用了 Jinja2 未经过滤的 `| safe` 求值过滤器,因此故意保留了反射型 XSS 漏洞。 **防御组件:** 一个主动嗅探本地回环适配器接口(`lo`)的 **Snort 3** IDS 实例,将原始的 HTTP 字符串数据包序列与量身定制的特征码模板进行匹配。 ## 💥 快速模拟 1. 启动目标服务器(`python3 app.py`)并初始化 Snort 监控引擎: sudo snort -c /etc/snort/snort.lua -i lo -k none -A alert_fast 2. 通过浏览器访问 http://127.0.0.1:8080 并提交注入向量: ## 🖼️ 攻击模拟截图 ![XSS 攻击触发](https://static.pigsec.cn/wp-content/uploads/repos/2026/06/030e1212de101723.png) ## 🚨 捕获的 IDS 告警 Snort 瞬间匹配了回环流上的请求 payload 缓冲区,并将以下实时安全标志直接记录到 stdout: 06/04-15:04:09.255324 [**] [1:999999:1] "XSS-RAW: Generic Script Keyword Detected" [**] [Priority: 0] [TCP] 192.168.1.4:48564 -> 192.168.1.4:8080 06/04-15:04:09.255324 [**] [1:1000006:1] "XSS-HTTP: Script Tag Injected into POST Body" [**] [Priority: 0] [TCP] 192.168.1.4:48564 -> 192.168.1.4:8080 ## 🖼️ Snort 检测日志截图 ![Snort 终端告警](https://static.pigsec.cn/wp-content/uploads/repos/2026/06/93bed77bdb101731.png) ## 🛠️ 如何修复 1. **安全编码:** 移除显式的 `| safe` 引擎修饰符,以回退到 Flask 自动化的、上下文感知的 HTML 实体转义规则(`<` 和 `>`)。 2. **网络内联阻断:** 将你本地的 Snort 追踪编排参数从标准的被动告警标志迁移到主动的 drop 规则配置,以在网络适配器层面缓解传入的漏洞利用。 ## 👤 作者 - Adithyan.V
标签:Python Flask, Snort3, XSS攻击检测, 入侵检测系统, 安全数据湖, 网络安全实验, 逆向工具