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

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

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

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

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
stirling-storage-folder-idor — Stirling-PDF v3.2.0 - 高 - リモート - IDOR - processing-folder ストレージルートがピアPDFを一覧表示および上書き | Kitploit
ツール/GitHubGitHub/abraxas/stirling-storage-folder-idor
脆弱性分析エクスプロイトウェブアプリケーション悪用ウェブセキュリティペネトレーションテストラボと実践
GitHubabraxas/stirling-storage-folder-idor

stirling-storage-folder-idor

Stirling-PDF v3.2.0 - 高 - リモート - IDOR - processing-folder ストレージルートがピアPDFを一覧表示および上書き

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

人気

すべて見る →

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

すべてのツールを探索

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

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

Abraxas Labs - stirling-storage-folder-idor

abraxaslabs.tech  ·  github.com/abraxas  ·  @abraxas_null  ·  [email protected]  ·  stirling-storage-folder-idor

stirling-storage-folder-idor

Stirling-PDF 3.2.0 - Stirling Tools

クラス: IDOR。到達範囲: リモート ROLE_USER。

POST /api/v1/processing-folders には、ログイン済みユーザー以外の @PreAuthorize がありません。FolderAccessGuard は、policies.allowedFolderRoots が空であっても、ローカルストレージ全体の basePath (./storage) を暗黙的に許可します。LocalStorageProvider は {ownerId}/{uuid}_{filename} を書き込みます。ROLE_USER は directory: "storage/<victimUserId>" を設定し、その所有者の PDF を一覧表示し、replace=true でその場で一括処理できます。

直接の /api/v1/storage/files/{id} はパッチ済みです (findByIdAndOwner)。被害者のファイルをピアとして取得するラボ GET は 403 です。残存するのは、ストレージ CRUD API ではなく、processing-folder の暗黙のルートです。

ROLE_USER が別ユーザーの保存済み PDF 名を一覧表示し、それらの BLOB を上書きします。被害者のダウンロードは改ざんされたファイルを返します。

IDCVE 未割当
CWECWE-639 / CWE-73
CVSS7.1 CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:L/I:H/A:N
製品Stirling-PDF
影響範囲v3.2.0 (a7e593728dd9aa81e75318a949789d3c2e9ee754)、イメージ stirlingtools/stirling-pdf:3.2.0-fat、login-on、storage.enabled=true
認証デフォルトチームの ROLE_USER
ライセンスGNU Affero GPL v3.0
ラボ127.0.0.1:18154 のみ

Stirling-PDF v3.2.0 leftovers シリーズの残存項目です。関連項目: stirling-h2-import-leftover (H2 CREATE OR REPLACE ALIAS)。本パックはストレージ IDOR です。

攻撃者ができること

login-on の proprietary/fat でローカルストレージが有効な (テンプレートのデフォルト) 環境にログインした任意の人間 ROLE_USER。公式 compose は login-off かつ DISABLE_ADDITIONAL_FEATURES=true です。そのデプロイでは /api/v1/storage が 403 となり、このコントローラーは含まれません。HIT デプロイはテンプレートの login-on かつ fat です。

権限表 (網羅的)。基準は Signal-Server Dropwizard admin と同じです。

軸メソッド + パス付与されるもの根拠
偵察ROLE_USER GET /api/v1/user/usersadmin、ピア、および STIRLING-PDF-BACKEND-API-USER の数値 userIdラボ実証済み
偵察POST /api/v1/processing-folders {directory:"storage/1"} の後 GET /api/v1/processing-folders/{id}/filesadmin の保存済み PDF (5341de35-8729-49cf-92d0-c8284e05bfc5_victim-lab.pdf) の名前、サイズ、mtimeラボ実証済み
完全性POST /api/v1/processing-folders/{id}/sweep を /api/v1/security/add-watermark と共に実行し、その後被害者の Range GET /api/v1/storage/files/1/downloadその場での書き換え。被害者の 206 / 3450 バイトに STIRLING-STORAGE-FOLDER-IDOR-WITNESS が含まれるラボ実証済み (replace=true)
機密性同じ sweep に加え、攻撃者が読み取れるチームの outputId / アウトバウンドステップ被害者 PDF バイト列のコピー推測。一覧表示/上書きには不要

このピンではクローズされたまま

軸手法 + パスクローズされている理由
偵察非共有ファイルの GET /api/v1/storage/files/{id}403 Access denied。ファイルID 1 でラボ実証済み
偵察未認証の /api/v1/storage/**ログイン無効時に 403(ensureStorageEnabled)
整合性所有者をまたぐフォルダUUIDのCRUDfindByIdAndOwner
整合性LocalStorageProvider の .. / 絶対キー正規化後の Path.startsWith(basePath)
整合性ultra-lite イメージ独自の処理フォルダコントローラが存在しない

GET /api/v1/user/users が STIRLING-PDF-BACKEND-API-USER を列挙するのは追加のIOCである。私はこれを独立した残留物としては報告していない。範囲指定なしの被害者ダウンロードは、上書き後に500を返す。FileStorageController が依然として元のDBの sizeBytes を通知しているためである。Rangeは機能する。透かしテキストはFlateDecode内のIdentity-Hであり、オラクルはストリームをinflateする。

発見の経緯

3.x ではローカルストレージと処理フォルダが追加された。ストレージのCRUDは所有者スコープである。FolderAccessGuard.serverStorageRoots はツリー全体に対して Path.of(basePath) を返し、basePath/{currentUserId} ではない。storage/<victimId> はその暗黙のルートに対して startsWith となる。

ラボでは peeruser を ROLE_USER として作成し、管理者として被害者のPDFをアップロードし、直接ストレージGETが403となることを実証し、処理フォルダを storage/1 に向け、UUID接頭辞付きの名前を列挙し、透かしをスイープし、その後被害者としてRangeダウンロードを行う。

誤った道筋:直接ストレージIDORが依然として未解決であるとみなすこと(403);ログイン無効の公式composeをHITデプロイとみなすこと(ストレージ403、コントローラ不在);outputId なしで攻撃者が読み取り可能なバイトコピーを主張すること。

ラボ

python3 stirling-storage-folder-idor-Abraxas-Labs.py

または

cd lab
./run.sh

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

IOC direct-storage-get http=403
IOC processing-folders-save directory=storage/1 http=202
IOC listed-peer ... victim-lab.pdf
IOC victim-download attempt=1 http=206 bytes=3450 witness=1
SUCCESS stirling-storage-folder-idor direct-storage-403=yes listed-peer-pdf=yes download-has-witness=yes STIRLING-STORAGE-FOLDER-IDOR-WITNESS

修正内容

マルチユーザーサーバー上のディスク directory について、暗黙のストレージルートを basePath/{currentUserId} にスコープしてください。findByIdAndOwner が他者のファイル ID を拒否するのと同様に、storage/<otherId> を拒否してください。インプレース書き換え後に、公開される sizeBytes を再計算してください。

パッチ適用済みビルドに対して ループバッククライアント を再実行してください: peeruser としての directory=storage/1 は 403 になる必要があり、listed-peer は空のままである必要があります。

それまでは、「/api/v1/storage/files/{id} にパッチを当てた」を「./storage 配下のディスクパスを受け取るすべての API をスコープした」と扱わないでください。

参考文献

  • github.com/Stirling-Tools/Stirling-PDF タグ v3.2.0 (a7e593728dd9aa81e75318a949789d3c2e9ee754)
  • abraxaslabs.tech/research/stirling-storage-folder-idor
  • 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]

ツールをダウンロード