我会推荐如下内容:
alert tcp any any -> any 5466 /
(msg:"FTP command execution"; flow:to_server,established; /
content: "POST"; http_method; nocase; /
content:"/admin_lua_script.html"; fast_pattern; http_uri;/
content:"command=os.execute"; http_client_body; nocase; /
metadata: service http;)
解释:
dest 端口 5466:
应尽可能指定端口。当您有源/目标的“任何/任何”规则时,snort 对待它们的方式与定义端口的规则不同。
重要提示:由于此漏洞利用模块在端口 5466 上运行并且是 http,因此您需要确保此端口在您的端口的 http 预处理器配置中。具体来说,您的 snort.conf 应该具有类似于以下内容的配置行:
预处理器 http_inspect_server:服务器默认配置文件所有端口 { 80 ... 5466 ...}
(显然不要放点,只代表你应该在那里拥有的其他端口)。如果您的 http 预处理器配置中没有此端口,则所有 http 内容修饰符都将不匹配,因为 snort 不会将此端口上的流量视为 http,这可能是您遇到的主要问题。
流:to_server,已建立;
您只想检查流向服务器的已建立会话。这将更有效率,因为 snort 不必检查未建立会话的随机流量,也不必检查流向客户端的流量,因为您知道此漏洞利用的方向将始终流向服务器。请求成功的唯一方法是客户端和服务器之间已经建立了连接,如果不是这样,漏洞利用将不会成功,并且对此发出警告是没有意义的。
内容:“发布”;http_方法;无壳;
您需要 nocase 进行后期匹配,因为 http 不要求该方法全部为大写字母。
内容:“/admin_lua_script.html”;快速模式;http_uri;
添加 fast_pattern 选项将使规则更有效,因为它会将其放入 snort 中的快速模式匹配器中。你知道这个内容是静态的并且永远不会改变(包括大小写),所以这符合快速模式匹配器的条件。由于这是规则中唯一区分大小写的内容匹配,因此 snort 会自行将其放入快速模式匹配器中,但如果您稍后使用另一个内容匹配修改规则,您会希望这是要使用的内容匹配对于 fast_pattern 匹配器。
内容:“命令=os.execute”;http_client_body;无壳;
这将在客户端正文中,因此添加 http_client_body 选项。
元数据:服务http;
如果您使用基于目标(现在应该是这样),则需要添加 service http 关键字。如果您不使用基于目标的规则,则在规则中包含此内容不会阻止触发规则,因此如果您知道此流量是什么服务,则将其放入也是一个好习惯。
附加说明:
您的自定义规则 sids 应为 1000000 或以上,低于此值的任何内容都保留用于 snort 分发规则。在此处查看更多信息