web-dev-qa-db-ja.com

安全でないHTTPメソッドを有効にする-無効にする方法

アプリのURLで合理的なアプリスキャンを実行すると、次の結果が返されます。

次のHTTPメソッド(動詞)の1つ(または複数)を許可するようにWebサーバーが構成されているようです-DELETE-SEARCH-COPY-MOVE-PROPFIND-PROPPATCH-MKCOL-LOCK-UNLOCK-PUT

これを修正するために、これらのメソッドを禁止するRewriteRuleを追加しました。手動でテストすると、応答コード403が表示されます。

curl -X PUT https://someurl.com/somecontext/somepage.xhtml

<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<html><head>
<title>403 Forbidden</title>
</head><body>
<h1>Forbidden</h1>
<p>You don't have permission to access /somecontext/somepage.xhtml
on this server.</p>
</body></html>

しかし、合理的なアプリスキャンでは、これが依然として問題として示されています。誰もが同じ問題に遭遇しましたか。このURLは、AJPを介してTomcatバックエンドに送られます。これに対する解決策をいただければ幸いです。

PS:LimitとLimitExceptを念頭に置いていましたが、mod_proxyまたはmod_jkを経由するリクエストをブロックするかどうかはわかりません

17
dOps

最後に働いたシンプルなソリューション

RewriteEngine On
RewriteCond %{REQUEST_METHOD} !^(GET|POST|HEAD)
RewriteRule .* - [R=405,L]

これにより、アプリのスキャンが幸せになります(そして私も)

16
dOps

ApacheはOPTIONS要求(潜在的にサポートされているメソッドのリストを取得する)をTomcatに転送していると思われます。次に、デフォルトのHttpServlet実装 doOptions を取得します。これは、明らかにAllowを含むTRACEヘッダーを返します。

doOptionsをオーバーライドして、この誤解を招くリストからTRACEを削除できます。たとえば、Apacheに一致させる場合:

response.setHeader("Allow", "OPTIONS, GET, HEAD, POST");

または、他の機能(CORSプリフライトなど)が必要ないことが確実な場合は、OPTIONSを完全にブロックすることもできます。ちなみに、mod_rewrite処理チェーンにドラッグするのではなく、 Limit とmod_accessを使用して、目的のメソッドへのアクセスを制限することもできます。

または:TRACEまたはその他の使用可能な不要なメソッドが実際にないことが確実な場合は、検出結果を無視できます。 AppScanは、のように見えることを警告しようとしていますmight危険な方法は利用可能ですが、実際にそのような脆弱性は見つかりませんでした。実際に機能しないOPTIONS戻りメソッドを持つことは望ましくありませんが、実際のセキュリティ問題ではありません。

6
bobince

脆弱なHTTPメソッド[TRACE | TRACK | PUT | DELETE | CONNECT | OPTIONS]を無効にするために、最初にApacheのhttpd.confで以下のconfを設定しましたが、機能しませんでした。

    RewriteEngine on

    RewriteCond %{REQUEST_METHOD} ^(TRACE|TRACK|PUT|DELETE|CONNECT|OPTIONS)

    RewriteRule .* - [F]

ここで、以下のルールとその動作を設定しました。

 Order allow,deny

 Allow from all

 <LimitExcept POST GET>

       Deny from all

 </LimitExcept>
5
Samir Rakshit

AppScan、およびそれに関するすべてのスキャナーは、OPTIONSディレクティブを使用して、有効なメソッドを見つけていると思います。おそらく書き換えルールに追加する必要があります。

最善の方法は、ドキュメントを調べてこれらのメソッドを完全に無効にすることです。

乾杯、ザック

1
Zach