modsecurity

中文官网:http://www.modsecurity.cn/

一条示例规则如下:

## 凡诺企业网站管理系统PHP版v3.0存在SQL注入漏洞

SecRule REQUEST_FILENAME "@rx (?i:(/admin/cms_channel\.php))" "chain,rev:'1',ver:'MYWAF_CRS/1.0.7',t:none,t:urlDecodeUni,msg:'SQL injection vulnerability',tag:'MYWAF_CRS/WEB_ATTACK/SQLI',logdata:'Matched Data: %{TX.0} found within %{MATCHED_VAR_NAME}: %{MATCHED_VAR}'"
SecRule ARGS:del "@rx (?i:(select|union|and|update|insert|\(|\-\-|#|\/\*\*))" "capture,setvar:'tx.msg=%{rule.msg}',setvar:tx.anomaly_score=+%{tx.critical_anomaly_score}"

中间的每个字段都各代表什么意思,请让我慢慢给你拆解

一、通用字段

字段

含义

SecRule

创建一个使用所选运算符分析指定变量的规则

@rx

通过提供的正则表达式,对指定的变量进行匹配检测。rx是默认运算符,所有未明确指定运算符的规则都将默认使用@rx作为运算符

chain

使用紧随其后的规则与当前规则进行链接,形成规则链。链式规则允许更复杂的处理逻辑。

rev/ver

指定规则的修订版本。它与id动作结合使用可以提供规则已更改的指示。/ 指定规则集版本。

msg

将自定义信息分配给规则或规则链。 该消息将与每次警报一起记录到日志中。

tag

为规则或链指定标记(类别)。

logdata

将指定的数据片段记录为警报消息的一部分。

MATCHED_VAR_NAME

此变量保存与之匹配的变量的全名。

MATCHED_VAR

此变量保存最近匹配的变量的值。它类似于TX:0,但它由所有运算符自动支持,无需指定捕获操作。

captue

与正则表达式运算符(@rx)一起使用时,捕获操作将创建正则表达式捕获的副本,并将它们放入事务变量集合中。

下图是我理解中的一条较长规则的示意图:

我所理解的规则结构

二、其他

值得拎出来另说的有:

1、TX

该变量代表临时事务集合,用于存储数据片段,创建事务异常分值等。放入此集合的变量仅在事务完成之前可用。

数值

含义

0

将@rx或@pm运算符与捕获操作一起使用时的匹配值

1-9

使用@rx运算符捕获parens和捕获动作时捕获的子表达式值

MSC_.*

ModSecurity处理标志

2、setvar

创建,删除或更新变量。变量名称不区分大小写。

作用

用法

创建变量并同时对其进行初始化

setvar:TX.score=

删除变量

setvar:!TX.score

增加变量值

setvar:TX.score=+

减少变量值

setvar:TX.score=-

3、解码规则(t:)

此操作用于指定转换管道,用于在匹配之前转换规则中使用的每个变量的值。

解码

含义

none

不是实际的转换函数,而是指向ModSecurity的指令,用于删除与当前规则关联的所有转换函数。

urlDecodeUni

解码URL编码的输入字符串。

htmlEntityDecode

将编码为HTML实体的字符进行解码。

lowercase

使用当前C语言环境将所有字符转换为小写。

compressWhiteSpace

将任何空白字符(0x20, \f, \t, \n, \r, \v, 0xa0)转换为空格(ASCII 0x20),将多个连续空格字符压缩为一个。

base64Decode

解码Base64编码的字符串

三、web请求过程

1、request

例如发送请求包为:

字段

含义

匹配部分

REQUEST_BASENAME

该变量仅包含REQUEST_FILENAME的文件名部分(例如,index.php)。

index.php

REQUEST_FILENAME

此变量包含不带查询字符串部分的相对请求URL(例如,/index.php)。

/abc/def/index.php

2、response

字段

含义

匹配部分

四、其他

如何快速写出一条规则:

写比较简单的规则,就像做填空题一样,在合适的地方将空用合适的语句填起来就可以了。下面的例子中,我会将关键部位指示出来,方便更多的人参考

文档结束,后期继续优化

相关漏洞拦截

XSS

SQLi

XXE

SSRF

命令执行

路径遍历

搜索引擎爬虫防护

最后更新于

这有帮助吗?