Skip to content
KitploitKITPLOIT
ИнструментыБлог
Отправить
ИнструментыБлог
Отправить

Инструменты для хакинга, пентеста и кибербезопасности — ваш арсенал защиты!

Kitploit — это каталог инструментов для хакинга, кибербезопасности и пентестинга. Находите последние обновления проектов для поиска уязвимостей, анализа систем, автоматизации тестирования и усиления вашей безопасности.

··Ленты·Контакты·Конфиденциальность·© 2026 Kitploit

Каталог инструментов

Категории

Все категории
Loading categories
SharePointDumper — PowerShell инструмент для извлечения и аудита SharePoint для красных/синих/фиолетовых команд. Перечисляет все сайты/диски SharePoint, к которым пользователь имеет доступ через Microsoft Graph, рекурсивно загружает файлы и регистрирует каждый HTTP-запрос Graph и SharePoint для корреляции с SIEM, engineering обнаружения и тестирования IR. | Kitploit
Инструменты/GitHubGitHub/zh54321/sharepointdumper
Оборонительные ИнструментыOSINT (Разведка открытых источников)Эксфильтрация данныхСбор информацииТестирование на ПроникновениеБезопасность облачных средАутентификацияRed TeamingРеагирование на Инциденты

Популярное

Смотреть все →

Откройте для себя самые используемые инструменты нашего сообщества.

Изучить все инструменты

Просмотрите нашу коллекцию инструментов

Смотреть все инструменты →
Анализ Журналов
GitHubzh54321/sharepointdumper

SharePointDumper

Репозиторий
1671927 месяцев назадПроверено Kitploit

Описание

PowerShell инструмент для извлечения и аудита SharePoint для красных/синих/фиолетовых команд. Перечисляет все сайты/диски SharePoint, к которым пользователь имеет доступ через Microsoft Graph, рекурсивно загружает файлы и регистрирует каждый HTTP-запрос Graph и SharePoint для корреляции с SIEM, engineering обнаружения и тестирования IR.

Поделиться

SharePointDumper

SharePointDumper — это утилита для извлечения и аудита на базе PowerShell, которая перечисляет сайты SharePoint, доступные пользователю через Microsoft Graph, и загружает файлы через SharePoint.

Она предназначена для тестирования SOC/DLP, фиолетовых команд и несложных оценок red-team, поэтому создает подробные отчеты, включая загруженные файлы и каждый HTTP-запрос (Graph + SharePoint) для корреляции с SIEM.

Инструмент не выполняет аутентификацию. Вместо этого он требует уже полученный маркер доступа OAuth2 с соответствующими разрешениями Microsoft Graph (Sites.Read.All или Sites.ReadWrite.All).
Если вам нужна помощь в получении такого маркера, вы можете использовать EntraTokenAid (примеры приведены ниже), который упрощает генерацию пригодных для использования маркеров доступа.


