web-dev-qa-db-ja.com

Webアプリケーションファイアウォールルールの最適化

以下は、ModSecurityCRSコアルールセットから取得した2つのルールです。これらの2つのルールは、XSS攻撃の基本ルールです。これらの2つのルールを見ると、それらの変数とアクションは、正規表現で異なるものと同じです。つまり、\ bgetparentfolder\b "と\ bonmousedown\b\W *?\ ="であり、そのようなルールが多数見つかりました。これは冗長ですか?これらのルール、つまり単一の正規表現を組み合わせることができますか?

SecRule REQUEST_COOKIES | REQUEST_COOKIES_NAMES | REQUEST_FILENAME | ARGS_NAMES | ARGS | XML:/ * "\ bgetparentfolder\b"\"phase:2、rev: '2.2.4'、capture、t:none、t:htmlEntityDecode、t:compressWhiteSpace、t :lowercase、ctl:auditLogParts = + E、block、msg: 'クロスサイトスクリプティング(XSS)攻撃'、id: '958016'、tag: 'WEB_ATTACK/XSS'、tag: 'WASCTC/WASC-8'、tag : 'WASCTC/WASC-22'、タグ: 'OWASP_TOP_10/A2'、タグ: 'OWASP_AppSensor/IE1'、タグ: 'PCI/6.5.1'、ログデータ: '%{TX.0}'、重大度: '2 '、setvar:' tx.msg =%{rule.msg} '、setvar:tx.xss_score = +%{tx.critical_anomaly_score}、setvar:tx.anomaly_score = +%{tx.critical_anomaly_score}、setvar:tx。% {rule.id} -WEB_ATTACK/XSS-%{matched_var_name} =%{tx.0} "

SecRule REQUEST_COOKIES | REQUEST_COOKIES_NAMES | REQUEST_FILENAME | ARGS_NAMES | ARGS | XML:/ * "\ bonmousedown\b\W *?\ ="\"phase:2、rev: '2.2.4'、capture、t:none、t:htmlEntityDecode 、t:compressWhiteSpace、t:lowercase、ctl:auditLogParts = + E、block、msg: 'クロスサイトスクリプティング(XSS)攻撃'、id: '958414'、タグ: 'WEB_ATTACK/XSS'、タグ: 'WASCTC/WASC-8 '、タグ:' WASCTC/WASC-22 '、タグ:' OWASP_TOP_10/A2 '、タグ:' OWASP_AppSensor/IE1 '、タグ:' PCI/6.5.1 '、ログデータ:'%{TX.0} '、severity:' 2 '、setvar:' tx.msg =%{rule.msg} '、setvar:tx.xss_score = +%{tx.critical_anomaly_score}、setvar:tx.anomaly_score = +%{tx.critical_anomaly_score} 、setvar:tx。%{rule.id} -WEB_ATTACK/XSS-%{matched_var_name} =%{tx.0} "

1
Ali Ahmad

さて、私がこれら2つの正規表現の違いを読み取る方法は、

\bgetparentfolder\b

\bonmousedown\b\W*?\=

最初の文字列は文字列「getparentfolder」と一致し、2番目の文字列は文字、数字、アンダースコア以外が追加された文字列「onmousedown」と一致し、前の項目(追加された文字)と0回以上遅延一致します。 。これは、onmousedownjavascriptイベントを使用する両方の方法に一致すると思います。

HTMLの場合:

<element onmousedown="SomeJavaScriptCode">

JavaScriptの場合:

object.onmousedown="SomeJavaScriptCode"

この ページ 電子ブックModSecurity 2.5から、XSS攻撃でonmousedownを使用する方法について説明しています。

ああ、そしてそれらの正規表現の最初の「\ bgetparentfolder\b」については、JavascriptまたはJScriptの参照には見つかりませんが、グーグルすると、その名前の関数とメソッドがいくつか表示されていることがわかります。たとえば、VBScriptなどの言語の.

したがって、2つのルールが同じクラスの攻撃(XSS)の非常に異なる実装を探していることは明らかです。したがって、それらを単一の結合された正規表現で単一のルールに結合することは意味がないと思います。

1
Luke Sheppard