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

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

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

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

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
stirling-h2-import-leftover — Stirling-PDF v3.2.0 - 重大 - リモート - H2 RUNSCRIPT の残存 - CREATE OR REPLACE ALIAS import-database | Kitploit
ツール/GitHubGitHub/abraxas/stirling-h2-import-leftover
脆弱性分析エクスプロイトウェブアプリケーション悪用セキュリティ仮想化ペネトレーションテストデータベースセキュリティ
GitHubabraxas/stirling-h2-import-leftover

stirling-h2-import-leftover

Stirling-PDF v3.2.0 - 重大 - リモート - H2 RUNSCRIPT の残存 - CREATE OR REPLACE ALIAS import-database

リポジトリを見る
41日前未レビュー

人気

すべて見る →

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

すべてのツールを探索

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

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

Abraxas Labs - stirling-h2-import-leftover

abraxaslabs.tech  ·  github.com/abraxas  ·  @abraxas_null  ·  [email protected]  ·  stirling-h2-import-leftover

stirling-h2-import-leftover

Stirling-PDF 3.2.0 - Stirling Tools

分類: GHSA-mrr8 の H2 RUNSCRIPT 残存問題。到達範囲: リモート ROLE_ADMIN。

POST /api/v1/database/import-database は @PreAuthorize("hasRole('ADMIN')") である。validateSqlContent は CREATE ALIAS を阻止するはずである。拒否リストは CREATE\s+(FORCE\s+)?ALIAS である。H2 の parseCreate は ALIAS の前に OR REPLACE を許可するため、CREATE OR REPLACE ALIAS … FOR "java.lang.…" は許可リスト \bCREATE\b に一致し、拒否リストをすり抜ける。バリデータはコピーをサニタイズする。verifyBackup と本番の RUNSCRIPT FROM ? は元のファイルを対象とする。

GHSA-mrr8-934j-4g8m / CVE-2026-85714 は元の FILE_READ / CREATE ALIAS / CSVWRITE 文字列を塞いだ。この残存問題は、同じバリデータにおける OR REPLACE の抜け穴である。

ROLE_ADMIN によるインポートは、拒否リストが阻止するはずの Java エイリアスを作成する。その後のバックアップダウンロードには攻撃者の SQL が含まれる。 元のアドバイザリにあるホストの FILE_READ / FileUtils RCE は推測であり、このパックではラボで実証されていない。

IDCVE 未割当
CWECWE-94 / CWE-184
CVSS9.1 CVSS:3.1/AV:N/AC:L/PR:H/UI:N/S:C/C:H/I:H/A:H
製品Stirling-PDF
影響を受けるバージョンv3.2.0 (a7e593728dd9aa81e75318a949789d3c2e9ee754)、イメージ stirlingtools/stirling-pdf:3.2.0-fat
認証ROLE_ADMIN、デフォルトの組み込み H2。初回管理者のデフォルトは変更するまで admin / stirling
ライセンスGNU Affero GPL v3.0
ラボ127.0.0.1:18152 のみ

Stirling-PDF v3.2.0 残存問題シリーズの残存問題。関連項目: stirling-storage-folder-idor(processing-folder が示唆するストレージルート)。本パックは H2 インポートの残存問題である。

攻撃者ができること

デフォルトの組み込み H2 を使用する login-on の proprietary/fat における ROLE_ADMIN。initialLogin が空の場合、初回管理者のデフォルトは admin / stirling である。未認証である必要はない。Lite イメージおよび PostgreSQL データソースにはこのコントローラは含まれない。

権限表(網羅的)。Signal-Server Dropwizard admin と同じ基準: メソッド + パス、その呼び出しが付与するもの、偵察 vs 完全性 vs 可用性、ラボ実証済み vs 推測、閉じたままの隣接する攻撃面。

軸メソッド + パス付与来歴
整合性ROLE_ADMIN POST /api/v1/database/import-database に CREATE OR REPLACE ALIAS lab_nano FOR "java.lang.System.nanoTime" と INSERT INTO lab_w VALUES('STIRLING-H2-IMPORT-WITNESS') を付加200 importIntoDatabaseSuccessed。Java エイリアスが作成された。攻撃者の SQL が RUNSCRIPT 配下でコミットされたラボ実証済み
偵察ROLE_ADMIN GET /api/v1/database/createDatabaseBackup の後 GET /api/v1/database/download/backup_202610172328.sql50432 バイトのバックアップに STIRLING-H2-IMPORT-WITNESS が含まれるラボ実証済み
偵察 / ホストファイル同じインポートで FILE_READ('/etc/os-release') を EXECUTE IMMEDIATE 内にラップ500 Backup verification failed。ホストのバイト列はバックアップに含まれないラボでの追加 FAIL
整合性 / RCEエイリアス org.h2.store.fs.FileUtils と Python ユーザーサイトの .pth の CSVWRITE、その後 office 変換サービスアカウントとしてのコマンド実行GHSA-mrr8 からの推測。ここではラボ検証していない
可用性主張なしインポートがアプリケーションのテーブルを置き換え得る推測。ラボのオラクルではない

