Skip to content
KitploitKITPLOIT
FerramentasBlog
Enviar
FerramentasBlog
Enviar

Ferramentas de Hacking, PenTest e Cibersegurança para o seu Arsenal de Segurança!

Kitploit é um diretório de ferramentas de hacking, cibersegurança e pentesting. Descubra as últimas atualizações de projetos para encontrar vulnerabilidades, analisar sistemas, automatizar testes e fortalecer sua segurança.

··Feeds·Contato·Privacidade·© 2026 Kitploit

Diretório de Ferramentas

Categorias

Ver todas as categorias
Loading categories
SharePointDumper — Ferramenta de extração e auditoria do SharePoint em PowerShell para equipes red/blue/purple. Enumera todos os sites/unidades do SharePoint que um usuário pode acessar via Microsoft Graph, baixa arquivos recursivamente e registra todas as requisições HTTP do Graph + SharePoint para correlação com SIEM, engenharia de detecção e testes de IR. | Kitploit
Ferramentas/GitHubGitHub/zh54321/sharepointdumper
Ferramentas DefensivasOSINT (Inteligência de Fontes Abertas)Exfiltração de DadosColeta de InformaçõesTestes de PenetraçãoSegurança na NuvemAutenticaçãoRed TeamingResposta a Incidentes

Mais Populares

Ver todos →

Descubra as ferramentas mais usadas pela nossa comunidade.

Explore todas as ferramentas

Navegue pela nossa coleção de ferramentas

Ver todas as ferramentas →

Sobre

Análise de Logs
GitHubzh54321/sharepointdumper

SharePointDumper

Ver Repositório
16719há 6 mesesRevisado pelo Kitploit

Ferramenta de extração e auditoria do SharePoint em PowerShell para equipes red/blue/purple. Enumera todos os sites/unidades do SharePoint que um usuário pode acessar via Microsoft Graph, baixa arquivos recursivamente e registra todas as requisições HTTP do Graph + SharePoint para correlação com SIEM, engenharia de detecção e testes de IR.

Compartilhar

SharePointDumper

O SharePointDumper é um utilitário de extração e auditoria baseado em PowerShell que enumera sites do SharePoint que um usuário pode acessar via Microsoft Graph e baixa arquivos via SharePoint.

Ele é projetado para testes de SOC / DLP, purple teaming e avaliações de red team não sofisticadas, e portanto produz relatórios detalhados incluindo arquivos baixados e cada requisição HTTP (Graph + SharePoint) para correlação com SIEM.

A ferramenta não realiza autenticação. Em vez disso, ela requer um token de acesso OAuth2 já obtido com as permissões apropriadas do Microsoft Graph (Sites.Read.All ou Sites.ReadWrite.All).
Se você precisar de ajuda para obter tal token, pode usar o EntraTokenAid (exemplos incluídos abaixo), que simplifica a geração de tokens de acesso utilizáveis.


