我正在尝试使用 OWASP 规则集在 CentOS 7 上为 apache2.4 配置 mod_security。问题是我的 Web 应用程序生成了一个带有 -- 字符的 cookie,并且它被标记为 SQLI。我阅读了以下文章如何在 ModSecurity 中将某个 cookie 字符串列入白名单尝试禁用有问题的 cookie,但是没有成功:仍然收到 403 禁止错误。
我尝试将以下规则添加到我的 whitelist.conf(在 modsecurity.d/ 文件夹中):SecRuleUpdateTargetByMsg“检测到 SQL 注释序列。”!REQUEST_COOKIES:/^*Titlebox*(在同一行 ofc):
如果存在 cookie,我会收到 403 禁止。我尝试按照文章中所述创建一个文件,并将规则添加到 /etc/httpd/modsecurity-crs/base_rules/modsecurity_crs_61_customrules.conf 文件中,但仍然没有结果:我被阻止了。
因为这个 cookie 是合法的,所以它有问题。在当前版本的 mod_security 中修复该问题的方法是否发生了变化?还是我做错了?感谢您的帮助。
编辑:
每个 ID 的规则如下所示:SecRuleUpdateTargetById 981172 !REQUEST_COOKIES_NAMES:/^TitleBox/ 它有效
每条消息都像这样:SecRuleUpdateTargetByMsg“检测到 SQL 注释序列。” !REQUEST_COOKIES_NAMES:/^TitleBox 它不起作用并且仍然阻止我的 cookie
答案1
您链接到的问题是关于白名单规则 981231,如下所示:
SecRule REQUEST_COOKIES|!REQUEST_COOKIES:/__utm/|!REQUEST_COOKIES:/_pk_ref/|REQUEST_COOKIES_NAMES|ARGS_NAMES|ARGS|XML:/* "(/\*!?|\*/|[';]--|--[\s\r\n\v\f]|(?:--[^-]*?-)|([^\-&])#.*?[\s\r\n\v\f]|;?\\x00)" "phase:2,rev:'2',ver:'OWASP_CRS/2.2.9',maturity:'8',accuracy:'8',\
id:'981231',t:none,t:urlDecodeUni,block,\
msg:'SQL Comment Sequence Detected.'\
,severity:'2',capture,logdata:'Matched Data: %{TX.0} found within %{MATCHED_VAR_NAME}: %{MATCHED_VAR}',tag:'OWASP_CRS/WEB_ATTACK/SQL_INJECTION',tag:'WASCTC/WASC-19',tag:'OWASP_TOP_10/A1',tag:'OWASP_AppSensor/CIE1',tag:'PCI/6.5.2',setvar:tx.anomaly_score=+%{tx.critical_anomaly_score},setvar:tx.sql_injection_score=+1,setvar:'tx.msg=%{rule.msg}',setvar:tx.%{rule.id}-OWASP_CRS/WEB_ATTACK/SQL_INJECTION-%{matched_var_name}=%{tx.0}"
您正在尝试将 981172 列入白名单,如下所示:
SecRule REQUEST_COOKIES|!REQUEST_COOKIES:/__utm/|!REQUEST_COOKIES:/_pk_ref/|!REQUEST_COOKIES:/__utm/|!REQUEST_COOKIES:/_pk_ref/|REQUEST_COOKIES_NAMES "([\~\!\@\#\$\%\^\&\*\(\)\-\+\=\{\}\[\]\|\:\;\"\'\´\’\‘\`\<\>].*?){8,}" "phase:2,t:none,t:urlDecodeUni,block,\
id:'981172',rev:'2',ver:'OWASP_CRS/2.2.9',maturity:'9',accuracy:'8',\
msg:'Restricted SQL Character Anomaly Detection Alert - Total # of special characters exceeded',\
capture,logdata:'Matched Data: %{TX.1} found within %{MATCHED_VAR_NAME}: %{MATCHED_VAR}',tag:'OWASP_CRS/WEB_ATTACK/SQL_INJECTION',setvar:tx.anomaly_score=+%{tx.warning_anomaly_score},setvar:tx.sql_injection_score=+1,setvar:'tx.msg=%{rule.msg}',setvar:tx.%{rule.id}-OWASP_CRS/WEB_ATTACK/RESTRICTED_SQLI_CHARS-%{matched_var_name}=%{tx.0}"
如您所见,此规则的消息有所不同,因此您将错误的消息列入了白名单。因此它对您不起作用。