
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 參數的名稱可以是正規表示式。好的。嘗試了幾個(見上文)但失敗了。
你知道為什麼嗎 ?