核心是在流量层面前置识别并阻断Web漏洞探测请求,通过分析HTTP请求中URI参数、POST/Cookie字段及请求头的异常特征(如单引号、UNION、script标签、XXE声明等),结合Wireshark过滤与WAF规则联动实现“进门即拦”。

直接在流量层面识别并阻断 Web 漏洞探测请求,核心不是等攻击成功再响应,而是把异常构造特征“卡在进门之前”。关键在于理解探测行为与正常访问的差异——探测必然带试探性载荷,而正常用户不会发 ' OR 1=1--、<script>alert(1)</script> 或 phpinfo() 这类内容。
聚焦 HTTP 请求层的可观察特征
绝大多数探测请求会暴露在 HTTP 请求字段中,无需解密或深入应用逻辑,就能快速定位:
-
URI 参数含高危符号:如
id=1'、?name=<img src="https://img.php.cn/" alt="怎么利用网络流量分析技术识别并阻断针对 Web 漏洞的探测请求实战">、file=../../etc/passwd。Wireshark 中用过滤器http.request.uri contains "'" || http.request.uri contains "<script>" || http.request.uri contains "../"</script>即可批量捕获。 -
POST 或 Cookie 字段含 SQL/JS/XSS 关键字:如
union select、javascript:、onload=、eval(。注意大小写变体(UnIoN)和 URL 编码(%3Cscript%3E),可用http.file_data contains "union" || http.file_data contains "%3Cscript"覆盖。 -
异常请求头组合:例如
Content-Type: application/xml配合 XML 实体声明(<!ENTITY xxe SYSTEM "file:///etc/passwd">),或大量重复参数(user=admin&user=%27+OR+1%3D1--),这类结构在正常业务中极少出现。
用 Wireshark 快速筛出可疑流
不是逐包翻看,而是分步缩小范围:
- 先过滤目标 Web 服务:
ip.dst == 192.168.1.100 && tcp.port == 80(替换为实际服务器 IP 和端口); - 再叠加内容特征:
http.request.method == "GET" && (http.request.uri contains "'" || http.request.uri contains "UNION"); - 对 POST 请求单独处理:
http.request.method == "POST" && http.file_data matches "(?i)select.*from|system\(|exec\("(启用正则匹配,Wireshark 3.6+ 支持); - 导出匹配包 → 右键 → “Export Packet Dissections” → 选 CSV,方便后续用脚本批量统计源 IP 和请求频率。
从识别到阻断的落地路径
识别只是起点,阻断需联动基础设施:
-
边界 WAF 规则强化:将 Wireshark 提炼出的高频探测模式(如
/%2e%2e/、base64_decode\(、on\w+=)转为 WAF 的自定义规则,动作设为“拦截”而非仅记录; -
基于源 IP 的速率控制:对 1 秒内发起 ≥5 条含单引号或
的 GET 请求的客户端,自动触发防火墙限速或临时封禁(可用 iptables 或云厂商 ACL 实现); - 日志联动告警:将 Wireshark 过滤结果导出为 JSON,接入 ELK 或 Splunk,设置告警规则——例如“同一 IP 3 分钟内命中 3 类不同漏洞特征”,立即通知 SOC 团队人工复核。
绕过检测的常见手法及应对
攻击者常混淆载荷规避简单字符串匹配,需提前布防:
-
多层编码:如
%2527(%27 的二次 URL 编码),WAF 应开启“解码后匹配”,而非只查原始字节; -
空格替代:用
%09(Tab)、/**/(MySQL 注释)代替空格,规则中需覆盖常见分隔符变体; -
大小写混用 + 内联注释:如
SeLeCt/**/FrOm,正则应启用忽略大小写,并匹配注释符号组合。
不复杂但容易忽略:真正有效的阻断,依赖持续从流量中提取新特征反哺防护策略,而不是依赖一套静态规则跑半年。每天花 10 分钟扫一眼 Wireshark 的异常请求流,比堆叠十层防护模块更管用。

















