Java 脚本的 Snort 规则不起作用

Snort rule for Java script does not work

本文关键字:规则 不起作用 Snort 脚本 Java      更新时间:2023-09-26

我不明白为什么以下规则没有检测到内容"unescape":

alert tcp any any -> any any (msg:"example 1";flow:to_client,established;file_data;content:"unescape";sid:20001) 

虽然以下工作:

alert tcp any any -> any any (msg:"example 1";flow:to_client,established;file_data;content:"<script>";sid:20001)

似乎Snort没有检测到脚本标签中的任何内容。谢谢。

有一个

选项可以在 http 预处理器中命名 javascript。 您需要确保已启用此功能,否则取消逃逸等功能将不是您所期望的。但是,您仍然应该看到"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,二十和三十一.除了这些编码之外,Http Inspect 还将检测连续的空格并将其规范化为单个空格。Http Inspect 还将规范化加号并连接字符串。规则选项file_data可用于从规则访问此规范化缓冲区。当 Http 检查中的混淆级别等于或大于 2 时,将生成具有 SID 9 和 GID 120 的预处理器警报。

如果这仍然不起作用,那么您应该检查以下内容:

可能是 http 预处理器服务器配置配置中的server_flow_depth设置得太低。默认值为 300,因此如果"<script>"在前 300 个字节内,而"unescape"在 300 字节之后,snort 不会检查那么远。 尝试将此值设置为 65535。您应该能够通过为" </script>"提供内容匹配来测试这一点,如果这不会生成警报,则可能是该设置。