Teste de Intrusão em Ambiente SharePoint
Teste de Intrusão em Ambiente SharePoint
Neste artigo iremos abordar técnicas de teste de intrusão voltadas exclusivamente para o ambiente do SharePoint.
O Microsoft SharePoint é uma plataforma de aplicações Web da Microsoft, com utilização na criação de portais e intranets empresariais, gestão de conteúdo, gestão documental, criação de portais colaborativos e publicação de aplicações web.
Lançado em 2001, a plataforma SharePoint é geralmente associada à gestão de conteúdos e gestão documental, mas é de fato uma plataforma muito mais ampla para tecnologias web, podendo ser configurado para abranger diversas outras áreas de serviços e aplicações.
Metodologias
Para realizar todos os testes em ambiente SharePoint, iremos seguir as seguintes metodologias:
- Coleta de Informações
- Scanning & Enumeração
- Análise de Vulnerabilidades
- Exploração & Bypass
Coleta de informações
A parte principal e essencial de todo pentest é a coleta de informações. Nessa fase, um atacante irá coletar o máximo de informações possíveis sobre seu alvo, para seguir com o processo de exploração.
Existem dois tipos de coleta de informações: a coleta ativa e a coleta passiva.
Na coleta ativa o atacante tem contato direto com o alvo, utilizando ferramentas de enumeração e scans os quais enviam as requisições diretamente para o servidor que está sendo analisado. Já na coleta passiva o atacante tem contato indireto com o alvo, utilizando informações que já estão públicas na internet, dificultando sua detecção.
Iremos mostrar algumas técnicas utilizadas para coletar estas informações:
Google Hacking
O Google Hacking é uma prática muito utilizada para encontrar arquivos e/ou falhas a partir do Google, usando-o como uma espécie de scanner, dando comandos e possibilitando manipular buscas avançadas por strings chamadas de “dorks” ou “operadores de pesquisa”. Desta forma, o atacante consegue filtrar com mais precisão os ambientes o qual pretende explorar.
Algumas dorks que serão utilizadas:
- inurl:”termo”
- Pesquisa apenas por urls que contenham esse termo
- allinurl:termo1 termo2
- Semelhante ao operador inurl, porém para vários termos
- site:site.com
- Restringe a busca ao site especificado
Neste exemplo utilizamos a dork “inurl:/_layouts/viewlsts.aspx site:br”
Como retorno, recebemos diversos web sites contendo a dork inserida em sua url.
Considerando o arquivo da dork um arquivo sensível, apenas pelo Google já é possível listarmos diversas aplicações interessantes para serem futuramente analisadas:

Caso o atacante opte por um escopo mais específico, como procurar estes arquivos apenas para um único domínio de sua escolha, é possível mesclar as dorks para aprimorar estas filtragens.
Utilizando como exemplo o domínio alvo: example.com
Uma dork para filtrar pelo arquivo “viewlsts” apenas em seus subdomínios, ficaria semelhante a: “inurl:/_layouts/viewlsts.aspx site:example.com -www”
Desta forma, é possível fazer um ataque mais direcionado ao escopo escolhido.
Nesta outra pesquisa de exemplo, estamos buscando por páginas de autenticação utilizando a dork “inurl:/_layouts/AreaWelcomePage.aspx”.

Shodan
O Shodan é um mecanismo de busca que permite ao usuário encontrar tipos específicos de computadores e diversos dispositivos IoTs conectados à Internet usando uma variedade de filtros.
Alguns exemplos de queries que podem ser utilizadas:

No exemplo abaixo, foi utilizada a query ‘“MicrosoftSharePointTeamServices” country:br’, filtrando alguns sharepoints públicos e suas devidas informações, como endereços de IP, portas abertas, headers etc.

Censys IO
O Censys é um mecanismo de busca que verifica na Internet a procura de dispositivos e retorna relatórios agregados sobre como os recursos (ou seja, dispositivos, sites e certificados) são configurados e implantados. A ferramenta também verifica diariamente o espaço de endereço IPv4, pesquisando todos os dispositivos e coletando informações relacionadas.

Ferramentas
Existem algumas ferramentas que podem ser utilizadas para facilitar um pouco a análise desse tipo de ambiente. Com essas ferramentas é possível fazer enumeração de diretórios, obter versões, entre outras informações:
- SharePwn
- SPartan
- Sparty
- SPScan
Neste artigo iremos utilizar somente a ferramenta SharePwn.
Para baixá-la é muito simples, basta clonar o repositório para o seu Kali Linux.
- $ git clone https://github.com/0rigen/SharePwn.git
Instale todos os requerimentos:
- $ pip install -r requirements.txt
Depois de tudo configurado execute a ferramenta:
- python sharepwn.py

