Skip to content
KitploitKITPLOIT
ツールブログ
提出
ツールブログ
提出

ハッキング、侵入テスト、サイバーセキュリティツールをあなたのセキュリティアーセナルに!

Kitploitはハッキング、サイバーセキュリティ、ペネトレーションテストのツールディレクトリです。最新のプロジェクトアップデートを見つけて、脆弱性の発見、システム分析、テストの自動化、セキュリティの強化を行いましょう。

··フィード·お問い合わせ·プライバシー·© 2026 Kitploit

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
SharePointDumper — PowerShell製のSharePoint抽出+監査ツール。レッド/ブルー/パープルチーム向け。Microsoft Graph経由でユーザーがアクセス可能なすべてのSharePointサイト/ドライブを列挙し、ファイルを再帰的にダウンロード。すべてのGraphおよびSharePoint HTTPリクエストをログに記録し、SIEM連携、検出エンジニアリング、IRテストに利用可能。 | Kitploit
ツール/GitHubGitHub/zh54321/sharepointdumper
防御ツールOSINT (オープンソースインテリジェンス)データ流出情報収集ペネトレーションテストクラウドセキュリティ認証レッドチーミングインシデントレスポンスログ分析
GitHubzh54321/sharepointdumper

SharePointDumper

1671927ヶ月前Kitploit レビュー済み

人気

すべて見る →

コミュニティで最も使われているツールを見つけましょう。

すべてのツールを探索

ツールコレクションを閲覧

すべてのツールを見る →
共有

PowerShell製のSharePoint抽出+監査ツール。レッド/ブルー/パープルチーム向け。Microsoft Graph経由でユーザーがアクセス可能なすべてのSharePointサイト/ドライブを列挙し、ファイルを再帰的にダウンロード。すべてのGraphおよびSharePoint HTTPリクエストをログに記録し、SIEM連携、検出エンジニアリング、IRテストに利用可能。

リポジトリを見る

SharePointDumper

SharePointDumper は、PowerShell ベースの抽出・監査ユーティリティで、Microsoft Graph を介してユーザーがアクセスできる SharePoint サイトを列挙し、SharePoint 経由でファイルをダウンロードします。

SOC / DLP テスト、パープルチーミング、および単純なレッドチーム評価向けに設計されており、ダウンロードしたファイルや HTTP リクエスト (Graph + SharePoint) すべてを含む詳細なレポートを生成し、SIEM との相関を可能にします。

このツールは認証を行いません。代わりに、適切な Microsoft Graph アクセス許可 (Sites.Read.All または Sites.ReadWrite.All) を持つ、すでに取得済みの OAuth2 アクセストークンが必要です。
トークンの取得には EntraTokenAid を使用できます(以下に例を含みます)。このツールは使用可能なアクセストークンの生成を簡素化します。


✨ 機能

  • Microsoft Graph を介した SharePoint サイト、ドライブ、フォルダ、ファイルの列挙
  • SharePoint 事前認証 URL を使用したドライブとフォルダの再帰的ダンプ
  • 必須の外部依存関係なし(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 クライアントは SharePoint API を呼び出すことが許可されている必要があります。

23 以上の Microsoft ファーストパーティアプリケーションには、すでに Sites.Read… アクセス許可が事前同意されています。これらは SharePoint からファイルをダウンロードできるため、追加のテナント構成なしで有効なトークンを取得するために使用できます。

使用可能なファーストパーティクライアント

トークンの有効期間に関する推奨

可能であれば、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 は、更新トークンと EntraTokenAid を使用して、期限切れのアクセストークン(HTTP 401)を自動的に更新できます。

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 ログには記録されません。


パラメーター

🧾 出力構成

ディレクトリ構成

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 ログ: すべての Graph + SharePoint HTTP リクエスト
    (ApiLog_*.csv または .json)
  • 再開実行では以下が生成されます:
    • SharePointDumper_ReportResume_*
    • SharePointDumper_ApiLogResume_*

⚠️ 認証エラー

401 – 認証なし

アクセストークンが無効または期限切れです。

403 – 禁止

アクセストークンは有効ですが、必要な Microsoft Graph または SharePoint のアクセス許可が不足しています。


🔍 検知

SharePointDumper のアクティビティは以下に記録されます:

  • 統合監査ログ (UAL): SharePoint の検索およびダウンロードアクティビティを記録します。
  • Graph アクティビティログ: すべてのサイトおよびドライブ列挙リクエスト (/organization, /sites, /drives) を記録します。

UAL の例:
asd

Graph アクティビティログの例:
asd


📝 ライセンス

MIT ライセンスの下で公開されています。


ツールをダウンロード
アプリ名クライアント IDFOCIEntraTokenAid 認証コマンド
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'
パラメーター必須型説明
AccessTokenはい文字列OAuth2 アクセストークン。ツール内では認証は行われません。
OutputFolderいいえ文字列ダンプの出力ディレクトリ。デフォルト: "."。-Resume モードでは、既存の前回のダンプフォルダを指定する必要があります。
UserAgentいいえ文字列すべての HTTP リクエストのカスタム UserAgent。デフォルト: SharePointDumper
Proxyいいえ文字列オプションの HTTP プロキシ(例:http://127.0.0.1:8080)。
IncludeExtensionsいいえ文字列[]これらの拡張子のみダウンロードします。
ExcludeExtensionsいいえ文字列[]これらの拡張子をスキップします(IncludeExtensions が使用されている場合は無視されます)。
IncludeSitesいいえ文字列[]これらの値のいずれかに一致するサイトのみ処理します。
ExcludeSitesいいえ文字列[]これらの値のいずれかに一致するサイトをスキップします。
DisableIpLookupいいえスイッチパブリック IP の ifconfig.me への問い合わせを行いません。
RequestDelaySecondsいいえ倍精度浮動小数点数各 HTTP リクエスト前の基本遅延(秒)。
Variationいいえ倍精度浮動小数点数基本遅延に追加するランダムジッター(秒)。
MaxFilesいいえ整数ダウンロードするファイルの最大数。デフォルト: 無制限。
MaxTotalSizeMBいいえ倍精度浮動小数点数最大合計ダウンロードサイズ(MB)。デフォルト: 無制限。
Resumeいいえスイッチすでにダウンロード済みのファイルをスキップします。-OutputFolder が必要です。
ApiLogFormatいいえ文字列Csv(デフォルト)、Json、または None。
ApiLogPathいいえ文字列API ログファイルのカスタム出力パス。
FileLogFormatいいえ文字列Csv(デフォルト)、Json、または None。
FileLogPathいいえ文字列ファイルログファイルのカスタム出力パス。
LogDownloadTokensいいえスイッチtempauth トークンを含む完全な SharePoint ダウンロード URL をログ出力します(安全ではありません)。デフォルト: トークンは編集されます。
RefreshTokenいいえ文字列HTTP 401 発生時にアクセストークンを自動更新するために使用する OAuth2 更新トークン。
RefreshClientIdいいえ文字列-RefreshToken と共に使用するクライアント ID。
RefreshTenantいいえ文字列更新エンドポイントのテナント機関(デフォルト: common)。