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

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

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

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

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
CVE-2026-15981 — SAML Single Sign On <= 5.4.4 - SAMLResponseパラメータを介した未認証の認証バイパス | Kitploit
ツール/GitHubGitHub/nxploited/cve-2026-15981
認証と認可ペイロード生成脆弱性分析エクスプロイトウェブアプリケーション悪用ポストエクスプロイトペネトレーションテスト
GitHubnxploited/cve-2026-15981

CVE-2026-15981

SAML Single Sign On <= 5.4.4 - SAMLResponseパラメータを介した未認証の認証バイパス

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

人気

すべて見る →

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

すべてのツールを探索

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

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

CVE-2026-15981

SAML Single Sign On <= 5.4.4 - SAMLResponse パラメータによる未認証の認証回避

CVE CVSS CWE CWE Python

CVE-2026-15981

SAML Single Sign On ≤ 5.4.4 — 未認証の認証回避

概念実証(PoC)エクスプロイト
不正な署名 → openssl_verify() が -1 を返す → PHP の弱い型変換で true と評価 → 管理者として wp_set_auth_cookie() が実行


脆弱性概要

説明

WordPress 用プラグイン「SAML Single Sign On – SSO Login」は、5.4.4 までの全バージョンにおいて認証回避の脆弱性の影響を受けます。これは、mo_saml_validate_signature() 関数が PHP の openssl_verify() が返す三値の整数に対して**弱い真偽値チェック(loose boolean check)**を実行するためで、エラー時の戻り値 -1 が真(truthy)と評価され、署名検証が成功したものとして扱われてしまいます。

これにより、認証されていない攻撃者は、攻撃者が制御する NameID と、OpenSSL の処理エラーを引き起こすよう意図的に破壊された署名値を含む細工済み SAMLResponse を送信することで、管理者を含む任意の既存 WordPress ユーザーとしてログインできるようになります。検証は完全にバイパスされ、対象アカウントに対して wp_set_auth_cookie() が呼び出されます。

根本原因

root@kitploit:~
Attacker sends crafted SAMLResponse
         │
         ▼
mo_saml_validate_signature()
         │
         ▼
openssl_verify($data, $malformed_sig, $key)
         │
         ├─ Returns  1  → valid signature      ✓
         ├─ Returns  0  → invalid signature     ✗
         └─ Returns -1  → OpenSSL internal error
                │
                ▼
     PHP loose comparison:  if ($result)
                │
                ├─ (int) 1   → true   ✓
                ├─ (int) 0   → false  ✓
                └─ (int) -1  → true   ← BUG: error treated as success
                       │
                       ▼
             wp_set_auth_cookie() called
                       │
                       ▼
             Attacker is now Administrator

修正は簡単です — if ($result) の代わりに if ($result === 1) とするだけです — しかし、この欠陥の影響は完全な認証バイパスです。


特徴

  • 複数ターゲットの一括スキャン — ターゲットリストの並行処理
  • 完全な WordPress フィンガープリンティング — 処理を進める前に WordPress を確認
  • プラグイン検出とバージョンチェック — miniOrange SAML SSO を特定し、バージョン ≤ 5.4.4 を検証
  • SP メタデータの探索 — ?option=mosaml_metadata から Entity ID と ACS URL を抽出
  • 包括的なユーザー列挙:
    • WP REST API(/wp-json/wp/v2/users)
    • ID ごとの REST クエリ(ID 1〜10)
    • 著者アーカイブのリダイレクト(/?author=N)
    • HTML ボディのパターンマッチング
    • ドメインベースのフォールバック + 一般的な管理者名
  • IdP 発行者(issuer)の探索 — ?option=saml_user_login のリダイレクトを追跡し、IdP のベース URL を抽出
  • SAMLResponse 偽造エンジン:
    • lxml による正しい Exclusive C14N 正規化
    • 正しいダイジェスト計算(SHA-1/SHA-256/SHA-384/SHA-512)
    • SAML 仕様に従った </Issuer> の後の署名要素の挿入
    • openssl_verify() = -1 を引き起こすよう設計された 12 以上の不正な署名ペイロード
    • ユーザー × 発行者 × アルゴリズム × 署名 × Audience フラグ × SP Entity ID を反復
  • セッション検証 — 各試行後に wordpress_logged_in_* クッキーを確認
  • 管理者権限の確認 — /wp-admin/、、 へのアクセスを検証

要件

root@kitploit:~
Python >= 3.8
root@kitploit:~
pip install requests lxml