Análise de Vulnerabilidades & Exploração
Existem diversas vulnerabilidades que podem ser exploradas em ambiente SharePoint, como XSS, CSRF,Bypass etc.
A grande maioria das vulnerabilidades exploradas são de configuração incorreta, ou seja, configurações padrão.
Conforme mostrado no exemplo abaixo, conseguimos ter acesso a todos os arquivos do site apenas colocando seu diretório default, podendo até mesmo baixá-los.
Para isso, foi identificado o endereço do sharepoint por meio das técnicas de reconhecimento e enumeração anteriormente citadas. Com isso, foi requisitado para a aplicação o acesso ao arquivo “viewlsts.aspx”, fazendo com que a aplicação fizesse um bypass na página de login e fosse diretamente ao arquivo solicitado.

Podemos também encontrar por serviços de SOAP do SharePoint, permitindo assim listar os seus recursos.

Exploração Prática
É possível explorar esses sites de diversas formas, utilizando somente as técnicas explicadas, de pesquisa avançada.
No exemplo abaixo, utilizaremos uma aplicação real para demonstrar como esta exploração seria feita em um ambiente prático.
Como padrão, vamos utilizar nosso velho amigo: example.com para simbolizar a aplicação alvo.
Na imagem a seguir, foi tentado acessar um possível arquivo do sharepoint que estaria público, porém a aplicação nos redirecionou para à página de login:

Em alguns sites, se você for removendo a URL e ir efetuando testes, é possível encontrar diretórios que permitam sua listagem de arquivos. Neste caso, alteramos a URL até encontrar um diretório que estivesse com a listagem disponível.
URL original: example.com/_layout/15/login/login.aspx?…
URL modificada: example.com/_layout/

É possível também encontrar algumas informações relevantes no código-fonte, como outros possíveis arquivos e diretórios que estão acessíveis publicamente.

Acessando um dos diretórios expostos no código fonte, foi possível listar outros endpoints da aplicação:

Utilizando a ferramenta SharePwn para coletar mais informações:


Efetuando o acesso de algumas URLs, conseguimos ter acesso à arquivos internos do SharePoint que podem ser baixados.
Em alguns casos, algumas configurações de segurança são aplicadas ao SharePoint, impedindo que você efetue o download desses arquivos.


Se tentarmos efetuar o download desses arquivos, somos redirecionados para a página de login do SharePoint, porém é possível realizar o bypass e fazer o download desses arquivos.


Se analisarmos as propriedades desses arquivos, temos acesso à outras informações de nosso interesse.

Ao acessar as propriedades do arquivo conseguimos efetuar o download dele, ignorando a requisição de login anteriormente solicitada:

Verificando outros arquivos do SharePoint, por exemplo no diretório “Web Part Gallery”, não temos a opção de visualizar as propriedades dos arquivos ou efetuar download, então como iremos realizar o download desses arquivos?


Bypassing Sharepoint Download Option Using IDOR Exploitation
É nessa parte que entra o mindset. Verificando as informações do diretório anterior, detectamos que ele faz a chamada de um form na seguinte URL “/Forms/DispForm.aspx?ID=4” que permitiu com que fizéssemos o download do arquivo.
Exemplo: example.com/_layout/15/Forms/DispForm.aspx?ID=4

Pensando na lógica, o que aconteceria se colocássemos esse mesmo caminho do formulário em outro diretório?
URL que conseguimos fazer download:
example.com/_layout/15/Forms/DispForm.aspx?ID=4
URL que estamos sendo bloqueados:
example.com/_catalog/Forms/ALLItems.aspx
Neste caso, foi substituído o arquivo “ALLItems.aspx” por “DispForm.aspx?ID=10”, substituindo o ID 4 por outro número qualquer.
Fazendo essa alteração, observou-se que a aplicação interpretou a requisição e fez download de um dos arquivos do diretório que estava nos bloqueando:

Dessa forma conseguimos efetuar o download de arquivos com sucesso, agora basta somente mudar o ID para enumerar todos os arquivos do SharePoint, sem nenhum tipo de bloqueio, pode até mesmo utilizar o BurpSuite para essa tarefa:


Conclusão
Como podemos observar no decorrer deste artigo, existem diversas vulnerabilidades que podem ser facilmente exploradas por atacantes e nem sempre envolvem ferramentas automatizadas. Explorações lógicas podem ser tão críticas quanto.
A forma mais simples de manter este tipo de ambiente seguro é manter sempre a versão mais atualizada possível e realizar a configuração correta, aplicando um hardening no ambiente.
Referências:
https://github.com/0rigen/SharePwn
https://github.com/sensepost/SPartan
https://github.com/adityaks/sparty
https://github.com/toddsiegel/spscan
https://pt.wikipedia.org/wiki/Microsoft_SharePoint
https://www.shodan.io/
https://censys.io/