在 http 预处理器中有一个规范化 javascript 的选项。您需要确保已启用此功能,否则 unescape 之类的功能将不是您所期望的。但是,您仍然应该看到“unescape”,所以我不完全确定这是您的问题。您可以在服务器配置选项中的 snort 手册中阅读有关如何配置此选项的信息。这是手册中有关此选项的片段:
"normalize_javascript 此选项启用 HTTP 响应正文中的 Javascript 规范化。您应该在配置此选项之前选择配置选项 extended_response_inspection。打开此选项时,Http Inspect 通过搜索<script>
标签在 HTTP 响应正文中搜索 Javascript并开始对其进行规范化。当Http Inspect看到<script>
没有类型的标签时,它被认为是javascript。javascript函数中的混淆数据,如unescape, String.fromCharCode, decodeURI, decodeURIComponent 将被规范化。在 unescape/decodeURI/decodeURIComponent 中处理的不同编码是 %XX、%uXXXX、XX 和 uXXXXi。除了这些编码之外,Http Inspect 还将检测连续的空格并将其规范化为单个空格。Http Inspect 还将规范化加号并连接字符串。规则选项 file_data 可用于从规则访问此规范化缓冲区。当 Http Inspect 中的混淆级别等于或大于 2 时,会生成 SID 9 和 GID 120 的预处理器警报。”
如果这仍然不起作用,那么您应该检查以下内容:
http 预处理器服务器配置配置中的 server_flow_depth 可能设置得太低。默认值为 300,因此如果“ <script>
”出现在前 300 个字节内,而“unescape”出现在 300 个字节之后,则 snort 不会检查那么远。尝试将此值设置为 65535。您应该能够通过“ </script>
”的内容匹配来测试它,如果这不会生成警报,则很可能是该设置。