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

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

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

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

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
CVE-2025-59712_CVE-2025-59713 — Snipe-IT向けPoCエクスプロイト(CVE-2025-59712およびCVE-2025-59713) | Kitploit
ツール/GitHubGitHub/synacktiv/cve-2025-59712_cve-2025-59713
脆弱性分析エクスプロイトウェブアプリケーション悪用ペネトレーションテストレッドチーミングペイロード開発
GitHubsynacktiv/cve-2025-59712_cve-2025-59713

CVE-2025-59712_CVE-2025-59713

Snipe-IT向けPoCエクスプロイト(CVE-2025-59712およびCVE-2025-59713)

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

人気

すべて見る →

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

すべてのツールを探索

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

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

CVE-2025-59712 および CVE-2025-59713 の PoC

この PoC は、CVE-2025-59712 (User-Agent ヘッダーの XSS) と CVE-2025-59713 (安全でないデシリアライゼーション) を悪用する自動化スクリプトを提供します。

背景

これら 2 つの脆弱性は、Snipe-IT ソフトウェアの脆弱性調査中に Synacktiv によって発見されました。Snipe-IT は Laravel ベースのオープンソース資産管理システムであり、組織が物理資産およびデジタル資産を追跡・管理するために設計されています。

技術的な解説は、Synacktiv の Web サイト の専用セキュリティアドバイザリで入手できます。

モード

このスクリプトは、悪用モードに対応する 3 つのサブコマンド xss、rce、fullchain を提供します。

XSS

このサブコマンドは CVE-2025-59712 を悪用します。この脆弱性により、低権限ユーザーが /reports/activity ルートを呼び出したときにレンダリングされる HTML ページに任意の JavaScript を注入できます。これは管理者ユーザー、またはレポートに対する明示的な表示権限を持つユーザーによってのみ実行可能です。注入が可能なのは、ユーザーがプロフィール情報を更新する際の User-Agent フィールドのサニタイズが不適切であるためです。

そのために、最初に低権限ユーザーとしてログインし、--javascript フラグで指定されたファイル内の JavaScript コードを注入します。

root@kitploit:~
$ python3 exploit.py xss --help

 Usage: exploit.py xss [OPTIONS]

 Execute XSS attack only with custom JavaScript payload

