libmodsecurity + owasp crs + nginx:自訂排除規則中 POST 參數名稱中連字符的正規表示式

libmodsecurity + owasp crs + nginx:自訂排除規則中 POST 參數名稱中連字符的正規表示式

modsecurity 的 paranoia_level = 3 禁止在第 2 階段使用 owasp crs 版本 3.3.4 的規則 920272 使用 POST 負載 (application/x-www-form-urlencoded) 上傳不可列印的字元

但有時,它也會觸發 UTF-8 編碼的密碼。

首次嘗試停用規則 920272 有效:

SecRule REQUEST_URI "/login" \
    id:2001,\
    phase:2,\
    pass,\
    nolog,\
    ctl:RuleRemoveById=920272"

但它會停用對透過 POST 上傳的所有欄位的保護。

目標:僅針對 2 個 POST 參數停用 920272:

  • 密碼
  • 隱藏密碼

這裡事情變得複雜了:

SecRule REQUEST_URI "/login" \
    id:2001,\
    phase:2,\
    pass,\
    nolog,\
    ctl:RuleRemoveById=920272;ARGS:password"

也有效。

但參數「隱藏密碼」包含連字號。多次嘗試掩蓋連字符但沒有成功。

我努力了:

ctl:RuleRemoveById=920272;ARGS:hidden-password"
ctl:RuleRemoveById=920272;ARGS:hidden\-password"
ctl:RuleRemoveById=920272;ARGS:'hidden-password'"
ctl:RuleRemoveById=920272;ARGS:^/hidden-password/"
ctl:RuleRemoveById=920272;ARGS:^/hidden\-password/$"

可能還有更多......

我得到的錯誤是:

  • "Not a number: password" 或者
  • "Expecting an action, got: \-password" 或者
  • "Expecting an action, got: 'hidden-password'"

或以某種方式類似於上述訊息之一。

根據https://github.com/SpiderLabs/ModSecurity/wiki/Reference-Manual-%28v2.x%29#user-content-ARGS 參數的名稱可以是正規表示式。好的。嘗試了幾個(見上文)但失敗了。

你知道為什麼嗎 ?

相關內容