Skip to content
KitploitKITPLOIT
ツールブログ
提出
ツールブログ
提出

ハッキング、侵入テスト、サイバーセキュリティツールをあなたのセキュリティアーセナルに!

Kitploitはハッキング、サイバーセキュリティ、ペネトレーションテストのツールディレクトリです。最新のプロジェクトアップデートを見つけて、脆弱性の発見、システム分析、テストの自動化、セキュリティの強化を行いましょう。

··フィード·お問い合わせ·プライバシー·© 2026 Kitploit

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
spring-shell-vuln — SpringはSpring FrameworkにおけるRCEを確認しました。チームは本件に関する声明と緩和策ガイドを発表したところです。この脆弱性はCVE-2022-22965として追跡できます。 | Kitploit
ツール/GitHubGitHub/snip3r69/spring-shell-vuln
脆弱性分析エクスプロイトウェブアプリケーション悪用ペネトレーションテスト学習と教育
GitHubsnip3r69/spring-shell-vuln

spring-shell-vuln

SpringはSpring FrameworkにおけるRCEを確認しました。チームは本件に関する声明と緩和策ガイドを発表したところです。この脆弱性はCVE-2022-22965として追跡できます。

リポジトリを見る
14年前未レビュー

人気

すべて見る →

コミュニティで最も使われているツールを見つけましょう。

すべてのツールを探索

ツールコレクションを閲覧

すべてのツールを見る →
共有

spring-shell-vuln

Spring4Shell: Spring core RCE 脆弱性


Spring は Spring Framework における RCE を確認しました。チームはちょうどこの問題に関する声明と緩和ガイドを公開しました。この脆弱性は CVE-2022-22965 として追跡できます。

Spring4Shell の脆弱性に関するいくつかの情報と、その詳細は「Spring4Shell: Details and Exploit」の投稿で共有されています。さらに、Praetorian のセキュリティチームは、CVE-2010-1622 に対するバイパスのため、JDK9+ 上の Spring Core がリモートコード実行に対して脆弱であることを確認しました。