✨ Возможности

  • Перечисление сайтов SharePoint, дисков, папок и файлов через Microsoft Graph
  • Рекурсивная выгрузка дисков и папок (с использованием предварительно аутентифицированных URL SharePoint)
  • Отсутствие обязательных внешних зависимостей (без модулей Microsoft Graph PowerShell и т.п.)
  • Настройка User-Agent
  • Глобальные ограничения на загрузку: максимальное количество файлов и максимальный общий размер
  • Фильтрация по включению/исключению сайтов и расширений файлов
  • Регулируемая задержка запросов со случайным джиттером
  • Опциональное определение публичного IP-адреса
  • Поддержка простого HTTP-прокси
  • Структурированный отчет, включающий:
    • Сводку (длительность, лимиты, фильтры, публичный IP)
  • Посещённые сайты SharePoint
  • Полные логи HTTP-запросов (CSV или JSON)
  • Сокрытие маркеров загрузки SharePoint с возможностью логирования без редактирования
  • Корректная обработка Ctrl+C: остановка после текущего файла и запись полного отчёта и HTTP-лога перед выходом
  • Режим возобновления: повторное перечисление с пропуском уже загруженных файлов
  • Опциональное автоматическое обновление маркера доступа (требуется EntraTokenAid https://github.com/zh54321/EntraTokenAid.git)

  • 📦 Изображения

    Выполнение:
    alt text

    Пример CSV-лога API (может быть CSV или JSON): alt text

    Пример лога загрузки файлов (может быть CSV или JSON) alt text


    📦 Установка

    Клонирование репозитория

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

    🔑 Требования

    SharePointDumper требует действительный маркер доступа Microsoft Graph с делегированными разрешениями для перечисления сайтов и файлов:

    • Sites.Read.All или
    • Sites.ReadWrite.All

    Кроме того, клиент OAuth должен иметь разрешение на вызов API SharePoint.

    Более 23 собственных приложений Microsoft уже имеют предварительно согласованные разрешения Sites.Read…. Они могут загружать файлы из SharePoint и использоваться для получения действительного маркера без дополнительной настройки тенанта.

    Доступные клиенты первой стороны
    Имя приложенияИдентификатор клиентаFOCIКоманда аутентификации 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'

    Рекомендация по сроку действия маркера

    Если возможно, используйте маркер доступа с поддержкой CAE, который остается действительным до 24 часов и уменьшает перерывы во время длительных выгрузок.

    Получение маркера с помощью EntraTokenAid

    Вы можете использовать EntraTokenAid для получения подходящего маркера доступа через PowerShell
    (маркеры CAE запрашиваются по умолчанию):

    root@kitploit:~
    # Клонирование модуля
    git clone https://github.com/zh54321/EntraTokenAid.git
    Import-Module EntraTokenAid/EntraTokenAid.psm1
    
    # Получение маркеров
    $tokens = Invoke-Auth -ClientID 'b26aadf8-566f-4478-926f-589f601d9c74' -RedirectUrl 'urn:ietf:wg:oauth:2.0:oob'
    
    # Опционально: сохранить в переменную, совместимую с примерами ниже
    $AccessToken = $tokens.access_token
    

    🚀 Использование

    Базовое использование

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

    Фильтрация сайтов

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

    Фильтрация расширений файлов

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

    Ограничение загрузок

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

    Замедление запросов

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

    С джиттером:

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

    Возобновление (пример после истечения срока маркера)

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

    В режиме возобновления -OutputFolder должен указывать на папку предыдущего запуска.

    Использование автоматического обновления маркера

    SharePointDumper может автоматически обновить истекший маркер доступа (HTTP 401) с помощью маркера обновления и EntraTokenAid.

    root@kitploit:~
    # Обязательно: модуль должен быть импортирован, чтобы инструмент мог использовать команду Invoke-Refresh
    Import-Module .\EntraTokenAid\EntraTokenAid.psm1
    
    # Опционально: получение маркеров с помощью EntraTokenAid (возможны и другие методы)
    $tokens = Invoke-Auth -ClientId 'b26aadf8-566f-4478-926f-589f601d9c74' -RedirectUrl 'urn:ietf:wg:oauth:2.0:oob'
    
    # Запуск SharePointDumper с поддержкой обновления
    .\Invoke-SharePointDumper.ps1 -AccessToken $tokens.access_token -RefreshToken $tokens.refresh_token -RefreshClientId 'b26aadf8-566f-4478-926f-589f601d9c74'
    

    Примечание: попытки обновления маркера НЕ записываются в лог API.


    Параметры

    ПараметрОбязательныйТипОписание
    AccessTokenДаStringМаркер доступа OAuth2. Аутентификация внутри инструмента не выполняется.
    OutputFolderНетStringКаталог для выгрузки. По умолчанию: ".". В режиме -Resume должен указывать на существующую папку предыдущей выгрузки.
    UserAgentНетStringПользовательский UserAgent для всех HTTP-запросов. По умолчанию: SharePointDumper
    ProxyНетStringОпциональный HTTP-прокси (например, http://127.0.0.1:8080).
    IncludeExtensionsНетString[]Загружать только файлы с этими расширениями.
    ExcludeExtensionsНетString[]Пропускать эти расширения (игнорируется, если указан IncludeExtensions).
    IncludeSitesНетString[]Обрабатывать только сайты, соответствующие любому из этих значений.
    ExcludeSitesНетString[]Пропускать сайты, соответствующие любому из этих значений.
    DisableIpLookupНетSwitchНе запрашивать ifconfig.me для определения публичного IP.
    RequestDelaySecondsНетDoubleБазовая задержка перед каждым HTTP-запросом.
    VariationНетDoubleСлучайный джиттер, добавляемый к базовой задержке.
    MaxFilesНетIntМаксимальное количество файлов для загрузки. По умолчанию: без ограничения.
    MaxTotalSizeMBНетDoubleМаксимальный общий размер загрузки. По умолчанию: без ограничения.
    ResumeНетSwitch

    🧾 Структура вывода

    Структура каталогов

    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/
    

    Логи

    • Отчёт: высокоуровневая сводка (Report_*.txt)
    • Лог API: каждый HTTP-запрос Graph + SharePoint
      (ApiLog_*.csv или .json)
    • При возобновлении создаются:
      • SharePointDumper_ReportResume_*
      • SharePointDumper_ApiLogResume_*

    ⚠️ Ошибки аутентификации

    401 – Не авторизован

    Маркер доступа недействителен или истек.

    403 – Запрещено

    Маркер доступа действителен, но отсутствуют необходимые разрешения Microsoft Graph или SharePoint.


    🔍 Обнаружение

    Действия SharePointDumper логируются в:

    • Единый журнал аудита (UAL): регистрирует активность поиска и загрузки SharePoint.
    • Журналы действий Graph: записывают все запросы перечисления сайтов и дисков (/organization, /sites, /drives).

    Пример UAL:
    asd

    Пример журнала действий Graph:
    asd


    📝 Лицензия

    Распространяется под лицензией MIT.

    Скачать инструмент
    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'
    Пропускать уже загруженные файлы. Требует -OutputFolder.
    ApiLogFormatНетStringCsv (по умолчанию), Json или None.
    ApiLogPathНетStringПользовательский путь к файлу лога API.
    FileLogFormatНетStringCsv (по умолчанию), Json или None.
    FileLogPathНетStringПользовательский путь к файлу лога файлов.
    LogDownloadTokensНетSwitchЛогировать полные URL загрузки SharePoint, включая маркеры tempauth (небезопасно). По умолчанию маркеры редактируются.
    RefreshTokenНетStringМаркер обновления OAuth2, используемый для автоматического продления маркера доступа при HTTP 401.
    RefreshClientIdНетStringИдентификатор клиента, используемый вместе с -RefreshToken.
    RefreshTenantНетStringОрган-тенант для конечной точки обновления (по умолчанию: common).