問題タブ [mod-security2]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
2095 参照

mod-security - ModSecurity: 破壊的なアクションは、チェーン スターター ルールによってのみ指定できます

ファイルが特定のディレクトリにある場合にのみ、ModSecurity を使用して応答コンテンツを変更したいと考えています。次のようなルールを実装しました。

しかし、このルールを書いた後、apache2 を再起動すると、modsecurity はエラーを出します: ModSecurity: Disruptive actions can only be specified by chain starter rules. ルールを逆に書いてみましたが、役に立ちませんでした。

なぜそれが起こるのですか?

0 投票する
1 に答える
1015 参照

unicode - ModSecurity OWASP コア ルール セット - Unicode 誤検知

いくつかの Web サービスを実行しています。

OWASPコアルールセットを備えたModSecurity for Apache Webサーバーを使用しています。

キリル文字とギリシャ文字があるため、ギリシャ語とロシア語のリクエストには問題があります。

OWASP CRS のルールには、次のようなパターンがあります。

"(^[\"' ´’‘;]+|[\"'''';]+$)"

ModSecurity ログには、Unicode 文字である必要がある UTF-8 コード単位があります。すべてのASCII文字は、本来あるべき文字として表示されます。

例:

[一致したデータ: \x85 2 \xce\xb7\xce\xbb\xce\xb9\xce\xbf\xcf\x85\xcf\x80\xce が ARGS:q 内に見つかりました: 163 45 \xcf\x83\xce\xbf\ xcf\x85\xce\xbd\xce\xb9\xce\xbf\xcf\x85 2 \xce\xb7\xce\xbb\xce\xb9\xce\xbf\xcf\x85\xcf\x80\xce\xbf\xce \xbb\xce\xb7]

[パターン一致 "(?i:(?:[\"' \\xc2\\xb4\\xe2\\x80\\x99\\xe2\\x80\\x98]\\\\s*?(x?or|div|like|between|and)\\\\s*?[\\"'\xc2\xb4\xe2\x80\x99\xe2\x80\x98]?\\d)|(?:\\\\x(?:23 |27|3d))|(?:^.?[\"' \\xc2\\xb4\\xe2\\x80\\x99\\xe2\\x80\\x98]$)|(?:(?:^[\\"'\xc2\xb4\xe2\x80\x99\xe2\x80\x98\\\\]*?(?:[\\ ..." ]

これで、それがギリシャ語のリクエストによってトリガーされたことがわかりました: σουνιου ηλιουπολη (アテネの通り) それは私たちの問題ではありません。私たちはそれを理解することができます。

問題は、x80 が文字 ' (e2 80 99) の一部であり、x80 がギリシャ文字の一部でもあることです。これが誤検出の理由です。

トリガーされた実際のルール:

SecRule REQUEST_COOKIES|!REQUEST_COOKIES:/__utm/|!REQUEST_COOKIES:/_pk_ref/|REQUEST_COOKIES_NAMES|ARGS_NAMES|ARGS|XML:/* "(?i:(?:[\"' ´’‘]\s*?(x?or|div|like|between|and)\s*?[\"'''']?\d)|(? :\\x(?:23|27|3d))|(?:^.?[\"' ´’‘]$)|(?:(?:^[\"'´''\\] ?(?:[\d\"' ´’‘]+|[^\"'''']+[\"' ´’‘]))+\s*?(?:n?and|x?x?or|div|like|between|and|not|\|\||\&\&)\s*?[\w\"'´''][+&!@(),.-])|(?:[^\w\s]\w+\s ?[|-]\s*?[\"'´’‘]\s*?\w)|(?:@\w+\s+(and|x?or|div|like|between|and)\s*?[\"'´''\d]+)|(?:@[\w-]+\s(and|x?or|div|like|before|and)\s*?[^\w\s])|( ?:[^\w\s:]\s*?\d\W+[^\w\s]\s*?[\"'`´''].)|(?:\Winformation_schema|テーブル名\W ))" "phase:2,capture,t:none,t:urlDecodeUni,block,msg:'従来の SQL インジェクション プローブ 1/2 を検出',id:'981242',tag:'OWASP_CRS/WEB_ATTACK/SQL_INJECTION',logdata :'一致したデータ: %{TX.0} %{MATCHED_VAR_NAME} 内に見つかりました: %{MATCHED_VAR}',重大度:'2',setvar:'tx.msg=%{rule.id}-%{rule.msg} ',setvar:tx.sql_injection_score=+1,setvar:tx.anomaly_score=+%{tx.critical_anomaly_score},setvar:'tx.%{tx.msg}-OWASP_CRS/WEB_ATTACK/SQLI-%{matched_var_name}=%{ tx.0}'"

回避策として、 [\"' ´’‘] to (\"|'||\xc2\xb4|\xe2\x80\x99|\xe2\x80\x98)のようないくつかのパターンを調整して、文字を構築する UTF-8 コード単位の実際の組み合わせと一致するようにしました。コア ルール セットの 55 個の SQL インジェクション ルールすべてに対してこれを実行できますが、これは非常に時間のかかる作業です。

Apache や ModSecurity のデコードに設定ミスがあるだけなのだろうか。すべての非 ASCII 文字と一部の ASCII 文字も、Web ブラウザによって % および UTF-8 でエンコードされた URL であることがわかっています。

0 投票する
1 に答える
112 参照

linux - 特定の引数に対するルールのグループの除外

modsec_audit.logJSESSIONID Cookie に適用される SQL インジェクション ルールが原因で、多くのリクエストがブロックされています。

その特定の Cookie 名のルールを回避しようとしています。

私の最後の試みは:

SecRuleUpdateTargetByTag "OWASP_CRS/WEB_ATTACK/SQL_INJECTION" "!REQUEST_COOKIES:JSESSIONID"

それは動作しません。何か不足していますか?

0 投票する
2 に答える
2300 参照

apache - 複数の 404 の原因となる IP をブロックする mod_secure スクリプト

Web サイトで複数の 404 エラーを引き起こす IP アドレスを禁止したいと考えています。私は多くのことをグーグルで検索し、開始するためのアイデアを提供するいくつかのスクリプトを見つけました。そして、それらを組み合わせました。これが私のスクリプトです:

何らかの理由で、それは動作しません。多少の誤差はあると思います。申し訳ありませんが、私はコーディングの第一人者でもプログラマーでもありません。時間があるときは、自家製のプロジェクトで遊んでいます。誰かが私を助けてくれることを願っています。私の間違いは簡単に見つけて修正できます。

前もって感謝します!

「datastore」ディレクトリが作成され、アクセス可能になり、サイズが 0 バイトのファイルが 2 つ表示されます。

ありがとう!