javascript - Java 脚本的 Snort 规则不起作用

标签 javascript rule snort

我不明白为什么以下规则没有检测到内容“unes​​cape”:

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 这样的功能将不会是您所期望的。但是,您仍然应该看到“unes​​cape”,所以我不完全确定这是您的问题。您可以在 server configuration options 的 snort 手册中了解如何配置此选项。 。以下是手册中有关此选项的片段:

“normalize_javascript 此选项启用 HTTP 响应正文中的 Javascript 规范化。在配置此选项之前,您应该选择配置选项extend_response_inspection。打开此选项时,Http Inspect 通过搜索来搜索 HTTP 响应正文中的 Javascript为 <script> 标签并开始规范化它。当 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 的预处理器警报。”

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

您的 server_flow_depth 可能在 http preprocessor server configuration 中配置设置太低。默认值为 300,因此如果“<script> ”出现在前 300 个字节内,而“unes​​cape”出现在 300 个字节之后,则 snort 不会检查那么远。尝试将此值设置为 65535。您应该能够通过“</script> ”的内容匹配来测试此值,如果这不会生成警报,则可能是该设置。

关于javascript - Java 脚本的 Snort 规则不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28266797/

相关文章:

javascript - jQuery 提升缩放 : initiate on click function

javascript - 使用 Range.insertNode() 动态添加图像到 DOM

javascript - meteor mongodb _id 在插入后发生变化(以及 UUID 属性)

validation - 如何使 Xtext 中的 Enum 文字不区分大小写

javascript - 用于日期和名称规则的 JS RegEx

mysql - 我可以将snort日志输出到数据库吗?

logging - 从 snort 读取警报日志

javascript - 如何使用setTimeout()来启动Flash动画?