
バグ報奨金ハンター、ペンテスター、レッドチーム向けの Personal Access Token (PAT) 偵察ツール

GitHubやNPMの個人アクセストークン(PAT)を見つけて、「これは有効なのだろうか?」「悪意のある人物がこれで何ができるのだろう?」と思ったことはありませんか?もしそうなら、このツールがぴったりです!
gimmePatzは、PATのための包括的な偵察(リコン)ツールです。gimmePATzは、PATが有効かどうか、そしてどの種類のPATかを教えてくれます。PATを作成したユーザーアカウントに関する情報(そのユーザーが所属する組織やフォロワー数など)も提供します。gimmePATzは、PATが持つスコープと、PATがアクセスできる変数やシークレットを表示します。また、PATが関連付けられているリポジトリ、NPMパッケージ、GitHub Organizationの一覧も表示し、各リソースに対するPATの正確な権限を教えてくれます。このツールは、バグバウンティハンター、ペネトレーションテスター、レッドチームなどのオフェンシブセキュリティの実務者向けに設計されています。このツールを使用することで、合法的な文脈で使用することに同意したものとみなされます。
ファイルを指定してgimmePATzを実行すれば、そのファイル内のすべてのPATを検出し、それらが有効かどうかを教えてくれます。gimmePATzはJSON出力にも対応しているので、出力をJSONで保存したり、gimmePATzの出力をjqなどの他のツールにパイプしたりできます。gimmePATzのさまざまな使用方法の例は、下記の「高度な使い方」セクションで確認できます。
gimmepatz.py TOKEN
requestsライブラリ # pip install requestsgit(リポジトリのダウンロード用)# Discover secrets and variables
gimmepatz.py TOKEN --variables
# Include organization repositories
gimmepatz.py TOKEN --org GITHUB_ORGANIZATION
# JSON output for scripting
gimmepatz.py TOKEN --json
# Combined: organization repos + JSON output
gimmepatz.py TOKEN --org GITHUB_ORGANIZATION --json
# Save the output of gimmePATz in JSON output to a file
gimmepatz.py TOKEN --variables --org target-org --json > assessment.json
# Download all accessible repositories
gimmepatz.py TOKEN --download
# Download only private repositories
gimmepatz.py TOKEN --download --download-type private
# Custom download location
gimmepatz.py TOKEN --download --download-path ./target-repos
# Scan a file to see if it has any PATs in it
gimmepatz.py --scan ./example-file.json
スクリプトをクローンまたはダウンロードする
git clone https://github.com/6mile/gimmepatz.git
cd ./gimmepatz/ && chmod u+x ./gimmepatz.py
_ ______ ___ _____
(_) | ___ \/ _ \_ _|
__ _ _ _ __ ___ _ __ ___ ___| |_/ / /_\ \| |____
/ _` | | '_ ` _ \| '_ ` _ \ / _ \ __/| _ || |_ /
| (_| | | | | | | | | | | | | __/ | | | | || |/ /
\__, |_|_| |_| |_|_| |_| |_|\___\_| \_| |_/\_/___|
__/ |
|___/ "Personal Access Token recon tool"
----------------------------------------------------
by @6mile
✅ Token is valid
👤 Authenticated as: octocat
Name: Octocat Maclean
Account type: User
Public repos: 4
Private repos: 3
Followers: 9714
Following: 731
🏢 Organization Memberships (2 total):
👤 Space-Force-Beta (member)
Name: Space-Force-Beta
Description: Building cool stuff for space
Public repos: 2
Private repos: 1
URL: https://github.com/Space-Force-Beta
👑 ThrifyBank (admin)
Description: The thriftiest Neo Bank in Kansas!
Public repos: 1
Private repos: 5
URL: https://github.com/thrifybank-kansas
🔑 Token Scopes (14 total):
• codespace:secrets
• notifications
• read:audit_log
• read:discussion
• read:enterprise
• read:org
• read:packages
• read:project
• read:public_key
• read:repo_hook
• read:user
• repo
• user:email
• workflow
Scope Descriptions:
--------------------------------------------------
repo: Full access to repositories
user: Access to user profile information
notifications: Access to notifications
📊 Rate Limit Status:
Limit: 5000
Remaining: 4999
Reset time: 1234567890
📁 Accessible Repositories:
Found 25 accessible repositories:
• 15 private repositories
• 10 public repositories
🔒 Private Repositories (9):
📂 octocat (3 private repos):
• octocat/internal-api (admin)
• octocat/database (admin)
• octocat/external-api (admin)
📂 Space-Force-Beta (1 private repos):
• Space-Force-Beta/destrukto-beam (admin)
📂 ThriftyBank (5 private repos):
• thriftybank-kansas/web (admin)
• thriftybank-kansas/docker (admin)
• thriftybank-kansas/database-int (admin)
• thriftybank-kansas/bank-vault (admin)
• thriftybank-kansas/SAAS-PORTAL (admin)
🔓 Public Repositories (7):
📂 octocat (4 public repos):
• octocat/sdk (admin)
• octocat/helpdesk-docs (admin)
• octocat/aws-sdk-helpers (admin)
• octocat/stinkyCaptain (admin)
📂 Space-Force-Beta (1 public repos):
• Space-Force-Beta/destrukto-beam (admin)
📂 thrifybank-kansas (1 public repos):
• thrifybank-kansas/node-restify (admin)
{
"token_valid": true,
"user_info": {
"login": "octocat",
"name": "The Octocat",
"type": "User",
"id": 1
},
"scopes": ["repo", "user", "notifications"],
"rate_limit": {
"limit": 5000,
"remaining": 4999,
"reset": 1234567890
},
"repositories": {
"total": 25,
"private": [
{
"name": "mycompany/internal-api",
"owner": "mycompany",
"permissions": {
"admin": true,
"push": true,
"pull": true
},
"url": "https://github.com/mycompany/internal-api"
}
],
"public": [
{
"name": "octocat/awesome-project",
"owner": "octocat",
"permissions": {
"admin": true,
"push": true,
"pull": true
},
"url": "https://github.com/octocat/awesome-project"
}
]
},
"summary": {
"total_repos": 25,
"private_count": 15,
"public_count": 10,
"owners": ["mycompany", "octocat"]
}
}
export TOKEN="your_token_here"
gimmepatz.py "$TOKEN"
「無効なトークンまたはネットワークエラー」
「リポジトリが見つかりません」
--orgで組織リポジトリを含める必要があるか確認するレート制限に達しました
200: 成功401: 認証情報が不正(無効なトークン)403: レート制限超過または権限不足404: リソースが見つかりません(ユーザー/組織が存在しません)コントリビューションは大歓迎です!お気軽にプルリクエストをお送りください。大きな変更の場合は、まずIssueを開いて変更内容についてご相談ください。
このプロジェクトはMITライセンスの下でライセンスされています。詳細はLICENSEファイルを参照してください。
❤️ を込めて @6mile がオフェンシブセキュリティ(オフセク)の仲間のために制作
| オプション | 説明 |
|---|
--json | 結果をJSON形式で出力 |
--variables, --var | GitHubの変数とシークレットを列挙 |
--var-target | 対象スコープ:all、user、repo、org |
--var-name | 特定のリポジトリまたは組織名 |
--download | アクセス可能なすべてのリポジトリをダウンロード |
--download-path | カスタムのダウンロードディレクトリ(デフォルト:repos) |
--download-type | フィルター:all、private、public |
--org | 特定のGitHub Organizationの分析を含める |
--debug | 詳細なデバッグ出力を有効にする |
--scan | ローカルファイルをスキャンしてPATを検出 |
| スコープ | 説明 |
|---|
repo | リポジトリへのフルアクセス |
public_repo | パブリックリポジトリのみへのアクセス |
repo:status | コミットステータスへのアクセス |
repo_deployment | デプロイメントステータスへのアクセス |
user | ユーザープロフィール情報へのアクセス |
user:email | ユーザーのメールアドレスへのアクセス |
user:follow | ユーザーのフォロー/アンフォローへのアクセス |
admin:org | 組織、チーム、メンバーシップへのフルアクセス |
write:org | 組織とチームへの書き込みアクセス |
read:org | 組織とチームへの読み取りアクセス |
gist | gistへの書き込みアクセス |
notifications | 通知へのアクセス |
workflow | GitHub Actionsワークフローへのアクセス |
write:packages | GitHub Packagesへの書き込みアクセス |
read:packages | GitHub Packagesへの読み取りアクセス |
delete_repo | リポジトリへの削除アクセス |