¡Herramientas de Hacking, PenTest y Ciberseguridad para tu Arsenal de Seguridad!
SharePointDumper — Herramienta de extracción y auditoría de SharePoint en PowerShell para equipos rojos/azules/morados. Enumera todos los sitios/unidades de SharePoint a los que un usuario puede acceder a través de Microsoft Graph, descarga archivos de forma recursiva y registra cada solicitud HTTP de Graph + SharePoint para correlación SIEM, ingeniería de detección y pruebas de IR. | Kitploit
Herramienta de extracción y auditoría de SharePoint en PowerShell para equipos rojos/azules/morados. Enumera todos los sitios/unidades de SharePoint a los que un usuario puede acceder a través de Microsoft Graph, descarga archivos de forma recursiva y registra cada solicitud HTTP de Graph + SharePoint para correlación SIEM, ingeniería de detección y pruebas de IR.
Compartir
SharePointDumper
SharePointDumper es una utilidad de extracción y auditoría basada en PowerShell que enumera los sitios de SharePoint a los que un usuario puede acceder a través de Microsoft Graph y descarga archivos a través de SharePoint.
Está diseñado para pruebas de SOC / DLP, purple teaming y evaluaciones de red-team no sofisticadas, y por lo tanto genera informes detallados que incluyen los archivos descargados y cada solicitud HTTP (Graph + SharePoint) para la correlación con SIEM.
La herramienta no realiza autenticación. En su lugar, requiere un token de acceso OAuth2 ya obtenido con los permisos adecuados de Microsoft Graph (Sites.Read.All o Sites.ReadWrite.All).
Si necesita ayuda para obtener dicho token, puede usar EntraTokenAid (ejemplos incluidos más abajo), que simplifica la generación de tokens de acceso utilizables.
✨ Características
Enumera sitios, unidades, carpetas y archivos de SharePoint a través de Microsoft Graph
Vuelca recursivamente unidades y carpetas (usando URLs de preautenticación de SharePoint)
Sin dependencias externas obligatorias (sin módulos de Microsoft Graph PowerShell, etc.)
Personalizar el User-Agent
Límites globales de descarga: máximo de archivos y tamaño total máximo
Filtrado de inclusión/exclusión para sitios y extensiones de archivo
Regulación ajustable de solicitudes con jitter aleatorio
Consulta opcional de IP pública
Informe estructurado que incluye:
Resumen (duración, límites, filtros, IP pública)
Sitios de SharePoint accedidos
Registros completos de solicitudes HTTP (CSV o JSON)
Redacción de tokens de descarga de SharePoint, con opción de registrarlos sin redactar
Manejo elegante de Ctrl+C que se detiene después del archivo actual y aún así escribe el informe completo y el registro HTTP antes de salir
Modo de reanudación, que re-enumera pero omite los archivos ya descargados
Ejemplo de registro CSV de API (puede ser CSV o JSON):
Ejemplo de registro de descarga de archivos (puede ser CSV o JSON)
📦 Instalación
Clonar el repositorio
root@kitploit:~
git clone https://github.com/zh54321/SharePointDumper.git
cd SharePointDumper
🔑 Requisitos
SharePointDumper requiere un token de acceso válido de Microsoft Graph con permisos delegados para enumerar sitios y archivos:
Sites.Read.Allo
Sites.ReadWrite.All
Además, el cliente OAuth debe tener permiso para llamar a la API de SharePoint.
Más de 23 aplicaciones propias de Microsoft ya tienen los permisos Sites.Read… pre-consentidos. Pueden descargar archivos de SharePoint y se pueden usar para obtener un token válido sin configuración adicional del inquilino.
Si es posible, use un token de acceso habilitado para CAE, que sigue siendo válido hasta 24 horas y reduce las interrupciones durante volcados de larga duración.
Obtención de un token con EntraTokenAid
Puede usar EntraTokenAid para obtener un token de acceso adecuado a través de PowerShell
(Los tokens CAE se solicitan por defecto):
root@kitploit:~
# Clone el módulo
git clone https://github.com/zh54321/EntraTokenAid.git
Import-Module EntraTokenAid/EntraTokenAid.psm1
# Obtenga los tokens
$tokens = Invoke-Auth -ClientID 'b26aadf8-566f-4478-926f-589f601d9c74' -RedirectUrl 'urn:ietf:wg:oauth:2.0:oob'
# Opcional: Almacene en una variable compatible con los ejemplos siguientes
$AccessToken = $tokens.access_token
En modo de reanudación, -OutputFolderdebe apuntar a la carpeta de su ejecución anterior.
Usar actualización automática de token
SharePointDumper puede actualizar automáticamente un token de acceso expirado (HTTP 401) usando un token de actualización y EntraTokenAid.
root@kitploit:~
# Obligatorio: El módulo debe estar importado para que la herramienta pueda usar el comando Invoke-Refresh
Import-Module .\EntraTokenAid\EntraTokenAid.psm1
# Opcional: Obtener tokens usando EntraTokenAid (otros métodos también son posibles)
$tokens = Invoke-Auth -ClientId 'b26aadf8-566f-4478-926f-589f601d9c74' -RedirectUrl 'urn:ietf:wg:oauth:2.0:oob'
# Ejecutar SharePointDumper con soporte de actualización
.\Invoke-SharePointDumper.ps1 -AccessToken $tokens.access_token -RefreshToken $tokens.refresh_token -RefreshClientId 'b26aadf8-566f-4478-926f-589f601d9c74'
Nota: Los intentos de actualización de token NO se registran en el registro de API.
Parámetros
Parámetro
Obligatorio
Tipo
Descripción
AccessToken
Sí
String
Token de acceso OAuth2. No se realiza autenticación dentro de la herramienta.
OutputFolder
No
String
Directorio para el volcado. Valor predeterminado: ".". En modo -Resume, debe apuntar a una carpeta de volcado anterior existente.
UserAgent
No
String
UserAgent personalizado para todas las solicitudes HTTP. Valor predeterminado: SharePointDumper
Proxy
No
String
Proxy HTTP opcional (ej., http://127.0.0.1:8080).
IncludeExtensions
No
String[]
Descargar solo estas extensiones.
ExcludeExtensions
No
String[]
Omitir estas extensiones (se ignora si se usa IncludeExtensions).
IncludeSites
No
String[]
Procesar solo sitios que coincidan con cualquiera de estos valores.
ExcludeSites
No
String[]
Omitir sitios que coincidan con cualquiera de estos valores.
DisableIpLookup
No
Switch
No consultar ifconfig.me para IP pública.
RequestDelaySeconds
No
Double
Retraso base antes de cada solicitud HTTP.
Variation
No
Double
Jitter aleatorio añadido al retraso base.
MaxFiles
No
Int
Número máximo de archivos a descargar. Valor predeterminado: sin límite.
MaxTotalSizeMB
No
Double
Tamaño total máximo de descarga. Valor predeterminado: sin límite.
Resume
No
Switch
Omite archivos ya descargados. Requiere .
🧾 Estructura de salida
Estructura de directorios
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/
Registros
Informe: resumen de alto nivel (Report_*.txt)
Registro de API: cada solicitud HTTP de Graph + SharePoint
(ApiLog_*.csv o .json)
Ejecuciones de reanudación generan:
SharePointDumper_ReportResume_*
SharePointDumper_ApiLogResume_*
⚠️ Errores de autenticación
401 – No autorizado
El token de acceso no es válido o ha expirado.
403 – Prohibido
El token de acceso es válido, pero faltan los permisos requeridos de Microsoft Graph o SharePoint.
🔍 Detección
Las actividades de SharePointDumper se registran en:
Registro de auditoría unificado (UAL): registra la actividad de búsqueda y descarga de SharePoint.
Registros de actividad de Graph: registran todas las solicitudes de enumeración de sitios y unidades (/organization, /sites, /drives).