
버그 바운티 헌터, 펜테스터 및 레드 팀을 위한 Personal Access Token (PAT) 리콘 도구

GitHub 또는 NPM 개인 액세스 토큰(PAT)을 발견한 적이 있나요? "이게 유효할까?" 또는 "나쁜 사람이 이걸로 뭘 할 수 있을까?"라고 궁금해한 적이 있나요? 그렇다면, 당신을 위한 도구가 있습니다!
gimmePatz를 소개합니다. PAT를 위한 종합 정찰 도구입니다. gimmePATz는 PAT가 유효한지, 어떤 종류의 PAT인지 알려줍니다. PAT를 생성한 사용자 계정에 대한 정보를 제공하며, 해당 사용자가 속한 조직과 팔로워 수를 포함합니다. gimmePATz는 PAT가 가진 스코프와 PAT가 접근할 수 있는 변수 또는 시크릿을 보여줍니다. gimmePATz는 PAT가 연결된 저장소(repository), NPM 패키지 또는 GitHub 조직을 나열하고, PAT가 각 리소스에 대해 정확히 어떤 권한을 가지고 있는지 알려줍니다. 이 도구는 버그 바운티 헌터, 펜테스터, 레드 팀과 같은 공격적 보안 실무자를 위해 설계되었습니다. 이 도구를 사용함으로써 귀하는 법적 맥락에서 사용하는 데 동의하는 것입니다.
gimmePATz를 파일에 지정하면 해당 파일에서 모든 PAT를 찾아 유효한지 알려줍니다. gimmePATz는 JSON 출력도 지원하므로 출력을 JSON으로 저장하거나 gimmePATz의 출력을 jq와 같은 다른 도구로 파이프할 수 있습니다. gimmePATz를 사용하는 다양한 방법의 예는 아래 "고급 사용법" 섹션에서 확인할 수 있습니다.
gimmepatz.py TOKEN
requests 라이브러리 # pip install requestsgit (저장소 다운로드용)# 시크릿 및 변수 검색
gimmepatz.py TOKEN --variables
# 조직 저장소 포함
gimmepatz.py TOKEN --org GITHUB_ORGANIZATION
# 스크립팅용 JSON 출력
gimmepatz.py TOKEN --json
# 결합: 조직 저장소 + JSON 출력
gimmepatz.py TOKEN --org GITHUB_ORGANIZATION --json
# gimmePATz의 출력을 JSON 파일로 저장
gimmepatz.py TOKEN --variables --org target-org --json > assessment.json
# 접근 가능한 모든 저장소 다운로드
gimmepatz.py TOKEN --download
# 비공개 저장소만 다운로드
gimmepatz.py TOKEN --download --download-type private
# 사용자 지정 다운로드 위치
gimmepatz.py TOKEN --download --download-path ./target-repos
# 파일에 PAT가 있는지 스캔
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
✅ 토큰이 유효합니다
👤 인증 사용자: octocat
이름: Octocat Maclean
계정 유형: User
공개 저장소: 4
비공개 저장소: 3
팔로워: 9714
팔로잉: 731
🏢 조직 멤버십 (총 2개):
👤 Space-Force-Beta (member)
이름: Space-Force-Beta
설명: Building cool stuff for space
공개 저장소: 2
비공개 저장소: 1
URL: https://github.com/Space-Force-Beta
👑 ThrifyBank (admin)
설명: The thriftiest Neo Bank in Kansas!
공개 저장소: 1
비공개 저장소: 5
URL: https://github.com/thrifybank-kansas
🔑 토큰 스코프 (총 14개):
• 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
스코프 설명:
--------------------------------------------------
repo: 저장소에 대한 전체 액세스
user: 사용자 프로필 정보에 대한 액세스
notifications: 알림에 대한 액세스
📊 Rate Limit 상태:
Limit: 5000
Remaining: 4999
Reset time: 1234567890
📁 접근 가능한 저장소:
25개의 접근 가능한 저장소를 찾았습니다:
• 비공개 저장소 15개
• 공개 저장소 10개
🔒 비공개 저장소 (9개):
📂 octocat (비공개 저장소 3개):
• octocat/internal-api (admin)
• octocat/database (admin)
• octocat/external-api (admin)
📂 Space-Force-Beta (비공개 저장소 1개):
• Space-Force-Beta/destrukto-beam (admin)
📂 ThriftyBank (비공개 저장소 5개):
• thriftybank-kansas/web (admin)
• thriftybank-kansas/docker (admin)
• thriftybank-kansas/database-int (admin)
• thriftybank-kansas/bank-vault (admin)
• thriftybank-kansas/SAAS-PORTAL (admin)
🔓 공개 저장소 (7개):
📂 octocat (공개 저장소 4개):
• octocat/sdk (admin)
• octocat/helpdesk-docs (admin)
• octocat/aws-sdk-helpers (admin)
• octocat/stinkyCaptain (admin)
📂 Space-Force-Beta (공개 저장소 1개):
• Space-Force-Beta/destrukto-beam (admin)
📂 thrifybank-kansas (공개 저장소 1개):
• 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로 조직 저장소를 포함해야 하는지 확인하세요Rate limit 초과
200: 성공401: 잘못된 자격 증명 (유효하지 않은 토큰)403: Rate limit 초과 또는 권한 부족404: 리소스를 찾을 수 없음 (사용자/조직이 존재하지 않음)기여는 환영합니다! Pull Request를 자유롭게 제출해 주세요. 주요 변경 사항의 경우, 변경하고자 하는 내용을 논의하기 위해 먼저 이슈를 열어 주세요.
이 프로젝트는 MIT License에 따라 라이선스가 부여됩니다. 자세한 내용은 LICENSE 파일을 참조하세요.
--download로 발견된 저장소 다운로드 기능 추가@6mile이 저의 offsec 동료들을 위해 ❤️로 만들었습니다
| 옵션 | 설명 |
|---|
--json | 결과를 JSON 형식으로 출력 |
--variables, --var | GitHub 변수 및 시크릿 열거 |
--var-target | 대상 범위: all, user, repo, org |
--var-name | 특정 저장소 또는 조직 이름 |
--download | 접근 가능한 모든 저장소 다운로드 |
--download-path | 사용자 지정 다운로드 디렉터리 (기본값: repos) |
--download-type | 필터: all, private, public |
--org | 특정 GitHub 조직 분석 포함 |
--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 패키지에 대한 쓰기 액세스 |
read:packages | GitHub 패키지에 대한 읽기 액세스 |
delete_repo | 저장소 삭제 액세스 |