2017-08-03 7 views
0

これは私が取得試合です:ModSecurityはホワイトリストJSON ARG

against variable `ARGS:json' (Value: `{"j_username": "username", "j_password": "password_with_special_marks", "remember_me": false, "from": (4 characters omitted)') [file "/usr/local/nginx/conf/rules/REQUEST-942-APPLICATION-ATTACK-SQLI.conf"] [line "509"] [id "942130"] 

パスワードは特別なマークやSQLインジェクションなど、それはフラグがそれを持っています。

私は両方でルールをホワイトリスト試してみました:それらの

SecRuleUpdateTargetById 942130 !ARGS:'j_password' 
SecRuleUpdateTargetById 942130 !ARGS:'json' 

どちらも働きました。質問は、私は試合のARGSからどのような議論を取るべきですか?

答えて

0

あなたはARGS:jsonと一致する必要があります。ここで考慮すべきことがいくつかあります。

  1. SecRuleUpdateTargetByIdはルールの後に来なければなりません。 OWASP CRS 3.xを使用しているようですので、理想的にはRESPONSE-999-EXCLUSION-RULES-AFTER-CRS.conf.exampleの名前をRESPONSE-999-EXCLUSION-RULES-AFTER-CRS.confに変更し、それをそこに置く。
  2. ちょうど私がリファレンスマニュアルhttps://github.com/SpiderLabs/ModSecurity/wiki/Reference-Manual#secruleupdatetargetbyidによって提出されたガイダンスに従えば安全です。形式はSecRuleUpdateTargetById 12345 "!ARGS:foo"にする必要があります。あなたのケースでは、SecRuleUpdateTargetById 942130 "!ARGS:json"
  3. ですが、そうではないかもしれませんが、リクエスト全体がJSONであれば、ModSecurityにそのように処理するよう指示できます。これは、推奨されるModSecurity設定(https://github.com/SpiderLabs/ModSecurity/blob/v2/master/modsecurity.conf-recommended#L25)でデフォルトで行われます。パラメータがJSONの場合、現時点でModSecurityは現在、指定されたパラメータを処理できません。しかし、保護はまだ機能しますが、上記の場合と同様に理想的ではありません。
  4. Drupalのような十分に確立されたプロジェクトの場合は、既存のDrupal Exclusions(https://github.com/SpiderLabs/owasp-modsecurity-crs/blob/e4e0497be4d598cce0e0a8fef20d1f1e5578c8d0/rules/REQUEST-903.9001-DRUPAL-EXCLUSION-RULES.conf)の使用を検討してください。これらは、crs-setup.confのSecAction 900130をコメントアウトし、Drupal除外を有効にすることで有効にすることができます。例https://github.com/SpiderLabs/owasp-modsecurity-crs/blob/v3.0/master/crs-setup.conf.example#L296を参照してください。

幸運!

関連する問題