当初、この脆弱性の最初の通知は 3 月 30 日に KnownSec 404 チームのリーダーである Heige によって示唆されました。彼は警告メッセージ「Spring core RCE (JDK >=9」と PoC 画像をツイートしました。

image

私たちがこの脆弱性の記事を公開すると、Heige は Twitter から姿を消しました。理由は不明ですが、何か事情があるかもしれません。

イベント

2021 年末、Apache Log4j2 におけるゼロデイのリモートコード実行脆弱性、別名 Log4Shell の公開により、インターネットは騒然としました。この脆弱性は Alibaba Cloud のセキュリティチームによって発見されました。

- この脆弱性は Log4Shell ほど深刻ではありません。Java における Class Loader 操作攻撃の性質上、すべての攻撃シナリオはより複雑です。Spring4Shell の悪用には、機能する PoC を得るために深い Java の知識が必要です。Class Loader 操作は Log4Shell の脆弱性よりも理解が困難です。

今日、研究者たちは深刻な被害をもたらす可能性のあるもう 1 つの重大な脆弱性を発見しました。このバグは CVE-2022-22965 として追跡されており、Spring4Shell と呼ぶこともあります。この脆弱性は、JDK バージョン 9.0 以上の Spring Core に存在します。

Spring Framework および派生フレームワークの spring -beans-*.jar ファイル、または CachedIntrospectionResults.class

以下の詳細はすべて現在確認済みです。生じたいかなる損害についても責任を負いません。

脆弱性の詳細と調査

世界で最も人気のある Java 軽量オープンソースフレームワークの 1 つとして、Spring は開発者がビジネスロジックに集中できるようにし、Java エンタープライズアプリケーションの開発サイクルを簡素化します。

悪用には、DataBinder が有効なエンドポイント(例: リクエストボディからデータを自動的にデコードする POST リクエスト)が必要であり、アプリケーションのサーブレットコンテナに大きく依存します。例えば、Spring が Apache Tomcat にデプロイされている場合、WebAppClassLoader にアクセスできるため、攻撃者は getter と setter を呼び出して、最終的に悪意のある JSP ファイルをディスクに書き込むことができます。ただし、Spring が組み込み Tomcat サーブレットコンテナを使用してデプロイされている場合、クラスローダーは LaunchedURLClassLoader であり、アクセスが制限されます。

しかし、JDK9 以降の Spring Framework では、リモートの攻撃者は、特定の条件を満たすことを前提として、フレームワークのパラメータバインディング機能を通じて AccessLogValve オブジェクトと悪意のあるフィールド値を取得できます。

  • この脆弱性を引き起こすには、現在のところ 2 つの基本条件が必要であることがわかっています:
  • Spring MVC フレームワークを使用しており、& JDK9 以上であること

(1). JDK のバージョン番号を確認する

組織システムの稼働中のサーバーで "java -version" コマンドを実行し、実行中の JDK バージョンを確認してください。バージョン番号が 8 以下の場合、この脆弱性の影響を受けません。

(2). Spring Framework の使用を確認する

  1. 組織システムのプロジェクトが war パッケージの形式でデプロイされている場合、以下の手順で判断します。
  • war パッケージを解凍します: war ファイルの拡張子を .zip に変更し、zip ファイルを解凍します。
  • 解凍ディレクトリ内で spring-beans-*.jar 形式の jar ファイル(例: spring-beans-5.3.16.jar)を探します。存在する場合、その業務システムは Spring Framework を使用して開発されていることを意味します。
  • spring-beans-*.jar ファイルが存在しない場合は、解凍ディレクトリ内に CachedIntrospectionResuLts.class ファイルが存在するかどうかを探します。存在する場合、その業務システムは Spring Framework を使用して開発されていることを意味します。
  1. 組織システムのプロジェクトが jar パッケージの形式で直接かつ単独で実行される場合、次の手順に従って判断します。
  • jar パッケージを解凍します: jar ファイルの拡張子を .zip に変更し、zip ファイルを解凍します。
  • 解凍ディレクトリ内で spring-beans-*.jar 形式の jar ファイル(例: spring-beans-5.3.16.jar)を探します。存在する場合、その業務システムは Spring Framework を使用して開発されていることを意味します。
  • spring-beans-*.jar ファイルが存在しない場合は、解凍ディレクトリ内に CachedIntrospectionResuLts.class ファイルが存在するかどうかを探します。存在する場合、その業務システムは Spring Framework を使用して開発されていることを意味します。

(3) 総合的な調査

上記の 2 つのトラブルシューティング手順を完了した後、次の 2 つの条件が同時に満たされる場合、この脆弱性の影響を受けると判断します:

  1. JDK のバージョン番号が 9 以上であること;
  2. Spring Framework または派生フレームワークを使用していること。

脆弱性の修正ガイド

現在、Spring チームはこの脆弱性を修正し、Spring Framework 5.3.18 に依存する Spring Boot 2.6.6 および 2.5.12 の最新バージョンをリリースしました。

WAF による保護

WAF などのネットワーク保護デバイスでは、デプロイされたサービスの実際のトラフィック状況に応じて、"class."、"Class."、".class."、".Class." などの文字列に対するルールフィルタリングを実装します。ルールフィルタリングの後、業務運用をテストして追加の影響を回避してください。

一時的な修復措置

この脆弱性の一時的な修復は、次の 2 つの手順を同時に実行する必要があります:

  1. アプリケーション内で @InitBinder アノテーションをグローバルに検索し、メソッド本体で dataBinder.setDisallowedFields メソッドが呼び出されているかどうかを確認します。このコードスニペットの導入が見つかった場合は、{"class.","Class. to the original blacklist ",".class.", ".Class."} を追加します。(注: このコードスニペットが頻繁に使用されている場合は、すべての場所に追加する必要があります)

  2. アプリケーションシステムのプロジェクトパッケージ内に次のグローバルクラスを作成し、このクラスが Spring によってロードされることを確認します(Controller があるパッケージに追加することを推奨します)。クラスを追加した後、プロジェクトを再コンパイルしてパッケージ化し、機能検証のためにテストして、プロジェクトを再公開する必要があります。 import org.springframework.core.annotation.Order;

    root@kitploit:~
     import org.springframework.web.bind.WebDataBinder;
    
     import org.springframework.web.bind.annotation.ControllerAdvice;
    
     import org.springframework.web.bind.annotation.InitBinder;
    
     @ControllerAdvice
    
     @Order(10000)
    
     public class GlobalControllerAdvice{ 
    
          @InitBinder
    
          public void setAllowedFields(webdataBinder dataBinder){
    
          String[]abd=new string[]{"class.*","Class.*","*.class.*","*.Class.*"};
    
          dataBinder.setDisallowedFields(abd);
    
          }
    
     }
    

image

Spring プロジェクトの Git リポジトリ を見ると、Spring 開発者はこのリモートコード実行脆弱性の修正に取り組んでいるようです。ただし、公式の確認を待つ必要があります。

ツールをダウンロード