2000P's Blog

最初のページ

1938 tomcatファイルの読み込み/脆弱性を含めて再现する–グレープフルーツテクノロジー

著者 thibaut 時間 2020-03-27
all

0 X 1ホール概要

先日、長亭科学技術安全研究員は世界で初めて流行サーバTomcatに存在するファイルの読み取り/脆弱性を発見しました。そして、最初にメーカーの修復を提出しました。

2月14日、Apache Tomcat公式はセキュリティアップデートバージョンを発表し、バグを修正しました。2月20日、国家情報セキュリティ・ホール共有プラットフォーム(CNVD)は、セキュリティ・リリースを発表した。このホール総合評価はハイリスクであり、ホール番号はCNVD-2020-1087、CVE番号はCVE-2020-1938である。

脆弱性の影響範囲が含まれています。

Apache Tomcat 6Apache Tomcat 7 7.0.100Apache Tomcat 8 8.5.51Apache Tomcat 9 9.0.31

0 X 2環境構築

公式サイトでソースをダウンロードします。

ダウンロードが完了したら、任意のディレクトリの下に置いて、Java環境をインストールします。ここでは詳細に説明していません。

設定が完了したら、サービスを開始します。

ブラウザアクセス

環境構築完了。

0 X 3ホール分析

Tomcatサーバは、Connectorコネクタコンポーネントを介してクライアントプログラムと接続を確立し、「コネクタ」は要求を受信し、応答の端点を返します。Connectorコンポーネントは、お客様の要求を受信し、Tomcatサーバの応答結果をお客様に送信します。

Tomcatはデフォルトで、2つのconnectorをそのプロファイルserver.xmlに配置しています。

デフォルトでは、tomcatの設定が完了したら、conf/server.xmlファイルでAJP connectorサービスは8009ポートで傍受されます。

tomcatサービスが開始された後、ローカルポートを確認すると、8009ポートはすでに傍受状態にあることが分かります。

Gh 0 stcatホールを通して、攻撃者はTomcatの下に展開されている全てのwebappディレクトリの下の任意のファイルを読むことができます。また、このアプリケーションがウェブサイトサービスにアップロード機能を備えているなら、攻撃者は先にJSPコードを含む悪意のあるファイルをサービス側にアップロードしてもいいです。

0 X 4ホール利用

いずれかのPOCファイルを使って検証し、WEB-INF/web.xmlファイルを読みだします。

ROOTディレクトリのbuild.xmlファイルの内容を読みだします。

すべての読み取りに成功することができます。

0 X 5補強修復

1.Tomcat AJPプロトコルを使用していない場合:

Tomcat AJPプロトコルを使用していない場合、Tomcatを直接9.0.31、8.5.51または7.0.100バージョンにアップグレードして、脆弱性の修復を行うことができます。

すぐにバージョンの更新ができない、またはより古いバージョンのユーザーは、直接にAJPConnectorをオフにするか、またはその傍受アドレスを本機のlocal hostのみに変更することを提案します。

具体的な操作:

Connector port=「8009」protocol=「AJP/1.3」redirectPort=「8443」/

(2)この行をコメントしてもいいです。

!–Connectport=「8009」protocol=「AJP/1.3」redirectPort=「8443」/–

(3)保存後は再起動し、ルールが有効になります。

2.Tomcat AJP契約を使用した場合:

Tomcatを直ちに9.0.31、8.5.51または7.0.100バージョンにアップグレードして修復することを提案します。同時にAJP Connectorにsecretを配置してAJPプロトコルの認証証明書を設定します。例えば、YOUR_MCATUAJP_SECRETを安全性が高く、簡単には解けない値に変更しなければならない。

Connector port=「8009」protocol=「AJP/1.3」redirectPort=「8443」address=「YOUR_TOMCATA」secret=「YOUR_TOMCATA JP_SECRET」/

すぐにバージョンの更新ができない、またはより古いバージョンのユーザは、AJPConnectorにrequiredSecretを設定してAJPプロトコル認証証明書を設定することを推奨します。例えば、YOUR_MCATUAJP_SECRETを安全性が高く、簡単には解けない値に変更しなければならない。

Connector port=「8009」protocol=「AJP/1.3」redirectPort=「8443」address=「YOUR_TOMCATH_UIPADDRESS」requiredeSecret=「YOUR_TOMCATAJP_SECRET」/

0 X 6参照リンク