✨ Funcionalidades

  • Enumera sites, drives, pastas e arquivos do SharePoint via Microsoft Graph
  • Despeja recursivamente drives e pastas (usando URLs de pré-autenticação do SharePoint)
  • Sem dependências externas obrigatórias (sem módulos do PowerShell do Microsoft Graph etc.)
  • Personalize o User-Agent
  • Limites globais de download: máximo de arquivos e tamanho total máximo
  • Filtros de inclusão/exclusão para sites e extensões de arquivo
  • Limitação de requisição ajustável com jitter aleatório
  • Consulta opcional de IP público
  • Suporte a proxy HTTP simples
  • Relatório estruturado incluindo:
    • Resumo (duração, limites, filtros, IP público)
    • Sites do SharePoint acessados
    • Logs completos de requisições HTTP (CSV ou JSON)
  • Ofuscação de tokens de download do SharePoint, com opção de registrá-los sem ofuscação
  • Tratamento elegante de Ctrl+C que para após o arquivo atual e ainda escreve o relatório completo e o log HTTP antes de sair
  • Modo de retomada, que re-enumera mas pula arquivos já baixados
  • Atualização automática opcional de token de acesso (requer EntraTokenAid https://github.com/zh54321/EntraTokenAid.git)

📦 Imagens

Execução:
texto alternativo

Exemplo de Log de API CSV (pode ser CSV ou JSON):
texto alternativo

Exemplo de Log de Download de Arquivos (pode ser CSV ou JSON)
texto alternativo


📦 Instalação

Clone o repositório

root@kitploit:~
git clone https://github.com/zh54321/SharePointDumper.git
cd SharePointDumper

🔑 Requisitos

O SharePointDumper requer um token de acesso válido do Microsoft Graph com permissões delegadas para enumerar sites e arquivos:

  • Sites.Read.All ou
  • Sites.ReadWrite.All

Além disso, o cliente OAuth deve ter permissão para chamar a API do SharePoint.

Mais de 23 aplicativos próprios da Microsoft já possuem permissões Sites.Read… pré-consentidas. Eles podem baixar arquivos do SharePoint e podem ser usados para obter um token válido sem configuração adicional do tenant.

Clientes próprios utilizáveis

Recomendação de vida útil do token

Se possível, use um token de acesso habilitado para CAE, que permanece válido por até 24 horas e reduz interrupções durante despejos de longa duração.

Obtendo um token com o EntraTokenAid

Você pode usar o EntraTokenAid para obter um token de acesso adequado via PowerShell
(tokens CAE são solicitados por padrão):

root@kitploit:~
# Clone the module
git clone https://github.com/zh54321/EntraTokenAid.git
Import-Module EntraTokenAid/EntraTokenAid.psm1

# Get the the tokens
$tokens = Invoke-Auth -ClientID 'b26aadf8-566f-4478-926f-589f601d9c74' -RedirectUrl 'urn:ietf:wg:oauth:2.0:oob'

# Optional: Store in variable which is compatible with the examples below
$AccessToken = $tokens.access_token

🚀 Uso

Uso básico

root@kitploit:~
.\Invoke-SharePointDumper.ps1 -AccessToken $accesstoken -UserAgent "Not SharePointDumper"

Filtrar sites

root@kitploit:~
.\Invoke-SharePointDumper.ps1 -AccessToken $accesstoken -IncludeSites "Finance","Projects"
root@kitploit:~
.\Invoke-SharePointDumper.ps1 -AccessToken $accesstoken -ExcludeSites "HR","Legal"

Filtrar extensões de arquivo

root@kitploit:~
.\Invoke-SharePointDumper.ps1 -AccessToken $accesstoken -IncludeExtensions pdf,docx
root@kitploit:~
.\Invoke-SharePointDumper.ps1 -AccessToken $accesstoken -ExcludeExtensions jpg,bmp

Limitar downloads

root@kitploit:~
.\Invoke-SharePointDumper.ps1 -AccessToken $accesstoken -MaxFiles 500
root@kitploit:~
.\Invoke-SharePointDumper.ps1 -AccessToken $accesstoken -MaxTotalSizeMB 100

Desacelerar requisições

root@kitploit:~
.\Invoke-SharePointDumper.ps1 -AccessToken $accesstoken -RequestDelaySeconds 2

Com jitter:

root@kitploit:~
.\Invoke-SharePointDumper.ps1 -AccessToken $accesstoken -RequestDelaySeconds 2 -Variation 3

Retomada (exemplo após expiração do token)

root@kitploit:~
.\Invoke-SharePointDumper.ps1 -AccessToken $accesstoken -Resume -OutputFolder .\20251121_1551_MyTenant

No modo de retomada, -OutputFolder deve apontar para a pasta da execução anterior.

Usando Atualização Automática de Token

O SharePointDumper pode atualizar automaticamente um token de acesso expirado (HTTP 401) usando um token de atualização e o EntraTokenAid.

root@kitploit:~
# Mandatory: The module must be imported so the tool can use the Invoke-Refresh command
Import-Module .\EntraTokenAid\EntraTokenAid.psm1

# Optional: Obtain tokens using EntraTokenAid (other methods are also possible)
$tokens = Invoke-Auth -ClientId 'b26aadf8-566f-4478-926f-589f601d9c74' -RedirectUrl 'urn:ietf:wg:oauth:2.0:oob'

# Run SharePointDumper with refresh support
.\Invoke-SharePointDumper.ps1 -AccessToken $tokens.access_token -RefreshToken $tokens.refresh_token -RefreshClientId 'b26aadf8-566f-4478-926f-589f601d9c74'

Nota: As tentativas de atualização de token NÃO são registradas no log da API.


Parâmetros

🧾 Estrutura de Saída

Estrutura de diretórios

root@kitploit:~
20261115_MySecureTenant/
 ├── SharePointDumper_Report_20261115_080333.txt
 ├── SharePointDumper_ApiLog_20261115_080333.csv
 ├── SharePointDumper_FileLog_20261115_080333.csv
 ├── Site A/
 │    └── Documents/
 │         ├── file1.docx
 │         └── file2.pdf
 └── Site B/
      └── Site Assets/

Logs

  • Relatório: resumo de alto nível (Report_*.txt)
  • Log da API: cada requisição HTTP do Graph + SharePoint
    (ApiLog_*.csv ou .json)
  • Execuções de retomada geram:
    • SharePointDumper_ReportResume_*
    • SharePointDumper_ApiLogResume_*

⚠️ Erros de Autenticação

401 – Não Autorizado

Token de acesso inválido ou expirado.

403 – Proibido

Token de acesso válido, mas faltam permissões necessárias do Microsoft Graph ou SharePoint.


🔍 Detecção

As atividades do SharePointDumper são registradas em:

  • Log de Auditoria Unificado (UAL): registra atividade de pesquisa e download do SharePoint.
  • Logs de Atividade do Graph: registram todas as requisições de enumeração de sites e drives (/organization, /sites, /drives).

Exemplo de UAL:
asd

Exemplo de Log de Atividade do Graph:
asd


📝 Licença

Lançado sob a Licença MIT.


Baixar ferramenta
Nome do AplicativoClient IDFOCIComando de Autenticação do EntraTokenAid
Microsoft Teams1fec8e78-bce4-4aaf-ab1b-5451cc387264TRUE$tokens = Invoke-Auth -ClientID '1fec8e78-bce4-4aaf-ab1b-5451cc387264' -RedirectUrl 'https://login.microsoftonline.com/common/oauth2/nativeclient'
Outlook Mobile27922004-5251-4030-b22d-91ecd9a37ea4TRUE$tokens = Invoke-Auth -ClientID '27922004-5251-4030-b22d-91ecd9a37ea4' -RedirectUrl 'x-msauth-outlook-prod://com.microsoft.Office.Outlook'
OneDrive SyncEngineab9b8c07-8f02-4f72-87fa-80105867a763TRUE$tokens = Invoke-Auth -ClientID 'ab9b8c07-8f02-4f72-87fa-80105867a763' -RedirectUrl 'https://login.microsoftonline.com/common/oauth2/nativeclient'
OneDrive iOS Appaf124e86-4e96-495a-b70a-90f90ab96707TRUE$tokens = Invoke-Auth -ClientID 'af124e86-4e96-495a-b70a-90f90ab96707' -RedirectUrl 'ms-onedrive-auth://com.microsoft.skydrive.shareextension'
Microsoft Bing Searchcf36b471-5b44-428c-9ce7-313bf84528deTRUE$tokens = Invoke-Auth -ClientID 'cf36b471-5b44-428c-9ce7-313bf84528de' -RedirectUrl 'msauth.com.microsoft.bing://auth'
OneDriveb26aadf8-566f-4478-926f-589f601d9c74TRUE$tokens = Invoke-Auth -ClientID 'b26aadf8-566f-4478-926f-589f601d9c74' -RedirectUrl 'urn:ietf:wg:oauth:2.0:oob'
SharePointd326c1ce-6cc6-4de2-bebc-4591e5e13ef0TRUE$tokens = Invoke-Auth -ClientID 'd326c1ce-6cc6-4de2-bebc-4591e5e13ef0' -RedirectUrl 'msauth://code/ms-sharepoint-auth%3A%2F%2Fcom.microsoft.sharepoint'
SharePoint Androidf05ff7c9-f75a-4acd-a3b5-f4b6a870245dTRUE$tokens = Invoke-Auth -ClientID 'f05ff7c9-f75a-4acd-a3b5-f4b6a870245d' -RedirectUrl 'msauth://com.microsoft.sharepoint/gSoqzhbCjkyvI%2Fl7kC7IdG7KbPU%3D'
OfficeHome4765445b-32c6-49b0-83e6-1d93765276caFALSE$tokens = Invoke-Auth -ClientID '4765445b-32c6-49b0-83e6-1d93765276ca' -RedirectUrl 'https://scuprodprv.www.microsoft365.com/spalanding' -Origin 'https://doesnotmatter'
SharePoint Online Web Client Extensibility08e18876-6177-487e-b8b5-cf950c1e598cFALSE$tokens = Invoke-Auth -ClientID '08e18876-6177-487e-b8b5-cf950c1e598c' -RedirectUrl 'https://onedrive.cloud.microsoft/_forms/spfxsinglesignon.aspx' -Origin 'https://doesnotmatter'
Microsoft Teams Web Client5e3ce6c0-2b1f-4285-8d4b-75ee78787346FALSE$tokens = Invoke-Auth -ClientID '5e3ce6c0-2b1f-4285-8d4b-75ee78787346' -RedirectUrl 'https://teams.cloud.microsoft/convene/townhall' -Origin 'https://doesnotmatter'
Portfoliosf53895d3-095d-408f-8e93-8f94b391404eFALSE$tokens = Invoke-Auth -ClientID 'f53895d3-095d-408f-8e93-8f94b391404e' -RedirectUrl 'https://project.microsoft.com/msal-redirect2' -Origin 'https://doesnotmatter'
Microsoft Remote Assistfca5a20d-55aa-4395-9c2f-c6147f3c9ffaFALSE$tokens = Invoke-Auth -ClientID 'fca5a20d-55aa-4395-9c2f-c6147f3c9ffa' -RedirectUrl 'http://localhost:13824'
ProcessSimpleGCC38a893b6-d74c-4786-8fe7-bc3b4318e881FALSE$tokens = Invoke-Auth -ClientID '38a893b6-d74c-4786-8fe7-bc3b4318e881' -RedirectUrl 'https://make.gov.powerautomate.us/auth-redirect.html' -Origin 'https://doesnotmatter'
WindowsShareExperienceProda8759234-4b8b-4d94-8c0a-ee1ab73af270FALSE$tokens = Invoke-Auth -ClientID 'a8759234-4b8b-4d94-8c0a-ee1ab73af270' -RedirectUrl 'ms-appx-web://Microsoft.AAD.BrokerPlugin/a8759234-4b8b-4d94-8c0a-ee1ab73af270'
Office voice transcript generator AADd2eb9fef-f34c-40ec-b6a3-4bf524065158FALSE$tokens = Invoke-Auth -ClientID 'd2eb9fef-f34c-40ec-b6a3-4bf524065158' -RedirectUrl 'msauth.com.microsoft.Office.TestVoice.TestVoice2://auth'
Azure OpenAI Studiodc807dec-d211-4b3f-bc8a-43b3443c4874FALSE$tokens = Invoke-Auth -ClientID 'dc807dec-d211-4b3f-bc8a-43b3443c4874' -RedirectUrl 'https://dev.oai.azure.com' -Origin 'https://doesnotmatter'
Azure AI Studio Appcb2ff863-7f30-4ced-ab89-a00194bcf6d9FALSE$tokens = Invoke-Auth -ClientID 'cb2ff863-7f30-4ced-ab89-a00194bcf6d9' -RedirectUrl 'https://int.ai.azure.com/agents' -Origin 'https://doesnotmatter'
Azure Machine Learning Workbench Web Appd7304df8-741f-47d3-9bc2-df0e24e2071fFALSE$tokens = Invoke-Auth -ClientID 'd7304df8-741f-47d3-9bc2-df0e24e2071f' -RedirectUrl 'https://dev.ml.azure.com/redirect' -Origin 'https://doesnotmatter'
M365ChatClientc0ab8ce9-e9a0-42e7-b064-33d422df41f1FALSE$tokens = Invoke-Auth -ClientID 'c0ab8ce9-e9a0-42e7-b064-33d422df41f1' -RedirectUrl 'https://fa000000128.resources.office.net/f7024bdc-7caf-4ca8-807d-2908f09640d6/1.0.2412.19011/en-us_web/login.html' -Origin 'https://doesnotmatter'
Microsoft Loop Appa187e399-0c36-4b98-8f04-1edc167a0996FALSE$tokens = Invoke-Auth -ClientID 'a187e399-0c36-4b98-8f04-1edc167a0996' -RedirectUrl 'https://hosted.loop.cloud.dev.microsoft/authLanding.html' -Origin 'https://doesnotmatter'
Viva Goalsc8423563-e8f6-49f2-924b-90d9f664378aFALSE$tokens = Invoke-Auth -ClientID 'c8423563-e8f6-49f2-924b-90d9f664378a' -RedirectUrl 'https://goals-ppe.microsoft.com/aad/consume' -Origin 'https://doesnotmatter'
Microsoft Mesheea619ad-603a-4b03-a386-860fcc7410d1FALSE$tokens = Invoke-Auth -ClientID 'eea619ad-603a-4b03-a386-860fcc7410d1' -RedirectUrl 'http://localhost:13824'
ParâmetroObrigatórioTipoDescrição
AccessTokenSimStringToken de acesso OAuth2. Nenhuma autenticação é realizada dentro da ferramenta.
OutputFolderNãoStringDiretório para o despejo. Padrão: ".". No modo -Resume, deve apontar para uma pasta de despejo existente da execução anterior.
UserAgentNãoStringUserAgent personalizado para todas as requisições HTTP. Padrão: SharePointDumper
ProxyNãoStringProxy HTTP opcional (ex.: http://127.0.0.1:8080).
IncludeExtensionsNãoString[]Baixar apenas estas extensões.
ExcludeExtensionsNãoString[]Pular estas extensões (ignorado se IncludeExtensions for usado).
IncludeSitesNãoString[]Processar apenas sites que correspondam a qualquer um desses valores.
ExcludeSitesNãoString[]Pular sites que correspondam a qualquer um desses valores.
DisableIpLookupNãoSwitchNão consultar ifconfig.me para IP público.
RequestDelaySecondsNãoDoubleAtraso base antes de cada requisição HTTP.
VariationNãoDoubleJitter aleatório adicionado ao atraso base.
MaxFilesNãoIntNúmero máximo de arquivos para baixar. Padrão: sem limite.
MaxTotalSizeMBNãoDoubleTamanho total máximo de download. Padrão: sem limite.
ResumeNãoSwitchPula arquivos já baixados. Requer -OutputFolder.
ApiLogFormatNãoStringCsv (padrão), Json ou None.
ApiLogPathNãoStringCaminho de saída personalizado para o arquivo de log da API.
FileLogFormatNãoStringCsv (padrão), Json ou None.
FileLogPathNãoStringCaminho de saída personalizado para o arquivo de log de arquivos.
LogDownloadTokensNãoSwitchRegistrar URLs completas de download do SharePoint incluindo tokens tempauth (inseguro). Padrão: tokens são ofuscados.
RefreshTokenNãoStringToken de atualização OAuth2 usado para renovação automática do token de acesso em HTTP 401.
RefreshClientIdNãoStringClient ID usado junto com -RefreshToken.
RefreshTenantNãoStringAutoridade do tenant para o endpoint de atualização (padrão: common).