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 并提交注入向量:
## 🖼️ 攻击模拟截图

## 🚨 捕获的 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 检测日志截图

## 🛠️ 如何修复
1. **安全编码:** 移除显式的 `| safe` 引擎修饰符,以回退到 Flask 自动化的、上下文感知的 HTML 实体转义规则(`<` 和 `>`)。
2. **网络内联阻断:** 将你本地的 Snort 追踪编排参数从标准的被动告警标志迁移到主动的 drop 规则配置,以在网络适配器层面缓解传入的漏洞利用。
## 👤 作者 - Adithyan.V
标签:Python Flask, Snort3, XSS攻击检测, 入侵检测系统, 安全数据湖, 网络安全实验, 逆向工具