
modsecurity の paranoia_level = 3 は、owasp crs バージョン 3.3.4 のルール 920272 を使用して、フェーズ 2 で 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"
同様に動作します。
しかし、パラメータ「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/"
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 パラメータの名前は正規表現にすることができます。OK。いくつか試してみましたが(上記参照)、失敗しました。
なぜなのかご存知ですか ?