SAML アサーションを正しく Exclusive C14N 正規化するには、lxml が必要です。


使用方法

root@kitploit:~
python CVE-2026-15981.py

以下の入力を求められます:

プロンプト説明デフォルト
ターゲットファイル1行につき1ターゲットを記述したテキストファイルのパスlist.txt
スレッド数同時実行ワーカー数(1〜100)5

ターゲットファイルの形式

root@kitploit:~
https://example.com
http://target.org
subdomain.example.net
192.168.1.100
https://example.com/wordpress

1行に1つの URL を指定します。スキームが指定されていない場合は、デフォルトで HTTP が使用されます。


出力

ターミナル

root@kitploit:~
  ███████╗███╗   ███╗███████╗
  ██╔════╝████╗ ████║██╔════╝
  ███████╗██╔████╔██║███████╗
  ╚════██║██║╚██╔╝██║╚════██║
  ███████║██║ ╚═╝ ██║███████║
  ╚══════╝╚═╝     ╚═╝╚══════╝
   ╔══════════════════════════════════════════════════════════╗
   ║  miniOrange SAML SSO <= 5.4.4                           ║
   ║  openssl_verify() -1 Bypass -> Admin Session            ║
   ╚══════════════════════════════════════════════════════════╝
  By: Nxploited ( Khaled Alenazi ) - Nxploited ZeroDay Hub
  T.m @Kxploit

各ターゲットは、ラベル付けされた 7 つのステージを順に進みます:

root@kitploit:~
  ============================================================
    target.com
  ============================================================
  [1] WordPress
      confirmed
  [2] SAML plugin
      version: 5.4.4
      miniOrange SAML detected
  [3] SP metadata
      metadata entityID: https://target.com/...
      metadata ACS: https://target.com/
  [4] Users
      REST: admin (id=1)
      REST: editor (id=2)
      author/3: johndoe
      4 found: ['admin', 'editor', 'johndoe', 'target']
  [5] Issuers
      SSO redirect found
      3 candidates
  [6] Exploit
      COOKIE! #14 user=admin 0xFF*256/rsa-sha256
        wordpress_logged_in_abc123=admin%7C1753...
        wp-admin accessible
          user=admin  [email protected]
          users.php -> Admin
  [7] Shell upload
      M1: plugin uploaded
      SHELL (M1-plugin): https://target.com/wp-content/plugins/nxproof/Nx.php
        -> Nx-zD Linux target 6.1.0 x86_64 uid=33(www-data) ...

  +==========================================================+
  |  ADMIN SESSION CONFIRMED                                 |
  +==========================================================+
  |  Target : https://target.com
  |  User   : admin
  |  Issuer : https://idp.example.com/simplesaml/...
  |  Method : 0xFF*256/rsa-sha256
  |  Cookie : wordpress_logged_in_abc123=admin%7C1753...
  |  Shell  : https://target.com/wp-content/plugins/nxproof/Nx.php
  +==========================================================+

結果ファイル

ファイル内容
sms.txt確認された管理者セッションごとに1行 — タイムスタンプ、ターゲット、ユーザー、クッキー、シェル URL、発行者、署名方式
sms_debug.json全ターゲットの完全な診断 JSON — 試行回数と失敗の分類を含む

結果行の形式

root@kitploit:~
[2026-07-26 09:14:52] https://target.com | ADMIN | user=admin | cookie=wordpress_logged_in_...
| SHELL=https://target.com/wp-content/plugins/nxproof/Nx.php | issuer=https://idp.example.com/...
| sig=0xFF*256/rsa-sha256

サマリー

root@kitploit:~
  ============================================================
    DONE - 142.3s
  ============================================================
    ADMIN=3  miss=47  skip=100
    results -> sms.txt  debug -> sms_debug.json
  ============================================================

悪用パイプライン