このピンではクローズのまま

軸メソッド + パスクローズである理由
整合性未認証 POST /api/v1/database/import-database401 Authentication required。HTTP が permitAll でもメソッドセキュリティ ADMIN は有効なまま
整合性ROLE_ADMIN による素の CREATE ALIAS のインポート500 SQL script contains disallowed operations and was rejected
整合性lite / DISABLE_ADDITIONAL_FEATURES イメージDatabaseController が存在しない
整合性カスタム PostgreSQL データソース@Conditional(H2SQLCondition.class)

リバースシェルを主張するものではなく、ホストの FILE_READ をラボ実証済みとして主張するものでもない。残っているのは、CREATE OR REPLACE ALIAS … FOR "java.lang.…" を RUNSCRIPT 経由で通してしまうデナイリストの見落としである。

発見の経緯

v3.2.0 には依然として GHSA-mrr8 のバリデータが同梱されている。私はそのタグに留まり DENIED_PATTERNS を読んだ。エイリアス行は CREATE\s+(FORCE\s+)?ALIAS である。H2 のパーサーは CREATE OR REPLACE ALIAS を受け付ける。テストは明白な CREATE ALIAS / FILE_READ( 文字列をカバーしている。しかし OR REPLACE はカバーしていない。

ラボではデフォルト管理者としてログインし、change-password-on-login を完了させ、拒否される CREATE ALIAS をインポートし(500)、次に CREATE OR REPLACE ALIAS と INSERT の証人をインポートする(200)。バックアップのダウンロードにその証人が含まれる。

誤った道筋:未認証インポートをスコープ内とみなす(401)、EXECUTE IMMEDIATE + FILE_READ を残存箇所とみなす(verifyBackup 500)、元の難読化されていない CREATE ALIAS が依然として有効とみなす(拒否される)。

ラボ

python3 stirling-h2-import-leftover-Abraxas-Labs.py

または

cd lab
./run.sh

対象は http://127.0.0.1:18152 のみ。イメージは stirlingtools/stirling-pdf:3.2.0-fat。Docker が必要。ログイン有効。ランチャーは lab/ に chdir して run.sh を exec する。

IOC unauth-import http=401
IOC negative-import http=500 ... disallowed operations ...
IOC leftover-import bypass=create-or-replace-alias http=200 ... importIntoDatabaseSuccessed
IOC download file=backup_202610172328.sql http=200 bytes=50432 witness=1
SUCCESS stirling-h2-import-leftover negative-denied=yes bypass=create-or-replace-alias backup-has-witness=yes file=backup_202610172328.sql unauth-import=401 STIRLING-H2-IMPORT-WITNESS

修正

OR REPLACE が CREATE と ALIAS の間に置けないように、拒否リストを拡張します。RUNSCRIPT が実行するのと同じバイト列に対して validateSqlContent を実行します。内側の SQL もスキャンされない限り、EXECUTE IMMEDIATE を拒否します。

Pattern.compile("(?i)\\bCREATE\\s+(OR\\s+REPLACE\\s+)?(FORCE\\s+)?ALIAS\\b")

パッチ適用済みビルドに対してループバッククライアントを再実行してください。残存インポートは、素の CREATE ALIAS がすでにそうであるように 400/500 を返す必要があります。

それまでは、「CREATE ALIAS を禁止した」を「H2 Java エイリアスを禁止した」と扱わないでください。

参考文献

  • github.com/Stirling-Tools/Stirling-PDF タグ v3.2.0 (a7e593728dd9aa81e75318a949789d3c2e9ee754)
  • GHSA-mrr8-934j-4g8m / CVE-2026-85714
  • abraxaslabs.tech/research/stirling-h2-import-leftover
  • abraxaslabs.tech/research/stirling-pdf-3.2.0-leftovers

ベンダーへの報告窓口: GitHub Security Advisory タブまたは [email protected]。Stirling-Tools/Stirling-PDF に公開 issue は作成しません。

Abraxas Labs https://abraxaslabs.tech https://github.com/abraxas [email protected]

ツールをダウンロード