╭─ Options ────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╮
│ *  --url         -u       TEXT                    Target Snipe-IT URL [required]                                                                                                             │
│ *  --login       -l       TEXT                    Low-privileged username [required]                                                                                                         │
│ *  --password    -p       TEXT                    Low-privileged password [required]                                                                                                         │
│ *  --new-name    -n       TEXT                    New name for low-privileged user [required]                                                                                                │
│ *  --javascript  -js      TEXT                    Path to custom JavaScript file [required]                                                                                                  │
│    --proxy       -x       TEXT                    HTTP proxy (http://ip:port)                                                                                                                │
│    --verbose     -v       [quiet|normal|verbose]  Logging verbosity [default: normal]                                                                                                        │
│    --help                                         Show this message and exit.                                                                                                                │
╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯

[!IMPORTANT]
セキュリティ調査中、テストはデフォルトで悪意のある JavaScript が注入される User-Agent フィールドを表示するバージョンの Snipe-IT で実施されました。コミット 10e5d88 以降、アクションログテーブルのレンダリング時に User-Agent プロパティはデフォルトで表示されません。そのため、XSS をトリガーする管理者は、このコミットより後の Snipe-IT バージョンでは、表示オプションで User-Agent ボックスにチェックを入れる必要があります。

RCE

このサブコマンドは CVE-2025-59713 を悪用します。この脆弱性により、管理者またはスーパー管理者ユーザーの認証情報が既知の場合にリモートコード実行が可能になります。そのために、以下の手順が実行されます。

  1. Snipe-IT インスタンスのバックアップがトリガーされます。
  2. 生成されたバックアップがダウンロードされ、メモリ内で編集され、Snipe-IT に再アップロードされます。バックアップの編集には、db-dumps/mysql-snipeit.sql ファイルへの追加 SQL 文が含まれ、新しいカスタムフィールドを作成し、リストア時に Laravel ポップチェーンを含む JSON オブジェクトで最後のアクションログを編集します。

[!TIP] デフォルトでは、Snipe-IT はバックアップに .env ファイルを含めます。スクリプトがそれを検出すると、APP_KEY 値が表示され、.env ファイルは ./output ディレクトリに保存されます(そのファイルのカスタム場所は --output-dir で指定可能)。

  1. 編集されたバックアップからのリストアがトリガーされ、追加された SQL 文が実行されます。

[!CAUTION] バックアップのリストアは、インスタンスに接続されているすべてのユーザーを切断します。

  1. リストアが完了すると、/api/v1/reports/activity ルートが呼び出され、デシリアライゼーションがトリガーされ、Laravel ポップチェーンが実行されます。
root@kitploit:~
$ python3 exploit.py rce --help

 Usage: exploit.py rce [OPTIONS]

 Execute RCE attack only (requires existing admin account)

╭─ Options ────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╮
│ *  --url         -u       TEXT                    Target Snipe-IT URL [required]                                                                                                             │
│ *  --admin-user  -au      TEXT                    Admin username [required]                                                                                                                  │
│ *  --admin-pass  -ap      TEXT                    Admin password [required]                                                                                                                  │
│    --output-dir  -od      PATH                    Output dir for .env file [default: /home/ninja/Téléchargements/snipe-it-advisory/exploit/output]                                           │
│    --shell-ip    -si      TEXT                    Reverse shell IP address                                                                                                                   │
│    --shell-port  -sp      INTEGER                 Reverse shell port                                                                                                                         │
│    --command     -c       TEXT                    Custom command (overrides reverse shell)                                                                                                   │
│    --proxy       -x       TEXT                    HTTP proxy (http://ip:port)                                                                                                                │
│    --verbose     -v       [quiet|normal|verbose]  Logging verbosity [default: normal]                                                                                                        │
│    --help                                         Show this message and exit.                                                                                                                │
╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯

Fullchain

fullchain サブコマンドは、XSS と RCE の両方の脆弱性を連鎖させることを目的としています。これは、低権限ユーザーにしかアクセスできない状況でリモートコード実行を達成したい場合に対応します。これは、/reports/activity ページにアクセスするユーザーが管理者またはスーパー管理者である場合にのみ機能します。実際、これらのロールのみがバックアップを作成および復元する権限を持っており、データベースを汚染し、後で Laravel ポップチェーンをトリガーするために必要です。

そのために、スクリプトは以下のことを行います:

  1. Lavaravel ポップチェーンを含む JavaScript テンプレートをフォーマットします。デフォルトでは bash リバースシェルを実行します(このオプションは RCE モードと同様に --command フラグでカスタマイズ可能)。
  2. 低権限ユーザーとしてログインし、User-Agent フィールドに <scr> タグを注入して、被害者のブラウザに悪意のある JavaScript テンプレートをロードさせます。
  3. 不正な HTTP サーバーを起動し、上記のテンプレートとその依存関係を配信します。
  4. 管理者またはスーパー管理者が /reports/activity ルートにアクセスすると、XSS がトリガーされ、悪意のある JavaScript が被害者のブラウザでロード・実行されます。その後、RCE モードで実行される手順と同じ手順が JavaScript で実行されます。
  5. バックアップが復元されると、被害者のブラウザは Python HTTP サーバーに GET リクエスト(コールバック)を送信し、バックアップが復元され、RCE をトリガーする API ルートを呼び出せることを通知します。

このモードは、いくつかの追加の JavaScript ライブラリを利用しています。すべてのクレジットは各作者に帰属します:

  • crypto-js.js: 暗号化操作を実行するために使用されます。オリジナルコードはこちらにあります。
  • jszip.js および jszip-utils.js: ZIP ファイルのメモリ内編集を実行するために使用されます。公式リポジトリはそれぞれこちらとこちらにあります。
root@kitploit:~
$ python3 exploit.py fullchain --help

 Usage: exploit.py fullchain [OPTIONS]

 Execute full attack chain: XSS -> Backup manipulation -> RCE

╭─ Options ────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╮
│ *  --url         -u       TEXT                    Target Snipe-IT URL [required]                                                                                                             │
│ *  --login       -l       TEXT                    Low-privileged user's username [required]                                                                                                  │
│ *  --password    -p       TEXT                    Low-privileged user's password [required]                                                                                                  │
│ *  --new-name    -n       TEXT                    New name for low-privileged user [required]                                                                                                │
│    --ip          -i       TEXT                    HTTP server IP address (default: auto-detect)                                                                                              │
│ *  --port        -P       INTEGER                 HTTP server port [required]                                                                                                                │
│    --admin-user  -au      TEXT                    Admin username to create [default: admin_rce]                                                                                              │
│    --admin-pass  -ap      TEXT                    Admin password to create [default: password123]                                                                                            │
│    --shell-ip    -si      TEXT                    Reverse shell IP address                                                                                                                   │
│    --shell-port  -sp      INTEGER                 Reverse shell port                                                                                                                         │
│    --command     -c       TEXT                    Custom command (overrides reverse shell)                                                                                                   │
│    --proxy       -x       TEXT                    HTTP proxy (http://ip:port)                                                                                                                │
│    --verbose     -v       [quiet|normal|verbose]  Logging verbosity [default: normal]                                                                                                        │
│    --help                                         Show this message and exit.                                                                                                                │
╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯

インストール

このスクリプトを実行するには、以下のコマンドを実行してください:

root@kitploit:~
$ git clone https://github.com/synacktiv/CVE-2025-59712_CVE-2025-59713
$ cd CVE-2025-59712_CVE-2025-59713
$ python3 -m venv .venv && source .venv/bin/activate
$ python3 -m pip install -r requirements.txt

テスト環境用 Dockerfile

スクリプトを試し、脆弱性の悪用を再現するための Dockerfile も提供されています。これは脆弱なバージョンの Snipe-IT をプルし、php artisan でデータベースを設定し、2 人のユーザーをセットアップします:

  1. ユーザー admin、デフォルトパスワード AdminPassword123!
  2. ユーザー lowpriv、デフォルトパスワード LowPrivUser123!

コンテナを実行する前に、.env ファイルと snipe-it.conf ファイルを Snipe-IT インスタンスの URL で更新する必要があります:

root@kitploit:~
$ sed -i 's|^APP_URL=.*|APP_URL=http://<IP>:<PORT>|' .env
$ sed -i 's|\(ServerName\s*\).*|\1http://<IP>:<PORT>|' snipe-it.conf

コンテナは次のように実行できます:

root@kitploit:~
$ docker build . -t "snipe-it-cve"
$ docker run -p 80:80 --name "snipe-it-debian" snipe-it-cve:latest
ツールをダウンロード