root@kitploit:~
Target
  │
  ├─ [1] WordPress Detection
  │       └─ wp-login.php / wp-json / jQuery fingerprint
  │
  ├─ [2] SAML Plugin Detection
  │       ├─ readme.txt version check (≤ 5.4.4)
  │       └─ SAML signature detection in HTML
  │
  ├─ [3] SP Metadata Discovery
  │       └─ ?option=mosaml_metadata → entityID + ACS URL
  │
  ├─ [4] User Enumeration
  │       ├─ REST API /wp/v2/users (bulk + per-ID)
  │       ├─ Author archive redirect (/?author=N)
  │       ├─ HTML body pattern matching
  │       └─ Domain fallback + common admin names
  │
  ├─ [5] IdP Issuer Discovery
  │       ├─ ?option=saml_user_login redirect → IdP URL
  │       └─ wp-login.php SAML link extraction
  │
  ├─ [6] SAMLResponse Forgery & Delivery
  │       │
  │       │   For each (user × issuer × algorithm × signature × audience × SP ID):
  │       │
  │       ├─ Build SAML Assertion with attacker-controlled NameID
  │       ├─ Canonicalize via Exclusive C14N (lxml)
  │       ├─ Compute correct DigestValue for the Assertion
  │       ├─ Inject malformed SignatureValue (0xFF×256, ASN.1 junk, etc.)
  │       ├─ Wrap in <samlp:Response>, Base64 encode
  │       ├─ POST SAMLResponse to ACS URL
  │       ├─ Check for wordpress_logged_in_* cookie
  │       ├─ If cookie found → verify admin role via wp-admin
  │       └─ Classify failure via diagnostic engine
  │
  └─ [7] Post-Exploitation (on admin session)
          ├─ M1: Plugin ZIP upload + activation
          ├─ M2: REST API plugin upload
          ├─ M3: Theme/Plugin editor file write
          ├─ M4: Media async upload
          └─ Shell execution verification (Nx-zD signature)

不正な署名ペイロード

このエクスプロイトには、openssl_verify() = -1 を引き起こすよう特別に設計された 12 以上の署名ペイロードが同梱されています:

各ペイロードは SHA-1 と SHA-256 のアルゴリズム URI と組み合わされ、Audience 制限の有無、さらに複数の SP Entity ID にわたってテストされるため、どの OpenSSL バージョンでも -1 の戻り値経路に到達する可能性が最大化されます。


免責事項

このツールは、許可されたセキュリティテストおよび教育目的の研究専用に提供されます。所有しているシステム、または明示的な書面によるテスト許可を得たシステムに対してのみ使用してください。

コンピュータシステムへの不正アクセスは犯罪行為です。作者は、本ソフトウェアの使用に起因する誤用、損害、またはいかなる法的結果についても一切の責任を負いません。お住まいの地域のすべての該当法令および規制の遵守を確保する責任は、利用者自身にあります。


By: Nxploited
Khaled Alenazi — Nxploited ZeroDay Hub
T.m @Kxploit

ツールをダウンロード
項目詳細
CVE IDCVE-2026-15981
影響を受けるプラグインminiOrange SAML 2.0 Single Sign On – SSO Login(WordPress)
影響を受けるバージョン5.4.4 までの全バージョン
種別未認証の認証回避
CWECWE-287: 不適切な認証 / CWE-305: 根本的欠陥による認証回避
CVSS 3.19.8 CRITICAL — CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H
認証不要
/wp-admin/users.php
/wp-admin/plugins.php
  • プロフィール抽出 — /wp-admin/profile.php からユーザー名とメールアドレスを読み取り
  • 管理者セッション取得後の 4 種類のシェルアップロード手法:
    • M1 — plugin-install.php 経由のプラグイン ZIP アップロード
    • M2 — /wp-json/wp/v2/plugins 経由の REST API プラグインアップロード
    • M3 — テーマ/プラグインエディタによるファイル書き込み
    • M4 — メディアの非同期アップロード
  • シェル実行の検証 — レスポンス本文内の Nx-zD シグネチャを確認
  • 診断エンジン — 失敗理由を分類(DIGEST_FAIL、ISSUER、AUDIENCE、TIME など)
  • デバッグ JSON 出力 — 分析用のターゲットごとの完全な診断ログ
  • ペイロード説明
    0xFF * 256256 バイトの 0xFF — 無効な PKCS#1 パディング
    0xFF * 384RSA-3072 鍵サイズ用の 384 バイト
    0xFF * 512RSA-4096 鍵サイズ用の 512 バイト
    0xFF * 128より小さい鍵サイズ用の短いバッファ
    0xFF * 64最小限の無効なパディング
    0x00 0x01 0xFF*254PKCS#1 v1.5 のように見えるが構造が正しくない
    0x00 0x01 0xFF*126より短い PKCS#1 類似構造
    null_2Bヌルに隣接する 2 バイト
    rand_3B / rand_7Bランダムバイト — パースエラーを誘発
    asn1_bad不正な ASN.1 DER シーケンス
    ff_1B単一の 0xFF バイト